centos7使用rt_tables巧妙配置多網卡多路由實現策略路由


 路由表和策略路由的區別

  通常我們維護靜態路由表會手工填寫所有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是否可以通信,此時就可以正常使用了

查看路由表:

 網關

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM