Linux默認路由與直連路由


Linux配置好ip,掩碼,網關之后默認會建立兩條路由(除去169.254.0.0這條),如下所示:

(這兩條路由無需我們手工創建,Linux配置好網卡,重啟之后默認就會建立這兩條路由,缺一不可。這樣就可以訪問baidu.com這樣的外網或者內網地址了)
這兩條路由有不同的使用方法,我們依次來看看每一條路由。
首先第一條路由,網關為192.168.50.2,這條路由表示通向外部地址的路由,比如當你訪問非局域網的其他地址的時候,默認走的路由。舉個例子,比如你要訪問外網baidu.com,那么此時走的就是默認路由,默認路由中,這個出口地址Gateway就是我們在網卡里面配置的網關地址,而且默認路由的Gateway也必須指向這個網關地址才可以。
現在我們刪除掉這個默認路由地址:

route del default gw 192.168.50.2 dev ens33

然后再來訪問baidu.com看看

可以看到效果如上所示,所有的外網地址根本沒有辦法訪問,因為沒有默認路由了。
那就意味着此時只能訪問內部地址了,我這個內網地址里面還有其他的主機,比如192.168.50.10 192.168.50.131,我們來訪問一下看看,

可以看到確實是可以訪問內網地址的,而且我的xshell也還能通過ssh連接到這個系統里面。
當然,網關的地址也是可以ping通的,比如:

話說以后遇到可以ping通網關而不能訪問外網的問題,可以找路由來解決。

通過上面的例子我們就可以看出來訪問外網走的是默認路由,而訪問內網不走這個默認路由。所以我們接下來實驗一下刪除第二條路由(destnation為192.168.50.0這條路由)看看效果
我這里先把默認路由加上去。

route add default gw 192.168.50.2 dev ens33


現在刪除第二條路由,這個我們就要在vmware的控制終端里面測試了,否則在xshell里面刪除的話直接終端就掉了

# 執行下面這個指令
[root@localhost ~]# route del -net 192.168.50.0/24 dev ens33


此時就剩下默認路由了。
現在先訪問baidu.com等地址

發現都是ok的。再來訪問一些內網地址

發現也都是可以訪問本地局域網里面的其他設備的。
發現第二條路由是否存在都無所謂。這第二條路由也稱為直連路由,直連路由與默認路由也有一點點的區別的,主要有兩點

第一點,沒有了直連路由,我們宿主機就無法通過vmnet8與Linux虛擬機進行通信了(這里我們的實驗是windows的宿主機搭建vmware安裝Linux虛擬機,nat網絡模型)。
第二點,沒有了直連路由,此時再去ping局域網的其他主機,會發現icmp中發送的包有兩個,接收一個(正常情況下一次ping中,icmp包有兩個),也就是有三個包,如下圖所示:

看的出來沒有了直連路由,發送的request包也多了一個。

除此之外,直連路由無需我們手工創建,這個路由是在建立局域網的時候自動創建的,自動指向本地局域網環境的一個路由。還有,這條路由的網關是0.0.0.0,其實並沒有什么用,只是為了不為空默認寫的0.0.0.0,無需理會
但是,我們最好是加上直連路由。
有時候你會遇到添加默認路由失敗的例子,比如這個,我先把所有的路由刪除光了,現在直接添加默認路由的話是失敗的

必須提前存在直連路由,然后才能添加默認路由。

演示一個直連路由的例子。

# 准備一台主機A,額外添加一個ip地址
ifconfig ens33:1 192.168.0.7
# 此時再查看路由,發現系統自動給我們創建了一個192.168.0.0的直連路由
[root@@@node1 ~]# route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33

現在我們再找局域網的其他一台主機B,直接ping這個ip地址192.168.0.7,會發現根本不能通,是因為其他主機B沒有到達192.168.0.7的路由,這里我們給主機B加一個直連路由

route add -net 192.168.0.0/24 dev ens33
# 此時再去ping,發現可以ping通192.168.0.7了

最后再來講解下網絡路由的例子

網絡路由

網絡路由的優先級介於主機路由和默認路由之前,精度越高,優先級越高。
實驗步驟:配置路由,使A主機192.168.1.100/24能ping通B主機192.168.0.100/24

准備5台Linux虛擬機,兩台模擬A、B主機,三台模擬路由器R1,R2,R3,模擬路由器的主機必須有兩塊網卡
第一種配置方法:
在R1路由器上,配置兩條路由記錄,分別到達10.0.0.0/8和192.168.0.0/24網段
ip route add 10.0.0.0/8 via 172.16.0.3
ip route add 192.168.0.0/24 via 172.16.0.3

在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3

在R3路由器上,配置兩條路由記錄,分別到達172.16.0.0/16和192.168.1.0/24網段
route add -net 172.16.0.0/16 gw 10.0.0.2
route add -net 192.168.1.0/24 gw 10.0.0.2

第二種配置方法:
即然要求是只關心主機A能否ping到主機B,所以只配置到達對方網段的路由,不配置中間路由:

在R1路由器上,配置一條路由記錄,只到達192.168.0.0/24網段
ip route add 192.168.0.0/24 via 172.16.0.3

在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3

在R3路由器上,配置一條路由記錄,只到達192.168.1.0/24網段
route add -net 192.168.1.0/24 gw 10.0.0.2

第三種配置方法:
通過配置默認路由實現:

在R1路由器上,只配置默認路由
ip route add default via 172.16.0.3

在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3

在R3路由器上,只配置默認路由
ip route add default via 10.0.0.2

永久生效的方法是創建相應網口的路由文件,/etc/sysconfig/network-scripts/route-ethX,內容DEST/netmask via NEXTHOP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM