Linux 作為三個網路(一個是 Internet)之間的路由器

Linux 作為三個網路(一個是 Internet)之間的路由器

我有一個 Linux 盒子,在兩個網路 XX3.0 和 XX4.0 之間路由,我希望它能夠將這些網路連接到網路。

我讀過了這裡@Kevin 的精彩回答是,為了能夠做到這一點,我必須使用 NAT,這意味著 iptables,我的伺服器現在不使用 iptables,所以我需要找到正確的命令來啟用它。

我的網路可以這樣描述: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 eth2直接連接到路由器。

兩個本地網路可以相互通信,但沒有人可以 ping 通公共 IP 位址。當我向 .3.x 網路中的一台機器上的公共 IP 位址發出 ping 命令時,我嘗試嗅探路由器中的封包,但據我所知存在問題,而且似乎eth0 int 會不斷發出關於誰擁有3.x IP 位址的ARP 請求。看來我也必須在路由器上啟用才能像 NAT 一樣運作。我進行了搜索,但無法找出需要使用 iptables 發出的正確命令,儘管我確實嘗試了提到的命令這裡這裡。我必須能夠在兩個本地網路之間進行路由而不使用 iptables,並且由於我不需要它,所以我寧願不使用它,除非沒有它就不可能進行 NAT(在這種情況下我更喜歡 iptable)任何其他程序)。

總結一下問題: 1.我需要能夠讓所有三個網路能夠相互溝通。 2. 我不喜歡使用 iptables(如果可能的話)或任何其他新增的程式。 3.僅此而已。

謝謝。

答案1

兩個本地網路可以相互通訊表示您已啟用 ip_forward。如果本機網路無法 ping 通公用 IP 位址,則表示您需要進行偽裝。

你能從這個 Linux 機器上 ping 通公用 IP 位址嗎?如果沒有,那麼一定還有其他問題。也許,您需要將路由器設定為橋接模式(這只是一個猜測)。

我假設你的linux機器可以ping通公共IP並且在eth0上配置了公用IP。所以你的內部網路機器不能用私有IP位址到外面的網路上,所以你要做natting。嘗試使用 iptables,因為它非常簡單。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

如果您的系統上沒有安裝 iptables。預設情況下必須安裝一些防火牆。您正在使用哪個發行版?

答案2

私人 IP 位址對於 Internet 使用無效,且無法路由。它們只能在本地使用。

要啟用 Internet 訪問,您需要啟用 IP 轉發,從您的描述來看這似乎是完成的。其次,您需要使用 NATing。大多數時候,您的 ISP 會為您進行 NAT。這可以根據連線類型和指派的 IP 進行變更。

對於工具來說,我認為在 Linux 下沒有比 iptables 更好的工具了。

答案3

經過一些研究和大家的推薦後,我得出的結論是 iptable 是進行 NAT(偽裝)的最佳方式,所以我這樣做了:

#使用以下命令刷新所有目前 iptables 設定:

$>iptables -F$>iptables -t nat -F

然後嘗試在本地網路之間進行 ping 操作,它應該使用 iptables 的預設設置,以防萬一它不輸入以下內容:

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

然後從 @Sachin Divekar 發出上面的命令(將 ethX 替換為您的網際網路連線介面):

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

測試一下,應該可以用。然後你應該保存此設定:

$>iptables-save > /etc/sysconfig/iptables

完畢。

相關內容