Linux

如何配置從兩個子網到防火牆的靜態路由

  • March 15, 2022

好吧,一張圖片千言萬語。3 個私有子網:

                                                 +-----+    +-----+
                                                 | PC2 |    | PC3 |
                                      Linux      | .2  |    | .3  |
 __                                +----------+  +-----+    +-----+
i  \                               |        .1|     |          |
n   )     +-----+                  |    ------|-----+----------+-----
t  (      |     |  192.168.0.0/24  |.1/     / |eth1  192.168.1.0/24
e   > ----|FW .2|------------------| < LR  X  |
r  (      |     |              eth0|  \     \ |eth2  192.168.2.0/24
n   )     +-----+                  |    ------|-----+----------+-----
e__/                               |        .1|     |          |
                                   +----------+  +-----+    +-----+
                                      Router     | .4  |    | .5  |
                                                 | PC4 |    | PC5 |
                                                 +-----+    +-----+

Linux路由器:

ifcace eth0 inet static
   address 192.168.0.1/24
   gateway 192.168.0.2
   dns-nameservers 8.8.8.8

ifcace eth1 inet static
   address 192.168.1.1/24

ifcace eth2 inet static
   address 192.168.2.1/24

PCx (..1.x):

ifcace eth0 inet static
   address 192.168.1.x/24
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

PCx (..2.x):

ifcace eth0 inet static
   address 192.168.2.x/24
   gateway 192.168.2.1
   dns-nameservers 8.8.8.8

LR

# echo "1" > /proc/sys/net/ipv4/ip_forward
# ip route list
default via 192.168.0.2 dev eth0 onlink 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.1 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.1 
192.168.2.0/24 dev eth2  proto kernel  scope link  src 192.168.2.1 

Linux 路由器可以輕鬆 ping 到 FW 並與公共 Internet 通信。LR 也可以 ping 所有的 PC。PCx 可以 ping 到192.168.0.1地址但不能 ping 到 FW 192.168.0.2(主機不可達)

它不打算在 和 之間進行路由192.168.1.0/24192.168.2.0/24但非常希望通過 FW 到達公共 Internet。我知道,可以用 iptables NAT 做一些事情,這意味著配置兩個防火牆串聯,但這不是我們需要的。首選簡單的靜態路由。

我用Google搜尋了一個註釋,設置“ip規則”可能會有所幫助,但不明白如何。

拜託,你能告訴我,什麼該死的配置可以設置預期的路由?

ip route可能是強大的工具,但是一些帶有範例的清晰教程應該非常有用。

網路地址轉換 (NAT) 並不特別關心本地 LAN IP 是什麼。它只知道從外部介面轉發到 Internet 的任何流量都必須在 IP 數據包中攜帶一個“發件人”地址,該地址與FW外部介面上的公共 IP 相匹配。因此,您的圖表沒有理由不適用於傳出流量。

但是當流量返回時,再次攜帶FW外部介面的“To”IP地址,NAT會盡職盡責地將“To”地址轉換為匹配NAT表中記錄的原始192.168.X.0/24地址。這就是問題開始的地方。如果原始地址是 192.168.0.x/24,沒問題,因為FW在那個網路上有一個介面,因此知道如何直接到達那些主機。

但如果原始 IP 是 192.168.1.x 或 192.168.2.x,那麼FW不知道這些 IP 在哪裡。它在這兩個網路上都沒有介面,因此無法直接訪問它們;並且FW不知道(除非您告訴它)這些 IP 應該被路由回LR,以便LR可以轉發它們。

該問題的解決方案是在FW上設置靜態路由,告訴它將網路 192.168.1.0/24 和 192.168.2.0/24 的流量路由到哪裡,即將兩個網路路由到 192.168.0.1。

鑑於您的評論說您可以在FW上使用 NAT 功能,但不能更改其路由表,最簡單的配置是將LR從充當路由器的功能更改為充當網橋。回想一下,網橋連接同一網路廣播域上的多個主機(通過適配每個橋接介面上的 MAC 地址),這與網路交換機的做法非常相似。

如果將路由器LR重新配置為橋接LB(橋接eth0、eth1和eth2),全程使用192.168.0.x/24個IP,並將192.168.0.2設置為所有主機的預設網關,那麼FW不會只轉發NAT 流量輸出,但當流量返回時,它將能夠毫無問題地將其傳送回 192.168.0.X 網路。

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