Routing

通過 Linux 路由

  • August 2, 2012

我有一個單獨的網路,其中一台機器的 IP 地址為 10.10.10.4。另一台機器(網關機器)有兩個網卡:eth0 和 eth1。 eth1(10.10.10.10)連接內網機器,與外界無直接連接。 eth0 (192.168.1.171) 連接到外部物理適配器。

現在,我想與 IP 地址為 192.168.1.185 的外部網路機器進行通信。我已將內部網路機器中的預設網關添加為:

$路由添加預設gw 10.10.10.10

(外網預設網關為192.168.1.1)。我還在網關機器中添加了預設網關:

$ route add default gw 1​​92.168.1.171 將流量導向外部世界。

對於傳入流量,我還使用 route 命令包含了網路:

$ route add -net 10.10.10.0 網路遮罩 255.255.255.0 gw 1​​0.10.10.10

網關機器也可以使用 iperf 等直接與外部機器(192.168.1.185)通信。

現在我面臨的問題是當我通過內部網路機器(10.10.10.4)ping外部機器(192.168.1.185)時;我可以使用wireshark在網關機器的eth1介面上看到發往外部機器的數據包。內部網路機器(10.10.10.4)也可以成功ping通10.10.10.10和192.168.1.171(eth0 IP)。

**但是數據包無法到達 eth0 介面。**因此內部網路機器無法與外部網路通信。我使用wireshark驗證了這一點,數據包正在被配置為內部機器(10.10.10.4)的預設網關的eth1介面上接收。由於我還在網關機器中添加了預設路由,因此我希望數據包通過 eth0 到達外部網路,但這不會發生並且數據包不會到達 eth0 介面。任何人都可以在這方面幫助我並指出我是否遺漏了什麼?非常感謝所有幫助。

謝謝。

你允許ip轉發嗎?

echo 1 > /proc/sys/net/ipv4/ip_forward

順便說一句 - 嘗試ip 命令而不是路由。

引用自:https://serverfault.com/questions/413568