Linux系統運維--路由管理

在Linux系統中管理路由的方法有多種,本文主要介紹如何通過命令管理靜態路由和策略路由

1.使用route在Linux系統中管理路由:

使用 route 命令,可以實現對Linux系統中路由信息的管理,route的命令格式:

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

其中:

  • add : 添加一條路由規則

  • del : 刪除一條路由規則

  • -net : 目的地址是一個網絡

  • -host : 目的地址是一個主機

  • target : 目的網絡或主機

  • netmask : 目的地址的網絡掩碼

  • gw : 路由數據包通過的網關

  • dev : 爲路由指定的網絡接口(可選)

  • If:指定網絡接口

  • route 命令的輸出項說明:

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

  •  route add –host 192.168.1.10 dev eth0     #添加到主機192.168.1.10的路由,出口是網卡eth0

  •  route add –host 192.168.1.10 gw 192.168.1.1  ##添加到主機192.168.1.10的路由,出口是網關192.168.1.1
    B、添加到網絡的路由
     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 add –net 192.168.1.0  netmask 255.255.255.0  gw 192.168.1.1  
     route add –net 192.168.1.0/24  gw 192.168.1.1
    C、添加默認(網關\路由)
     route add default gw 192.168.1.1
    D、刪除路由
     route del –host 192.168.1.10 dev eth0

  • route del –net 192.168.1.0/24 dev  eth0

  • route del –net 192.168.1.0/24 gw 192.168.1.1

在命令行使用route命令添加的路由,重啓系統或者網卡後路由就失效

2.在Linux系統中添加永久路由:

示例1:

打開/etc/rc.local文件寫入添加路由信息的命令:

vim   /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 文件中寫入默認網關:

 vim  /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/24 dev eth1

注意:使用在rc.local中添加路由方法,會造成依賴於此路由的NFS服務無法開機自動掛載。因爲按照linux的啓動順序,rc.local裏面的內容是在linux所有服務都啓動完畢後才被執行的,也就是說,這裏面的命令是在NFS之後才被執行的,在NFS服務啓動時服務器上的靜態路由是沒有被添加的,所以會導致NFS掛載不能成功。而static-routes文件是/etc/sysconfig/network(Centos7以下版本)腳本執行時調用的一個文件,在network腳本中的位置是:

 

從這段腳本可以看到,如果static-routes文件存在,就執行route命令,並將文件中的每行的內容,去掉首個字段,其餘部分做爲參數添加相應路由信息。這樣的話,在系統啓動時路由就自動添加上了,又因爲network是在NFS服務前面啓動,就不會出現NFS開機無法自動掛載的問題了。這樣看來,如果需要添加靜態路由,使用static-routes文件要比使用rc.local好,而且當改變了網絡配置,需要重啓network腳本的時候,相應的靜態路由是可以自動添加上的,但如果使用rc.local的話,在重啓network服務的時候,原本添加好的靜態路由就消失了。

 

3.route和IP route的區別:

和route相比,ip的功能更強大,route命令只能在缺省的路由表中添加路由,無法對策略路由進行管理,當主機有多個網卡並綁定多個IP時,需要配置策略路由。

 

示例:多網卡綁定多個IP配置策略路由

在“/etc/iproute2/rt_tables”文件中增加兩張路由表名稱(net1和net2)和路由表優先級(252和251,優先級數值越小表示優先級越高)

vim  /etc/iproute2/rt_tables

# added for dual net
252     net1
251     net2

在/etc/rc.local中添加路由信息,以兩張網卡(eth0和eth1)的IP地址分別爲:192.168.1.23和192.168.2.4,網關地址分別爲:192.168.1.1和192.168.2.1爲例,需要添加的信息如下:

 

# Request IP address for eth1
dhclient eth1
# Add routes
ip route flush table net1
ip route add default via 192.168.1.1 dev eth0 src 192.168.1.23 table net1      #在net1中添加默認路由:源是1.23,網關是1.1,出口是eth0
ip rule add from 192.168.1.23 table net1                                       #從1.23來的數據包找表net1
 
ip route flush table net2
ip route add default via 192.168.2.1 dev eth1 src 192.168.2.4 table net2
ip rule add from 192.168.2.4 table net2

配置策略路由的方法(臨時):

第一步:在/etc/iproute2/rt_tables文件中添加路由表並指定優先級

linux 系統中,用戶可以自定義從 1-252個路由表,文件中默認已存在了4個路由表

0#表: 系統保留表
253#表: defulte table 沒特別指定的默認路由都放在該表

254#表: main table  沒指明路由表的所有路由放在該表

255#表: locale table 保存本地接口地址,廣播地址、NAT地址 由系統維護,用戶不得更改

第二步:添加路由信息

ip route add default via 192.168.120.1  dev eth1 table net1    #添加一條默認路由,下一跳是192.168.120.1出口是eth1

ip rule add  from 192.168.120.132 lookup  test 或者  ip rule add from 192.168.120.132 table  net1  

#從192.168.120.132過來的數據包查看test表的路由信息

添加完成後從192.168.120.132過來的流量都走eth1,出口是192.168.120.1

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章