![将流量转发到 Docker 问题](https://linux22.com/image/132478/%E5%B0%86%E6%B5%81%E9%87%8F%E8%BD%AC%E5%8F%91%E5%88%B0%20Docker%20%E9%97%AE%E9%A2%98.png)
我有一些基本的概念问题,因此我无法在包含网络的 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 绑定应该自动路由流量。