Linux

socat 將 tcp6 流量路由到 tcp4

  • July 27, 2018

我正在使用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

附加資訊:

引用自:https://unix.stackexchange.com/questions/458511