将流量转发到 Docker 问题

将流量转发到 Docker 问题

我有一些基本的概念问题,因此我无法在包含网络的 Docker 容器上转发流量。

Docker 容器正在侦听 2123/udp

方法0 公布所有说法似乎行不通。在此命令之前和之后 iptables 中没有映射/更改。

 docker run -d -P image

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

方法一 我想将流量从任何接口/ip/端口发送到 docker 容器。我发现我的大部分流量都在 eno1、ip = xxxx 和端口 22 上。我尝试使用将此端口 22 绑定到 docker

docker run -d -p 22:2123 image
As the port is active so it could not bind with port 22

方法2 我随机选择了一个80端口并尝试发布它

docker run -d -p x.x.x.x:80:2123

我没有打印任何错误。但是,当我向此 IP 和端口发送数据包时,连接被拒绝。

Packets sent as follows.
dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/x.x.x.x/80

因此,我添加了一个端口转发规则,将端口 22 上收到的所有流量转发到 xxxx:80。

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination x.x.x.x:80

仍然连接被拒绝。即使连接被拒绝,我也看到了两笔交易

 tcpdump -i any port 2123
 IP <dockerNWip>.37042 > <host>.2123: Flags [S], seq 1289990254, win 29200, options [mss 1460,sackOK,TS val 437161 ecr 0,nop,wscale 7], length 0
 IP <dockerNWip>.37042 > <host>.2123: Flags [S], seq 1289990254, win 29200, options [mss 1460,sackOK,TS val 437161 ecr 0,nop,wscale 7], length 0
 IP  <host>.2123 > <dockerNWip>.37042: Flags [R.], seq 0, ack 1289990255, win 0, length 0
 IP <host>.2123 > <dockerNWip>.37042: Flags [R.], seq 0, ack 1, win 0, length 0

我不确定问题出在哪里。我的问题

 1) Do i need to bind x.x.x.x and port 80? I thought the rule would do that.
 2) Do i need anything else besides the publishing the ports?
 3) Is my way to tcpdumping the port correct to monitor the traffic?

我的策略/假设是将主机端口 80 与容器端口 2123 绑定应该自动路由流量。

相关内容