Networking

幫助 - 使用兩個介面設置 Linux FW 的問題

  • October 26, 2019

首先,對不起我的英語 lul

我有一個在docker下執行的非常簡單的基礎設施:

container1:iptables防火牆;

container2:https儲存庫;

container3: 可靠的伺服器。

container1有兩個介面,因此它可以通過eth0通過 WAN 出去**,並通過eth1** (LAN)與容器 2 和 3 通信

我面臨的問題是使 LAN 能夠訪問網際網路(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 之間)?

如果需要,可以發送容器路由表,也許缺少一些東西。

希望有朋友能幫幫我”)

親切的問候。

假設 LAN 子網是10.20.20.0/24(docker IP 範圍)並且到網際網路(WAN)的介面是eth0

在 docker bridge 所在的主機上執行以下命令(在這種情況下,您的主機將充當防火牆)

# 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

引用自:https://unix.stackexchange.com/questions/547663