CentOS7同時接入兩個不同ISP的局域網對外提供服務

CentOS雙ISP配置

目標: 一臺服務器通過多個網卡連接多個網絡,能夠保證不同網絡的來的數據能夠按照原路返回,同時通過這兩個網絡中任意一個的外網ip或域名訪問正常。

環境

  • 網絡環境:
    • 兩個網段192.168.199.0/24 192.168.1.0/24,兩個網段物理隔離,分別從兩個不同的ISP供應商連接互聯網。
    • TPlink路由器綁定域名 longxintaiye.f3322.net
    • 極路由綁定域名 longsun.jios.org
  • 服務器:
    • 操作系統: CentOS 7 minimal
    • 兩個物理網卡分別綁定兩個網橋br0 br1,實際相當于兩個物理網卡(后面直接把網橋當作物理網卡來理解)
    • br0連接極路由:ip 192.168.199.11 通過極路由映射端口22,外網訪問地址為 longsun.jios.org:1122
    • br1連接路由器TPLink:ip 192.168.1.11 通過TPLink映射端口22,外網訪問地址為 longxintaiye.f3322.net:1122
  • 測試機
    • 阿里云服務器,CentOS 7 安裝Telnet 外網測試訪問22端口是否能通

iproute2 與 route命令

  • route命令屬于net-tools工具包的一個命令,從2001年不再維護,很多linux內核支持的新的網絡特性無法通過route命令實現
  • iproute2從centos7以后替換net-tools工具的成為系統默認網絡工具,支持route策略配置及流量控制等功能

為什么只有用iproute2的ip命令才能夠解決雙路問題?

  • ip route 命令支持定義多張路由表,每個路由表都可以自由設定默認路由靜態路由等策略
  • ip rule 支持定義策略,將不同類型的網絡數據跟不同路由表綁定,例如:
    • 極路由192.168.199.0/24網絡里發送到br0網卡上的數據包,會根據br0的路由表T2(自定義標號為202)指定的網關192.168.199.1返回極路由;
    • TPLink路由器中192.168.1.0/24網絡里發送到br1網卡的數據包會根據br1對應的路由表T1(自定義標號為201)中的默認網關192.168.1.1,發送回TPLink;


  • route只能維護一張路由表,只能有一個默認網關比如:192.168.1.1
    1. TPLink路由器發送到br1網卡的數據包,會根據默認路由表中的網關送回到192.168.1.1 TPLink去,此時鏈路正常


2. 極路由發送到br0網卡的數據包,會根據route的默認路由表中的網關送回到192.168.1.1, TPLink沒有接受過這個數據包,也無法獲取源地址正確的轉回去。

如何配置iproute2

為物理網卡創建單獨的路由表

iproute定義路由表的配置文件在/etc/iproute2/rt_table,最多可以有255個路由表。我們只需要分別為br1 br0創建T1 T2路由表,編輯/etc/iproute2/rt_table并添加201 T1 202 T2保存退出即可


分別為向新創建的路由表添加路由規則(非持久化,重啟機器或網絡后失效)

為br1添加路由規則到T1表中

#將從192.168.1.11來到數據包指定到br1網卡上
/usr/sbin/ip route add 192.168.1.0/24 dev br1 src 192.168.1.11 table 201
#指定本路由表默認網關為192.168.1.1
/usr/sbin/ip route add default via 192.168.1.1 table  201
#查看路由表
/usr/sbin/ip route show table T1

為br0添加路由規則到T2表中

#將從192.168.199.11來到數據包指定到br1網卡上
/usr/sbin/ip route add 192.168.199.0/24 dev br0 src 192.168.199.11 table 202
#指定本路由表默認網關為192.168.199.1
/usr/sbin/ip route add default via 192.168.199.1 table  202
#查看路由表
/usr/sbin/ip route show table T2

通過ip rule制定策略,將路由表與網絡數據綁定(非持久化,重啟機器或網絡后失效)

將來自于網關192.168.1.1的數據包綁定到路由表T1上,按照T1的路由規則執行

/usr/sbin/ip rule add from  192.168.1.11 table T1

將來自于網關192.168.199.1的數據包綁定到路由表T2上,按照T1的路由規則執行

/usr/sbin/ip rule add from  192.168.199.11 table T2

測試

在阿里云的主機上通過telnet命令測試,服務器域名及服務器在兩個路由器上對應的外網映射端口,如果有交互操作說明可以連通,注意關閉服務器上的防火墻。


iproute定義的route 和rule持久化,避免重啟機器或網絡后失效

  • 新增路由表

    echo " 201    T1
    

202 T2" >> cat /etc/iproute2/rt_tables
```

  • 為br0 br1 創建route規則配置文件

    echo  "
    192.168.199.0/24 dev br0 src 192.168.199.11 table 202
    

default via 192.168.199.1 table 202
" > /etc/sysconfig/network-scripts/route-br0

echo  "
192.168.1.0/24 dev br1 src 192.168.1.11 table 201

default via 192.168.1.1 table 201
" > /etc/sysconfig/network-scripts/route-br1
```

  • 創建rule規則文件

    echo  "
    from  192.168.199.11 table T2
    " > /etc/sysconfig/network-scripts/rule-br0
    echo  "
    from  192.168.1.11 table T1
    " > /etc/sysconfig/network-scripts/rule-br1
    
  • 重啟網絡檢查路由配置情況

    systemctl restart network
    ip route show table T1
    ip route show table T2
    ip rule show
    
  • 從外網測試連接成功

centos終于可以像windows一樣自動判斷來源網卡設定回歸的路由

route命令的缺陷

route命令創建的路由表相當于,iproute2中的main路由表,只能設置一個網關,會根據default網關的添加順序及metric權重值來取做唯一的網關,一般情況下最后添加的及metric最小的默認路由生效

ip route + ip rule實現雙ISP接入網絡配置
route命令詳解
iproute2 策略路由與流量控制筆記
Linux策略性路由應用及分析(iproute2)
ip route 官方手冊
iproute2 之 ip命令使用教程手冊

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容