Iptables
LXC:將容器的本地主機流量轉發到主機的本地主機
我在主機上執行服務 A 並綁定到埠 127.0.0.1:7800。
我有服務 B 在我的 LXC 容器中執行,它想通過 127.0.0.1:7800 連接到服務 A,但目前不能。
如何設置容器或 iptables 來轉發流量?
在容器方面,您應該添加以下規則:
iptables -t nat -A OUTPUT \ -d 127.0.0.1 \ -p tcp --dport 7800 \ -j DNAT --to-address <HOST.EXT.IP> iptables -t nat -A POSTROUTING \ -o <LXC.HOST.IFACE> \ -d <HOST.EXT.IP> -s 127.0.0.1 \ -p tcp --dport 7800 \ -j MASQUERADE
它還需要啟用
net.ipv4.conf.all.route_localnet
sysctl 選項。因為在主機應用程序上只監聽
127.0.0.1
地址,這意味著它預設不能接受外部連接。但是您可以使用DNAT/REDIRECT
目標作為解決方法。iptables -t nat -A PREROUTING \ -i <HOST.LXC.IFACE> \ -d <HOST.LXC.IP> -s <LXC.IP> \ -p tcp --dport 7800 \ -j DNAT --to-address 127.0.0.1:7800
它還需要啟用
route_localnet
選項。使用
iptables-save -c
(檢查規則計數器)和tcpdump
進行故障排除。