Linux

將流量從主機轉發到主機的容器

  • October 14, 2018

我在網路中有兩台主機192.168.0.0/24

  • 主機 A192.168.0.15
  • 主機 B192.168.0.13

並且有一個遠端 ssh 隧道從BA

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 request,他會從容器中curl 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 - 我無法更改現有隧道。

您可以使用 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

引用自:https://serverfault.com/questions/935435