Networking

為什麼在此處添加路線會引發錯誤?

  • January 6, 2015

我有一台 linux Fedora -16 機器,它有兩個介面——

em1       Link encap:Ethernet  HWaddr B8:CA:3A:89:EE:F1  
         inet addr:136.170.195.17  Bcast:136.170.195.255  Mask:255.255.252.0
         inet6 addr: fec0::f:baca:3aff:fe89:eef1/64 Scope:Site
         inet6 addr: 2002:88aa:c268:f:baca:3aff:fe89:eef1/64 Scope:Global
         inet6 addr: fe80::baca:3aff:fe89:eef1/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:6363373 errors:0 dropped:2 overruns:0 frame:0
         TX packets:1571017 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:4502189587 (4.1 GiB)  TX bytes:175801460 (167.6 MiB)
         Interrupt:20 Memory:f7f00000-f7f20000 

lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:765 errors:0 dropped:0 overruns:0 frame:0
         TX packets:765 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:85089 (83.0 KiB)  TX bytes:85089 (83.0 KiB)

p3p1      Link encap:Ethernet  HWaddr 14:D6:4D:1F:F3:F8  
         inet addr:10.240.100.110  Bcast:10.240.100.255  Mask:255.255.255.0
         inet6 addr: fe80::16d6:4dff:fe1f:f3f8/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2615351 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2868133 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:1081785835 (1.0 GiB)  TX bytes:1577912608 (1.4 GiB)

在介面 p3p1 上,我正在執行一個 dhcp 伺服器。我在 NFS 上執行的嵌入式設備從 p3p1 獲取 IP 地址。p3p1 介面連接到我的嵌入式設備 - 點對點。

現在,從嵌入式框(基於 linux 的系統)中,我想 ping/訪問地址 - 136.170.195.17。

我不能執行以下操作,因為 gw 不知道如何為 136.170.0.0 子網路由數據包。所以,我得到一個錯誤 -

# ping 136.170.195.17
PING 136.170.195.17 (136.170.195.17): 56 data bytes
ping: sendto: Network is unreachable

由於通信是在不同的網路上,我需要在設備中添加路由。所以,我所做的是在我的 linux 機器中啟用數據包轉發。接下來,我添加了這樣的路線。

# /sbin/route add net 136.170.192.0 netmask 255.255.252.0 gw 10.240.100.110
route: resolving net

我收到上述錯誤。我認為我對網路的理解並不正確。我收到以下錯誤的原因是什麼?實際上,我對上述錯誤感到困惑。在我看來,我的概念沒有任何問題,比如啟用數據包轉發並為發往不同子網的數據包添加路由。因為對於同一個子網,路由不會出現 - 它只是基於 ARP。我該如何解決這個問題?我的理解有問題嗎?

這是盒子路由表 -

# netstat -anr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.240.100.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

這是我的 PC 路由表 -

$ netstat -arn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         136.170.192.2   0.0.0.0         UG        0 0          0 em1
10.240.100.0    0.0.0.0         255.255.255.0   U         0 0          0 p3p1
136.170.192.0   0.0.0.0         255.255.252.0   U         0 0          0 em1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 p3p1

/sbin/route 添加網路 136.170.192.0 網路遮罩 255.255.252.0 gw 1​​0.240.100.110

試試route add -net ...。我懷疑當您的嵌入式設備嘗試將名稱解析為net地址或網路範圍時會出現錯誤消息。

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