Linux

簡單的路由在 debian jessie 下不起作用

  • May 20, 2016

我正在嘗試使用 3 個虛擬 debian jessie 機器設置簡單的 enogh 系統:第一個連接到第二個,第二個連接到第三個。我希望第一個能夠 ping 第三個。

為此,我設置了靜態 IP 地址(通過 /etc/network/interfaces),如下所示:

#FIRST:
eth0 inet static address 172.28.11.2 netmask 255.255.255.0
#SECOND: 
eth0 inet static address 172.28.11.1 netmask 255.255.255.0
eth1 inet static address 172.28.18.2 netmask 255.255.255.0
#THIRD:
eth0 inet static address 172.28.18.1 netmask 255.255.255.0

我還在所有這些機器中啟用了 ipv4_forward 選項:

net.ipv4.ip_forward=1 # /etc/sysctl.conf, all machines

並檢查它是否有效(通過呼叫 cat /proc/…../ip_forward 並確保有1輸出)

首先可以ping第二個(檢查,工作)。第二個可以ping第三個(檢查,工作)。

現在我正在嘗試設置簡單的路由表:我在第一個節點上添加此路由:

route add -net 172.28.18.0 netmask 255.255.255.0 dev eth0 gw 172.28.11.1

之後我可以 ping 172.28.11.2(其他網路遮罩中的第二個節點),但仍然無法到達 172.28.11.1(第三個節點)。

如果我執行 traceroute,我會看到路由中有一個172.28.11.1點(因此它嘗試連接那裡)但沒有運氣。

我錯過了什麼?

PS 我的配置:windows 10 作為主機,vmware player 作為虛擬化,debian 8 作為所有來賓

由於您沒有提到您在第三個系統上添加了一條路由,我猜問題是第三個系統不知道如何將返回數據包路由到 172.28.11.0/24。所以你需要在那裡添加一條路線。

請注意,該route命令在 linux 中已被棄用很長時間了。你應該熟悉這個ip命令,它非常強大,你可以用它做各種有趣的路由技巧。

因此,您可以在第三個系統上添加所需的路由:

ip route add 172.28.11.0/24 via 172.28.18.2

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