LXC:将容器的本地主机流量转发到主机的本地主机

LXC:将容器的本地主机流量转发到主机的本地主机

我在主机上运行服务 A,并绑定到端口 127.0.0.1:7800。

我的 LXC 容器内运行着服务 B,它想要通过 127.0.0.1:7800 连接到服务 A,但目前无法连接。

如何设置容器或 iptables 来转发流量?

答案1

在容器端,您应该添加以下规则:

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_localnetsysctl 选项。

因为主机应用程序只监听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进行故障排除。

相关内容