1. 程式人生 > >route命令實戰使用指南

route命令實戰使用指南

解答實踐:

 

[[email protected] ~]# route -n #==>檢視路由表,netstat -rn也可以。

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

 

#==>

這裡就是系統的預設閘道器資訊,表示去任何地方(0.0.0.0),都發給10.0.0.254,因為是預設閘道器,所以,放在了最後一條。路由也是有順序的,如果不符合任何一條規則就交給預設閘道器處理。

 

[[email protected] ~]# route del default gw 10.0.0.254 #==>這個命令是刪除預設的閘道器。

 

[[email protected] ~]# route -n

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

 

[[email protected] ~]# route add default gw 10.0.0.254    #==>這個命令是新增預設的閘道器,也是本題的答案。

 

[[email protected] ~]# netstat -rn

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0 #==>又回來了

 

[[email protected] ~]# route -n

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0 #這裡就是新增的預設閘道器記錄。

 

特別強調:實際上route add default gw 10.0.0.254 就相當於route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254

 

b.網路路由:即去往某一網路或網段的路由

 

    一般多網段之間互相通訊,希望建立一條優先路由,而不是通過預設閘道器時就可以配置網路路由。還是拿房子比喻,你現在不是要出門,而是臥室,衛生間,去臥室就要經過臥室的門,去衛生間也要經過衛生間的門,這裡的臥室和衛生間的門就可以認為是去往某一網段的路由,而不是預設路由(即房子的門。)

 

    實際工作中會有需求,兩個不同的內部網路之間互訪,而不是出網訪問,就是上面例子的情況。

 

    本題的答案:

 

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

解答實踐:

 

[[email protected] ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

SIOCADDRT: 網路不可達 #==>當連不通地址192.168.1.1時,無法新增路由。

 

[[email protected] ~]# ifconfig eth0:0 192.168.1.1/24 up #==>新增一個IP別名用於臨時測試,如果永久生效最好加雙網絡卡或寫入到配置檔案。

 

[[email protected] ~]# ifconfig eth0:0 #==>檢視新增的IP別名(網路裡把這種多IP的方式稱為子介面)

 

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:65:A4:FD 

 

          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0

 

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

再來新增去192.168.1.0的資料包,交給192.168.1.1處理。

 

[[email protected] ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

[[email protected] ~]# netstat -rn   #==>route -n很像。

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0

 

192.168.1.0     192.168.1.1     255.255.255.0   UG        0 0          0 eth0 #==>這就是網路路由

 

192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG        0 0          0 eth0

 

拓展:其他寫法

 

[[email protected] ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0  #==>指定裝置而不是地址。

 

[[email protected] ~]# route -n

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

192.168.1.0     192.168.1.1     255.255.255.0   UG    0      0        0 eth0

 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

 

[[email protected] ~]# route del -net 192.168.1.0/24 dev eth0   

 

[[email protected] ~]# route add -net 192.168.1.0/24 dev eth0   

 

[[email protected] ~]# route -n

 

Kernel IP routing table

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

 

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

 

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

 

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

 

總結:

 

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

 

route add -net 192.168.1.0/24 dev eth0 

 

route del -net 192.168.1.0/24 dev eth0  

 

特別強調:以上配置在重啟網路時都會失效,那麼如何讓它永久生效呢?

 

如果要是永久生效,有如下幾種方法:

方法一:

 

vi /etc/sysconfig/network-scripts/route-eth0  #預設不存在此檔案

 

加入如下內容:

 

192.168.1.0/24 via 192.168.1.1

 

提示:寫到配置裡,重啟網路服務和重啟系統都會生效!

 

 

 

 

方法二:

 

vi /etc/sysconfig/static-routes  #預設不存在此檔案

 

加入如下內容:

 

any net 192.168.1.0/24 gw 192.168.1.1

 

提示:寫到配置裡,重啟網路服務和重啟系統都會生效!

 

 

 

 

方法三:

 

vi /etc/rc.local

 

加入如下內容:

 

route add -net 192.168.1.0/24 gw 192.168.1.1

 

PS: 方法一推薦生產環境使用

 

提示:方法三寫到/etc/rc.local裡只在開機時載入,當手工重啟網路後會失效,但是重啟系統後會生效!

 

 

如果是配置預設路由閘道器可以再網絡卡配置裡:

[[email protected] ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0

GATEWAY=10.0.0.254

 

c.主機路由:就是去往某個主機地址如何配置路由

 

/sbin/route add -host 192.168.2.13 dev eth2

 

/sbin/route add -host 202.81.11.91 dev lo

 

例如:keepalived或heartbeat高可用伺服器對之間的使用單獨網絡卡接心跳線通訊就會用到以上主機路由。

route命令拓展:

 

刪除一條預設路由:

 

route del default gw 10.0.0.254

 

刪除一條靜態路由:

 

route del –net 目標網路 netmask

 

如:route del -net 192.168.1.0/24 或route del -net 192.168.1.0 netmask 255.225.255.0

 

刪除一條主機路由:

 

route del -host 192.168.1.10 dev eth0