将流量从主机转发到主机的容器

将流量从主机转发到主机的容器

我在网络中有两台主机192.168.0.0/24

  • 主机 A192.168.0.15
  • 主机B192.168.0.13

并且有一个从B到 的远程 ssh 隧道A

ssh -R 192.168.0.13:8080:192.168.0.15:8002 192.168.0.13 -N

并且隧道畅通无阻。

主机A运行一个在端口 80 上运行 nginx 的容器nginx。我想将流量转发192.168.0.15:8002到该 nginx 服务器。该怎么做?

所以,

如果有人发送一个GET requestcurl 192.168.0.13:8080他将从容器中运行的 nginx 获得响应192.168.0.15。流程应该是:

192.168.0.14 (for example) ---GET--> 192.168.0.13:8080
192.168.0.13 --(SSH TUNNEL)--> 192.168.0.15:8002 
192.168.0.15:8002 -----------> 172.17.0.2:80 (nginx container)
172.17.0.2      ------------> 192.168.0.15
192.168.0.15    ------------> 192.168.0.13
192.168.0.13    ------------> 192.168.0.14

PS:我必须使用 iptables-我无法更改现有的隧道。

答案1

您可以使用 REDIRECT 扩展实现这一点。

您可以在主机 A 上使用以下命令将所有 TCP 连接的目标从端口 8002 更改为端口 80:

iptables -t nat -I PREROUTING -p tcp --dport 8002 -j REDIRECT --to-port 80

如果您希望重定向也适用于来自本地主机的连接,请添加

iptables -t nat -I OUTPUT -p tcp --dport 8002 -j REDIRECT --to-port 80

相关内容