我有一個 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
完畢。