如何配置 IP 轉發
我有一個
DEV1
應該與設備通信的設備DEV3
,但是在中間有DEV2
。我的理解是我需要在 和 上使用 IP 轉發並
DEV2
編輯路由表。DEV1``DEV3
因為
DEV2
我啟用了 IP 轉發:-> sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
我無法設置其餘的東西。請你幫助我好嗎?
鑑於這兩個路由器允許所有連接從任一側通過,最簡單的事情就是向 DEV2 的兩個介面添加新的 IP 地址。我們這樣做是為了讓 DEV2 可以輕鬆地區分用於它的數據包和打算通過的數據包:
ip addr add 192.168.2.3/24 dev INTERFACE2 ip addr add 10.12.0.218/24 dev INTERFACE3
(用真實的介面名稱替換 INTERFACE2/3,並確保不佔用這些地址,例如,只需ping -c 192.168.2.3並查看是否收到任何回复。另外,我猜這兩個遮罩是 / 24,如果不是請相應調整)。現在 192.168.2.3 和 10.12.0.218 的任何內容都適用於 DEV1/3,而 192.168.2.1-10.12.0.217 的任何內容都適用於 DEV2。
現在我們轉發任何到達兩個新地址的東西:
iptables -A FORWARD -j ACCEPT iptables -A PREROUTING -t nat -d 192.168.2.3 -j DNAT --to 10.10.3.154 iptables -A PREROUTING -t nat -d 10.12.0.218 -j DNAT --to 192.168.2.2 iptables -t nat -A POSTROUTING -j MASQUERADE
第一條規則允許數據包從一個介面遷移到另一個介面(規則net.ipv4.ip_forward = 1是必要的,但還不夠),最後一條規則重寫所有數據包標頭,就像來自傳出介面一樣,以便再次路由回复通過 DEV2;中間的兩條規則重寫數據包標頭,以便數據包從 DEV1 發送到 DEV3(規則 n.2)和從 DEV3 發送到 DEV1(規則 n.3)。
這種設置的優點是它很乾淨:所有協議和所有埠都是同時路由的,無需增加不必要的複雜性。
CAVEAT:DEV1 上的 interface1 和 DEV2 上的 interface2 屬於同一個子網,這很奇怪,因為您說兩者被路由器隔開:根據定義,路由器連接兩個不同的子網。因此,要麼 router1不是路由器,要麼如果是,則其配置中存在錯誤,因為它被兩側相同的網路包圍。我假設前者,而不是後者。