LINUX下永久添加靜態路由


在linux下永久添加靜態路由有兩種方法:

一、使用route命令添加
使用route 命令添加的路由,機器重啟或者網卡重啟后路由就失效了,方法:
A、添加到主機的路由
# route add –host 192.168.1.10 dev eth0
# route add –host 192.168.1.10 gw 192.168.1.1
B、添加到網絡的路由
# route add –net 192.168.1.0  netmask 255.255.255.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/24 eth1
C、添加默認網關
# route add default gw 192.168.1.1
D、刪除路由
# route del –host 192.168.1.10 dev eth0

二、添加永久路由

A、# vi /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

B、# vi /etc/sysconfig/network (添加到末尾)
語句:GATEWAY=gw-ip 或者 GATEWAY=gw-dev

C、# vi /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

D、開啟 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.1.0/16 gw 網關ip

  

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

route 命令的輸出項說明

輸出項 說明

Destination 目標網段或者主機
Gateway 網關地址,”*” 表示目標是本主機所屬的網絡,不需要路由
Genmask 網絡掩碼
Flags 標記。一些可能的標記如下:
  U — 路由是活動的
  H — 目標是一個主機
  G — 路由指向網關
  R — 恢復動態路由產生的表項
  D — 由路由的后台程序動態地安裝
  M — 由路由的后台程序修改
  ! — 拒絕路由
Metric 路由距離,到達指定網絡所需的中轉數(linux 內核中沒有使用)
Ref 路由項引用次數(linux 內核中沒有使用)
Use 此路由項被路由軟件查找的次數
Iface 該路由表項對應的輸出接口

 

3 種路由類型

主機路由

主機路由是路由選擇表中指向單個IP地址或主機名的路由記錄。主機路由的Flags字段為H。例如,在下面的示例中,本地主機通過IP地址192.168.1.1的路由器到達IP地址為10.0.0.10的主機。

Destination    Gateway       Genmask Flags     Metric    Ref    Use    Iface
-----------    -------     -------            -----     ------    ---    ---    -----
10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0

網絡路由

網絡路由是代表主機可以到達的網絡。網絡路由的Flags字段為N。例如,在下面的示例中,本地主機將發送到網絡192.19.12的數據包轉發到IP地址為192.168.1.1的路由器。

Destination    Gateway       Genmask Flags    Metric    Ref     Use    Iface
-----------    -------     -------         -----    -----   ---    ---    -----
192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0

默認路由

當主機不能在路由表中查找到目標主機的IP地址或網絡路由時,數據包就被發送到默認路由(默認網關)上。默認路由的Flags字段為G。例如,在下面的示例中,默認路由是IP地址為192.168.1.1的路由器。

Destination    Gateway       Genmask Flags     Metric    Ref    Use    Iface
-----------    -------     ------- -----      ------    ---    ---    -----
default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0

配置靜態路由

route 命令

設置和查看路由表都可以用 route 命令,設置內核路由表的命令格式是:

# route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

  • add : 添加一條路由規則
  • del : 刪除一條路由規則
  • -net : 目的地址是一個網絡
  • -host : 目的地址是一個主機
  • target : 目的網絡或主機
  • netmask : 目的地址的網絡掩碼
  • gw : 路由數據包通過的網關
  • dev : 為路由指定的網絡接口


免責聲明!

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



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