路由表和策略路由的區別 通常我們維護靜態路由表會手工填寫所有IP地址段的路由規則,使用命令或者寫入配置文件永久生效,以常見的操作系統Windows/Linux/AIX為例 #Windows靜態路由 --鍵入 route -p add [目標] [mask <網路掩碼>] [網關] [metric < ...
路由表和策略路由的區別
通常我們維護靜態路由表會手工填寫所有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
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是否可以通信,此時就可以正常使用了
查看路由表:
網關