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 命令的輸出項說明:
使用route管理路由的方法如下:Destination 目標網段或者主機 Gateway 閘道器地址,”*” 表示目標是本主機所屬的網路,不需要路由 Genmask 網路掩碼 Flags 標記。一些可能的標記如下: U — 路由是活動的 H — 目標是一個主機 G — 路由指向閘道器 R — 恢復動態路由產生的表項 D — 由路由的後臺程式動態地安裝 M — 由路由的後臺程式修改 ! — 拒絕路由 Metric 路由距離,到達指定網路所需的中轉數(linux 核心中沒有使用) Ref 路由項引用次數(linux 核心中沒有使用) Use 此路由項被路由軟體查詢的次數 Iface 該路由表項對應的輸出介面 - 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,優先順序數值越小表示優先順序越高)
# 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