socat 将 tcp6 流量路由到 tcp4

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 流量的更多信息,但没有将重要日志写入日志文件。-lfsocat

在尝试 tcp6 格式之前,我能够使用 .tcp4 流量将 tcp4 流量路由到上面列出的 tcp4 相同目的地socat。命令如下,

# socat TCP-LISTEN:5555,fork TCP:10.101.74.206:5555

有人可以指出我对 tcp6 缺少什么吗?

操作系统:CentOS 7.5

答案1

$ ncat -4 -vv --exec cat -l -p 5555

nmap需要ncat其参数的完整路径--exec。使用/bin/cat而不是cat.

我尝试在 socat 命令中使用 -vv 和 -lf 来获取有关 tcp6 流量的更多信息,但没有将重要日志写入日志文件。

要获得详细socat输出,请指定-d几次开关。

除了上述问题之外,我成功地重现了您的设置,并且它似乎按您的预期工作。检查调试输出以缩小问题范围。

答案2

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

附加信息:

相关内容