Linux-靜態路由相關配置

戴小四發表於2018-08-01

Linux下靜態路由修改

【方法一】

1)新增路由:

# route add -net 192.168.0.0/24 gw 192.168.0.1

# route add -host 192.168.0.1 dev 192.168.0.1

2)刪除路由

route del -net 192.168.0.0/24 gw 192.168.0.1

註釋:

add 增加路由

del 刪除路由

-net 設定到某個網段的路由

-host 設定到某臺主機的路由

gw 出口閘道器 IP地址

dev 出口閘道器 物理裝置名

3)增加預設路由

# route add default gw 192.168.0.1

# route -n 檢視路由表

【方法二】

1)新增路由

# ip route add 192.168.0.0/24 via 192.168.0.1

# ip route add 192.168.0.1 dev 192.168.0.1

2)刪除路由

# ip route del 192.168.0.0/24 via 192.168.0.1

註釋:

add 增加路由

del 刪除路由

via 閘道器出口 IP地址

dev 閘道器出口 物理裝置名

3)增加預設路由

# ip route add default via 192.168.0.1 dev eth0

via 192.168.0.1 是我的預設路由器

檢視路由資訊

# ip route 

4)儲存路由設定,使其在網路重啟後任然有效 

在/etc/sysconfig/network-script/目錄下建立名為route- eth0的檔案 

# vi /etc/sysconfig/network-script/route-eth0 

在此檔案新增如下格式的內容 

192.168.1.0/24 via 192.168.0.1 

重啟網路驗證

/etc/rc.d/init.d/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 

也就是說,將靜態路由加到/etc/sysconfig/static-routes 檔案中就行了。

如加入:

route add -net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.1

則static-routes的格式為

any net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1. 


在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 


2.在/etc/sysconfig/network裡新增到末尾

方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev 


3./etc/sysconfig/static-routes : (沒有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


4.開啟 IP 轉發:

# echo "1" >/proc/sys/net/ipv4/ip_forward (臨時)

# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久開啟)

如果在rc.local中新增路由會造成NFS無法自動掛載問題,所以使用static-routes的方法是最好的。無論重啟系統和service network restart 都會按照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服務的時候,原本新增好的靜態路由就消失了。

相關文章