我用来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 格式之前,我能够使用 .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
附加信息: