Linux
socat 將 tcp6 流量路由到 tcp4
我正在使用
socat
將傳入的 tcp6 路由到 tcp4。目標 (tcp4) 是具有 pod 服務 external-ip 的 pod/容器。在我ncat
用來監聽埠 5555 的容器中。# socat TCP6-LISTEN:5555,reuseaddr,fork,bind=[fe80::250:56ff:fe91:bd5c%ens192] TCP4:10.40.5.125:5555 (Update)
socat 返回連接被拒絕(更新)
2018/07/27 01:15:41 socat[26914] E connect(5, AF=2 10.40.5.125:5555, 16): Connection refused
我沒有得到容器內的確認 (
# ncat -4 -vv --exec cat -l -p 5555
)我嘗試在命令中使用
-vv
&來獲取有關 tcp6 流量的更多資訊,但沒有將重要的日誌寫入日誌文件。-lf``socat
在嘗試 tcp6 格式之前,我能夠使用
socat
. 命令如下,# socat TCP-LISTEN:5555,fork TCP:10.101.74.206:5555
有人可以指出我在 tcp6 中缺少什麼嗎?
作業系統:CentOS 7.5
$ ncat -4 -vv --exec cat -l -p 5555
nmap
的參數ncat
需要完整路徑--exec
。使用/bin/cat
而不是cat
.我嘗試在 socat 命令中使用 -vv & -lf 來獲取有關 tcp6 流量的更多資訊,但沒有將重要的日誌寫入日誌文件。
要獲得詳細
socat
輸出,請指定-d
開關幾次。除了上述問題之外,我還成功地重現了您的設置,並且它似乎按您的預期工作。檢查調試輸出以縮小問題範圍。
socat
拒絕連接 IPv4 主機的原因有很多。只是為了節省您的時間,我對您的建議是使用stone
中繼器而不是socat
. 安裝它(我希望這個包已經包含在 CentOS 中):yum install stone
使用調試級別 5(詳細模式)執行它:
stone -ddddd 110.101.74.206:5555 5555/v6
使用測試您的連接
telnet
,如果一切正常,請刪除-ddddd
選項並stone
在生產模式下以您想要的方式執行。例如,stone
作為守護程序執行,產生 20 個子程序:stone -D -f 20 110.101.74.206:5555 5555/v6
之後檢查正在執行的
stone
程序:ps aux | grep stone
附加資訊: