linux -- 添加、修改、刪除路由


在日常的使用中,或者在服務器中,有兩個網卡配置兩個地址,訪問不同的網絡段,這種情況是非常常見的現象,但是,我們需要額外的添加路由表來決定發送的數據包經過正確的網關和interface才能正確的進行通信
 

顯示現在所有路由

#route
root@Ubuntu:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.147.9.0      *               255.255.255.0   U     1      0        0 eth0
192.168.1.0     *               255.255.255.0   U     2      0        0 wlan0
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.0.0     192.168.1.1     255.255.0.0     UG    0      0        0 wlan0
default         10.147.9.1      0.0.0.0         UG    0      0        0 eth0
root@ubuntu:~# 
結果是自上而下, 就是說, 哪條在前面, 哪條就有優先, 前面都沒有, 就用最后一條default

Destination:為路由目標,可以是網絡或主機的IP地址;

Gateway:包含默認網關或通過其可訪問主機或網絡的網關;

Genmask:包含網關后的網絡或主機的子網掩碼;

Iface:表示該條路由從哪個設備出去。


舉例, 添加一條路由(發往192.168.62這個網段的全部要經過網關192.168.1.1)
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1


刪除一條路由
route del -net 192.168.122.0 netmask 255.255.255.0

刪除的時候不用寫網關

linux下添加路由的方法:

一:使用 route 命令添加
使用route 命令添加的路由,機器重啟或者網卡重啟后路由就失效了,方法:
//添加到主機的路由
# route add –host 192.168.168.110 dev eth0
# route add –host 192.168.168.119 gw 192.168.168.1
//添加到網絡的路由
# route add –net IP netmask MASK eth0
# route add –net IP netmask MASK gw IP
# route add –net IP/24 eth1
//添加默認網關
# route add default gw IP
//刪除路由
# route del –host 192.168.168.110 dev eth0

 

二:在linux下設置永久路由的方法: 
1.在/etc/rc.local里添加 
方法: 
route add -net 192.168.3.0/24 dev eth0 

route add -net 192.168.2.0/24 gw 192.168.2.254 

route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0 metric 1

route add:命令關鍵字,表示增加路由,若要刪除路由,則為route del;

-host/-net:表示路由目標是主機還是網段;

netmask:表示路由目標為網段時才會使用到,表示路由目標網段的子網掩碼;

gw:命令關鍵字,后面跟下一跳網關;

dev:命令關鍵字,后面跟具體設備名,表示路由是從該設備出去。

metric:為路由指定所需躍點數的整數值(范圍是 1 ~ 9999),它用來在路由表里的多個路由中選擇與轉發包中的目標地址最為匹配的路由。所選的路由具有最少的躍點數。躍點數能夠反映躍點的數量、路徑的速度、路徑可靠性、路徑吞吐量以及管理屬性。


2.在/etc/sysconfig/network里添加到末尾 
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev 


3./etc/sysconfig/static-routes : 
any net 192.168.3.0/24 gw 192.168.3.254 
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 


如果在rc.local中添加路由會造成NFS(網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源)無法自動掛載問題,所以使用static-routes的方法是最好的。無論重啟系統和service network restart 都會生效 

以下是解決NFS問題的描述: 

按照linux啟動的順序,rc.local里面的內容是在linux所有服務都啟動完畢,最后才被執行的,也就是說,這里面的內容是在netfs之后才被執行的,那也就是說在netfs啟動的時候,服務器上的靜態路由是沒有被添加的,所以netfs掛載不能成功。 而且,如果你重啟了網絡服務器,那么路由就失效了,這個時候你不得不重新加載這個文件了。


static-routes文件又是什么呢,這個是network腳本執行時調用的一個文件,這個文件的放置在/etc/sysconfig目錄下,在network腳本中的位置是:

# Add non interface-specific static-routes. 
if [ -f /etc/sysconfig/static-routes ]; then 
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do 
/sbin/route add -$args 
done 
fi

從這段腳本可以看到,這個就是添加靜態路由的方法,static-routes的寫法是

any net 192.168.0.0/16 gw 網關ip

這樣的話,在啟動network腳本的時候路由就自動添加上了,又因為network是在netfs前面啟動的,自然在掛載nfs的時候就正常了。 
這樣看來,如果需要添加靜態路由,使用static-routes文件要比使用rc.local好,而且當改變了網絡配置,需要重啟network腳本的 時候,相應的靜態路由是可以自動添加上的,但這時如果使用rc.local的話,在重啟network服務的時候,原本添加好的靜態路由就消失了。


免責聲明!

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



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