IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁系統(tǒng)集成網(wǎng)絡(luò)管理 → 雙線策略路由的三種實現(xiàn)方式總結(jié)

雙線策略路由的三種實現(xiàn)方式總結(jié)

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  參考了下論壇中關(guān)于電信+網(wǎng)通雙線策略路由的帖子,并結(jié)合實際環(huán)境,將實現(xiàn)雙線策略路由的幾種方式總結(jié)如下,希望對有需要的朋友有所幫助,雙線比單線要復(fù)雜多了,但把策略路由的原理弄明白了,就會發(fā)現(xiàn)其實并不難。

  網(wǎng)絡(luò)環(huán)境

  服務(wù)器(網(wǎng)關(guān)):

  eth0 為LAN口,IP為 LAN_IP = 192.168.0.1

  eth1 為第一個WAN口,接電信線路,IP為 CTC_IP,網(wǎng)關(guān)為 CTC_GW

  eth2 為第二個WAN口,接網(wǎng)通線路,IP為 CNC_IP,網(wǎng)關(guān)為 CNC_GW

  內(nèi)網(wǎng)網(wǎng)站

  HTTP_SERVER = 192.168.0.100

  內(nèi)核打補丁

  如果你希望外網(wǎng)用戶,不管通過哪個IP都可以訪問到服務(wù)器或映射后的內(nèi)網(wǎng)服務(wù)器,那么你就需要為內(nèi)核打上補丁,

  補丁在 http://www.ssi.bg/~ja/#routes 可以下載到,在 Static, Alternative Routes, Dead Gateway Detection, NAT 找和內(nèi)核對應(yīng)的 patch

  下載后為內(nèi)核打上,然后在

  Networking? --->? Networking options? --->? IP: advanced router

  把 IP: equal cost multipath with caching support (EXPERIMENTAL) 前面的勾去掉

  如果你不想打補丁,或不想動內(nèi)核,有個簡單的辦法來實現(xiàn),即寫一個腳本,每隔2秒鐘刷新一次route cache

  while : ; do

  ip route flush cache

  sleep 2

  done

  雙線策略的實現(xiàn)

  1. 靜態(tài)路由方式(這種方式是最簡單的)

  1) 設(shè)置默認路由,比如電信

  ip route replace default via 電信網(wǎng)關(guān) dev eth1

  2) 設(shè)置策略路由,對另外一條線路

  ip route add 網(wǎng)通路由表1 via 網(wǎng)通網(wǎng)關(guān) dev eth2 metric 1

  ip route add 網(wǎng)通路由表2 via 網(wǎng)通網(wǎng)關(guān) dev eth2 metric 1

  ....

  3) 添加原路返回路由

  策略路由規(guī)則設(shè)置完后,還要為每條線路加入相應(yīng)的 "原路返回路由"(從哪條線進來的數(shù)據(jù),最終還是從這條線出去),不然就會出現(xiàn)這樣的問題:

  電信用戶通過網(wǎng)通的IP訪問不到服務(wù)器,網(wǎng)通用戶也不能通過電信IP訪問到服務(wù)器

  ip route flush table 100

  ip route add default via 電信網(wǎng)關(guān) dev eth1 src 電信IP table 100 prio 50

  ip rule add from 電信IP table 100

  ip route flush table 200

  ip route add default via 網(wǎng)通網(wǎng)關(guān) dev eth2 src 網(wǎng)通IP table 200 prio 50

  ip rule add from 網(wǎng)通IP table 200

  出來加入本身的原路返回路由之外,還應(yīng)加入局域網(wǎng)接口的,不然通過端口映射后,內(nèi)網(wǎng)無法通過外網(wǎng)IP訪問到映射后的服務(wù)器

  ip route add 192.168.0.0/24 dev eth0? scope link? src 192.168.0.1 table 100

  ip route add 192.168.0.0/24 dev eth0? scope link? src 192.168.0.1 table 200

  2. 策略路由方式

  為了方便,我們增加2個策略路由表,電信 => 100,網(wǎng)通 => 200,這樣再添加規(guī)則時,就可以直接用自定義的名稱來替代數(shù)字

  echo "100 ctc" >>? /etc/iproute2/rt_tables

  echo "200 cnc"? >> /etc/iproute2/rt_tables

  1)設(shè)置默認路由(電信)

  ip route replace default via 電信網(wǎng)關(guān) dev eth1

  2)對網(wǎng)通進行基于目的地址的策略路由

  ip rule add to 網(wǎng)通路由表1 table cnc prio 100

  ip rule add to 網(wǎng)通路由表2 table cnc prio 100

  ....

#p#副標題#e#

  3)添加原路返回路由

  ip route flush table ctc

  ip route add default via 電信網(wǎng)關(guān) dev eth1 src 電信IP table ctc

  ip route add 192.168.0.0/24 dev eth0? scope link? src 192.168.0.1 table ctc

  ip rule add from 電信IP table ctc

  ip route flush table cnc

  ip route add default via 網(wǎng)通網(wǎng)關(guān) dev eth2 src 網(wǎng)通IP table cnc

  ip route add 192.168.0.0/24 dev eth0? scope link? src 192.168.0.1 table ctc

  ip rule add from 網(wǎng)通IP table cnc

  3. iptables打標記+iproute2 fwmark

  1)使用 CONNMARK 對連接進行標記

  外網(wǎng)進來數(shù)據(jù)

  iptables -t mangle -A PREROUTING -i eth1 -m conntrack? --ctstate NEW? -j CONNMARK --set-mark 0x100

  iptables -t mangle -A PREROUTING -i eth2 -m conntrack? --ctstate NEW? -j CONNMARK --set-mark 0x200

  轉(zhuǎn)發(fā)出去的數(shù)據(jù)

  iptables -t mangle -A POSTROUTING -o eth1? -m conntrack? --ctstate NEW? -j CONNMARK --set-mark 0x100

  iptables -t mangle -A POSTROUTING -o eth2? -m conntrack? --ctstate NEW? -j CONNMARK --set-mark 0x200

  局域網(wǎng)進來數(shù)據(jù)

  iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark

  本地出去數(shù)據(jù)

  iptables -t mangle -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark

  2)在 IPROUTE2 中做基于 fwmark 的策略路由

  ip rule add fwmark 0x100 table ctc prio 40

  ip rule add fwmark 0x200 table cnc prio 40

  3)添加原路返回路由

  ip route add table ctc to $CTC_NET dev eth1? scope link

  ip route add table ctc to $CNC_NET dev eth2? scope link

  ip route add table ctc to 192.168.0.0/24 dev eth0? scope link

  ip route add default via 電信網(wǎng)關(guān) dev eth1 table ctc

  ip route add table cnc to $CTC_NET dev eth1 scope link

  ip route add table cnc to $CNC_NET dev eth2? scope link

  ip route add table cnc to 192.168.0.0/24 dev eth0? scope link

  ip route add default via 網(wǎng)通網(wǎng)關(guān) dev eth2 table cnc

  Iptables/NAT 規(guī)則

  /sbin/iptables -t nat -A POSTROUTING -o eth1 -s 局域網(wǎng)網(wǎng)段 -j SNAT --to-source 電信外網(wǎng)IP

  /sbin/iptables -t nat -A POSTROUTING -o eth2 -s 局域網(wǎng)網(wǎng)段 -j SNAT --to-source 網(wǎng)通外網(wǎng)IP

  如果外網(wǎng)IP是動態(tài)的,可以用 MASQUERADE

  /sbin/iptables -t nat -A POSTROUTING -o eth1 -s 局域網(wǎng)網(wǎng)段 -j MASQUERADE

  /sbin/iptables -t nat -A POSTROUTING -o eth2 -s 局域網(wǎng)網(wǎng)段 -j MASQUERADE

  端口映射

  端口映射可以分別針對兩條線做端口映射

  比如 LAN口的IP為 192.168.0.1,內(nèi)網(wǎng)服務(wù)器IP為 192.168.0.100,映射端口為 80

  iptables -t nat -A PREROUTING -p tcp --dport 80 -d 電信IP -j DNAT --to-destination 192.168.0.100

  iptables -t nat -A PREROUTING -p tcp --dport 80 -d 網(wǎng)通IP -j DNAT --to-destination 192.168.0.100

  端口回流(內(nèi)網(wǎng)可以通過外網(wǎng)IP訪問映射后的服務(wù)器)

  iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 --dport 80 -d 192.168.0.100 -j SNAT --to-source 192.168.0.1

  [注]:上述規(guī)則應(yīng)放到 NAT 規(guī)則之前

  常見問題(FAQ)

  1. 不能實現(xiàn) "交叉訪問" 到服務(wù)器

  即:會出現(xiàn)外網(wǎng)電信用戶只能通過電信IP訪問到服務(wù)器,而通過網(wǎng)通IP訪問不了;

  同理,網(wǎng)通用戶只能通過網(wǎng)通IP訪問到服務(wù)器,而通過電信IP卻訪問不了。也就是只是單純地解決了 "內(nèi)網(wǎng)訪問哪里,走哪條線路"

  答:電信用戶通過網(wǎng)通IP訪問時,數(shù)據(jù)到達了服務(wù)器上,本應(yīng)該從網(wǎng)通的線路返回的,但最終卻從電信的線路出去了,這樣的數(shù)據(jù)會被上層網(wǎng)關(guān)丟棄。

  此時需要加入 "原路返回路由" ,實現(xiàn) "從哪條線來的,依然從哪條線返回"。

  2. 外網(wǎng)用戶不能交叉訪問映射后的內(nèi)網(wǎng)服務(wù)器

  即:電信用戶可以通過電信IP訪問到內(nèi)網(wǎng)服務(wù)器,網(wǎng)通用戶可以通過網(wǎng)通IP訪問到內(nèi)網(wǎng)服務(wù)器

  但是:網(wǎng)通用戶不能通過電信IP訪問到內(nèi)網(wǎng)服務(wù)器,電信用戶也不能網(wǎng)通IP訪問到內(nèi)網(wǎng)服務(wù)器

  答:路由緩存引起的,給內(nèi)核打補丁,或每隔 2 秒左右刷新路由緩存

  3. 內(nèi)網(wǎng)用戶不能通過外網(wǎng)IP訪問內(nèi)網(wǎng)服務(wù)器

  答:a. 沒有做SNAT(端口回流),加入回流規(guī)則即可

  b. 加入 "原路返回路由" 時,沒有將局域網(wǎng)的路由加入進去

關(guān)鍵詞標簽:雙線策略路由

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 路由器地址大全-各品牌路由設(shè)置地址 路由器地址大全-各品牌路由設(shè)置地址 各品牌的ADSL與路由器出廠默認IP、帳號、密碼 各品牌的ADSL與路由器出廠默認IP、帳號、密碼 Nslookup命令詳解-域名DNS診斷 Nslookup命令詳解-域名DNS診斷 站長裝備:十大網(wǎng)站管理員服務(wù)器工具軟件 站長裝備:十大網(wǎng)站管理員服務(wù)器工具軟件

相關(guān)下載

    人氣排行 各品牌的ADSL與路由器出廠默認IP、帳號、密碼 路由器地址大全-各品牌路由設(shè)置地址 騰達路由器怎么設(shè)置?騰達路由器設(shè)置教程 ADSL雙線負載均衡設(shè)置詳細圖文教程 路由表說明(詳解route print) Nslookup命令詳解-域名DNS診斷 網(wǎng)管員實際工作的一天 網(wǎng)管必會!了解交換機控制端口流量