首先,对我的英语水平感到抱歉
我有一个非常简单的基础设施运行泊坞窗:
container1
:iptables防火墙;
container2
:https 存储库;
container3
:ansible服务器。
容器1有两个接口,因此可以通过 WAN 出去以太网0并通过以下方式与容器 2 和 3 通信以太网1(局域网)。
问题我面临的是让局域网能够访问互联网(ping -c3 google.com)。
container1
- 我已经设置了 ipv4_forwarding 并将 WAN 的 GW 设置为我的默认路由(它与其他两个容器通信并到达互联网)。
container2
; container3
- 他们在 LAN 上正常通信,但无法 ping 通 FW 的 IP 地址,因此无法到达 WAN...我已经设置了一条静态路由来传播 FW 的 WAN 子网,现在他们可以 ping 通200.200.100.1(docker的桥接接口用作FW子网GW,FW IP:200.200.200.2)。
我是否缺少任何 iptables conf(尚未执行任何操作),或者我是否需要配置从 docker 发出的路由(在主机上的接口 docker0-docker1 之间)?
如果需要的话可以发送容器路由表,也许缺少一些东西。
希望有朋友能帮帮我”)
亲切的问候。
答案1
假设 LAN 子网是10.20.20.0/24(docker IP范围)和互联网接口(WAN)是以太网0
在dockerbridge所在的主机上执行以下命令(在这种情况下你的主机将充当防火墙)
# apt install iptables-persistent -y
# iptables -t nat -A POSTROUTING ! -d 10.20.20.0/24 -o eth0 -j MASQUERADE
# iptables -I FORWARD -j ACCEPT
# netfilter-persistent save
# netfilter-persistent reload