本博文的視訊講解已釋出:http://oldboy.blog.51cto.com/2561410/1119453
緣起:本文為老男孩linux教育訓練第七次課前考試題及參考答案,有朋友在看完http://oldboy.blog.51cto.com/2561410/784625内容後,希望補充此内容,是以,釋出如下,希望大家喜歡。完整試題及答案如下:
考試題一:linux下如何添加路由(百度面試題)
以上是原題,老男孩老師翻譯成如下3道題。
a.如何用指令行方式給linux機器添加一個預設網關,假設網關位址為10.0.0.254?
b. 192.168.1.0網段, 192.168.1.1網關的某一伺服器想連入172.16.1.0/24段,該如何添加路由(奇虎360)
c.如果添加一個主機路由?
請分别解答。
解答:d -net 172.16.0.0 netmask 255.255.255.0 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
[root@oldboy ~]# route add default gw 10.0.0.254 #==>這個指令是添加預設的網關,也是本題的答案。
[root@oldboy ~]# netstat -rn
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 #==>又回來了
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 ~]# netstat -rn #==>和route -n很像。
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
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 #==>指定裝置而不是位址。
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
[root@oldboy ~]# route del -net 192.168.1.0/24 dev eth0
[root@oldboy ~]# route add -net 192.168.1.0/24 dev eth0
總結:
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-eth0GATEWAY=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 –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檢視幫助,并仔細總結。