本篇總結三種修改路由的方式:route, ip route, 以及通過修改文件來配置路由,前2種命令行形式適用於ubuntu和centos,重啟失效,最后一種永久有效。
一. route命令
1) 查看:route -n
2)添加: route add [-net|-host] target [netmask Nm] [gw Gw] [[dev If]
目標:192.168.1.3 網關:172.16.0.1(必須與本地地址在同一網絡)
~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0(經由本地哪個網卡)
目標:192.168.0.0 網關:172.16.0.1
~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默認路由,網關:172.16.0.1
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
~]# route add default gw 172.16.0.1
3)刪除:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目標:192.168.1.3 網關:172.16.0.1
~]# route del -host 192.168.1.3
目標:192.168.0.0 網關:172.16.0.1
~]# route del -net 192.168.0.0 netmask 255.255.255.0
二. ip route - routing table management
1) 添加路由:ip route add TARGET via GW [dev IFACE] [src SOURCE_IP] (dev表示流出的接口,via:經由下一跳)
例如:ip route add 192.168.1.3 via 172.16.0.1 dev eth0
ip route add 192.168.0.0/24 via 172.16.0.1
注意TARGET中的格式:
主機路由:IP
網絡路由:NETWORK/MASK
2) 添加默認網關:ip route add defalt via GW [dev IFACE] ----dev指明由哪條接口出去
3) 刪除路由:ip route del TARGET
4) ip route show,或者ip route list查看路由
5) ip route flush-----清空整個路由表
[dev IFACE]---僅清空與某個接口相關聯的
[via PREFIX]--僅清空與某個網關相關聯的,不常用
三. 修改配置文件永久生效
1)對centos來說,是修改/etc/sysconfig/network-scripts/route-IFACE (比如 route-eth0,沒有就新建)來配置路由,永久有效,有2種配置風格
(1) TARGET via GW
例如:192.168.0.0/24 via 172.16.0.1
0.0.0.0/0 via 172.16.10.2 dev eth0 (可以省略dev eth0 ,注意這里的掩碼是0而不是32,因為這里是網段而不是路由)
(2) 每三行定義一條路由
ADDRESS#=TARGET #表示數字
NETMASK#=mask
GATEWAY#=GW
例如:ADDRESS0=192.16.20.0
NETMASK0=255.255.255.0
GATEWAY0=172.16.0.1
注意: 2種風格不能混合使用,都要service network restart重啟網絡服務
2)對ubuntu來說,是修改/etc/network/interfaces,添加路由格式如下
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
其實就是命令行的形式多了個up,其他都一樣。
四. 路由參數說明
我們在修改ip前先查看一下主機路由:route -n

參數列解釋:
Destination \ Genmask分別是network \ netmask,它們兩個組合成了一個網絡。
Gateway就是網關,如果顯示0.0.0.0表示該路由是直接由本機傳送;如果顯示ip,表示該路由需要經過路由器的幫助才能發出。
Iface 就是網卡接口名稱。
Flags:
U(route is up)該路由是啟動的
H(target is a host) 特定主機路由
G(use Gateway) 需要通過外部的主機傳遞數據包