Linux
將流量從主機轉發到主機的容器
我在網路中有兩台主機
192.168.0.0/24
:
- 主機 A
192.168.0.15
- 主機 B
192.168.0.13
並且有一個遠端 ssh 隧道從
B
到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 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