路由表和策略路由的區別
通常我們維護靜態路由表會手工填寫所有IP地址段的路由規則,使用命令或者寫入配置文件永久生效,以常見的操作系統Windows/Linux/AIX為例
#Windows靜態路由 --鍵入 route -p add [目標] [mask <網絡掩碼>] [網關] [metric <度量值>] [if <接口>] route print route delete route -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1 #RHEL靜態路由 vi /etc/sysconfig/network default via 192.168.3.1 dev eth0 10.211.6.0/24 via 192.168.3.1 dev eth0 10.0.0.0/8 via 10.212.52.1 dev eth1 #SuSE靜態路由 vi /etc/sysconfig/network/routes default 192.168.3.1 - -
10.211.6.0 192.168.3.1 255.255.255.0 eth0 10.0.0.0 10.212.52.1 255.0.0.0 eth1 #AIX靜態路由 smitty mkroute 172.20.14.0/24 gw 172.23.14.254
rt_tables
rt_tables簡單來說就是通過給表的命名使得管理簡單化
大部分人習慣直接將路由表優先級號碼直接作為表的名稱來使用,這樣做的好處是非常直觀和簡明的表達了表所在優先級的位置,但是當表的優先級結構出現變動時,我們對巨大的路由表的修改就顯得很煩瑣和費事了。
在/etc/iproute2/目錄下,有這么一個文件rt_tables,只要對它進行改動,我們將很容易的完成路由表優先級結構的變動。(數值越小優先級別越高)
當路由表的優先級發生變化的時候,我們只需要編輯/etc/iproute2/rt_tables這個文件就可以直接改變路由表的優先級次序。
[root@peter-host ~]# vim /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep
Linux最多可以支持255張路由表,其中有3張表是內置的:
表255 本地路由表(Local table) 本地接口地址,廣播地址,已及NAT地址都放在這個表。該路由表由系統自動維護,管理員不能直接修改。
表254 主路由表(Main table) 如果沒有指明路由所屬的表,所有的路由都默認都放在這個表里,一般來說,舊的路由工具(如route)所添加的路由都會加到這個表。一般是普通的路由。
表253 默認路由表 (Default table) 一般來說默認的路由都放在這張表,但是如果特別指明放的也可以是所有的網關路由。
表 0 保留
因為VPC網絡沒有其他網段,所以此處就以同網段的示例:
原有網卡eth0
[root@peter-host network-scripts]# cat ifcfg-eth0 BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=yes DHCPV6C=yes
新增網卡eth1,ip為自動獲取的
從其他機器ping這兩個ip,只有eth0網卡可以通信,eth1不可以
1、編輯路由策略
#編輯rt_tables
echo "251 net_251" >> /etc/iproute2/rt_tables
echo "252 net_252" >> /etc/iproute2/rt_tables
# 查看
[root@peter-host ~]# vim /etc/iproute2/rt_tables # reserved values # 255 local 254 main 253 default 0 unspec
#
# local
#
#1 inr.ruhep
#################添加下面兩行(數值越小優先級別越高) 251 net_251 252 net_252
2、添加路由規則
#清空net_251的路由表 ip route flush table net_251 # 添加一個路由規則到 net_251 表,這條規則是 net_251 這個路由表中數據包默認使用源 IP 192.168.0.33 通過 eth0 走網關 192.168.0.1 ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251 #來自 192.168.0.33 的數據包,使用 net_251 路由表的路由規則 ip rule add from 192.168.0.1 table net_251
#清空net_252的路由表
ip route flush table net_252
# 添加一個路由規則到 net_252 表,這條規則是 net_252 這個路由表中數據包默認使用源 IP 192.168.0.207 通過 eth1 走網關 192.168.0.1
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.207 table net_252
#來自 192.168.0.207 的數據包,使用 net_252 路由表的路由規則
ip rule add from 192.168.0.1 table net_252
#添加默認網關 route add default gw 192.168.0.1
3、如果需要自啟動生效可以寫進配置文件也可以加入rc.local
vim /etc/rc.local ip route flush table net_251 ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251 ip rule add from 192.168.0.33 table net_251 ip route flush table net_252 ip route add default via 192.168.0.1 dev eth1 src 192.168.0.207 table net_252 ip rule add from 192.168.0.207 table net_252 route add default gw 192.168.0.1
4、給文件添加 執行權限使其開機執行
chmod u+x /etc/rc.d/rc.local
5、重啟系統
6、在其他主機上測試ping這兩個ip是否可以通信,此時就可以正常使用了
查看路由表:
網關