(轉)linux route命令深刻淺出與實戰案例精講

linux route命令深刻淺出與實戰案例精講

http://blog.51cto.com/oldboy/1119453linux

深刻淺出之-route命令實戰使用指南

http://blog.51cto.com/oldboy/974194面試

本博文的視頻講解已發佈:http://oldboy.blog.51cto.com/2561410/1119453


緣起:本文爲老男孩linux培訓第七次課前考試題及參考答案,有朋友在看完http://oldboy.blog.51cto.com/2561410/784625內容後,但願補充此內容,所以,發佈以下,但願你們喜歡。完整試題及答案以下:


服務器

考試題一:linux下如何添加路由(百度面試題)網絡

 

以上是原題,老男孩老師翻譯成以下3道題。運維

 

a.如何用命令行方式給linux機器添加一個默認網關,假設網關地址爲10.0.0.254?linux運維

b. 192.168.1.0網段, 192.168.1.1網關的某一服務器想連入172.16.1.0/24段,該如何添加路由(奇虎360)測試

c.若是添加一個主機路由?命令行

請分別解答。翻譯

解答:route -net 172.16.1.0/24 gw 192.168.1.1視頻

route 命令使用方法:

 

a.缺省網關路由

 

    默認網關就是數據包不匹配任何設定的路由規則,最後流經的地址關口!網關按字面意思就是網絡的關口,就至關於咱們家裏房子的門同樣,若是外出就要通過房門,數據包也是同樣。

 

本題的答案:

 

route del default gw 10.0.0.254

 

解答實踐:

 

[root@oldboy ~]# 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,由於是默認網關,因此,放在了最後一條。路由也是有順序的,若是不符合任何一條規則就交給默認網關處理。

 

[root@oldboy ~]# route del default gw 10.0.0.254 #==>這個命令是刪除默認的網關。

 

[root@oldboy ~]# 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

 

[root@oldboy ~]# route add default gw 10.0.0.254    #==>這個命令是添加默認的網關,也是本題的答案。

 

[root@oldboy ~]# 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 #==>又回來了

 

[root@oldboy ~]# 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

 

解答實踐:

 

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

SIOCADDRT: 網絡不可達 #==>當連不通地址192.168.1.1時,沒法添加路由。

 

[root@oldboy ~]# ifconfig eth0:0 192.168.1.1/24 up #==>添加一個IP別名用於臨時測試,若是永久生效最好加雙網卡或寫入到配置文件。

 

[root@oldboy ~]# 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處理。

 

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

 

[root@oldboy ~]# 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

 

拓展:其餘寫法

 

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0  #==>指定設備而不是地址。

 

[root@oldboy ~]# 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

 

[root@oldboy ~]# route del -net 192.168.1.0/24 dev eth0   

 

[root@oldboy ~]# route add -net 192.168.1.0/24 dev eth0   

 

[root@oldboy ~]# 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裏只在開機時加載,當手工重啓網絡後會失效,可是重啓系統後會生效!

 

 

若是是配置默認路由網關能夠再網卡配置裏:

[root@oldboy ~]# 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

 

有關route命令更詳細的內容須要你們執行man route查看幫助,並仔細總結。

 

有關此題,咱們談下多網段生產環境網段劃分及路由的解決方案(1000臺機器劃分網段方案)。咱們能感覺到route命令不一樣功能應用案例。

 

請參考 老男孩linux運維實戰培訓-生產環境大於254臺機器網段劃分及路由解決方案案例

相關文章
相關標籤/搜索