Cisco路由基礎:雙線策略路由的三種實現(xiàn)方式總結+端口映射
參考了下網(wǎng)上關于電信+網(wǎng)通雙線策略路由的帖子,并結合實際環(huán)境,將實現(xiàn)雙線策略路由的幾種方式總結如下,希望對有需要的朋友有所幫助,雙線比單線要復雜多了,但把策略路由的原理弄明白了,就會發(fā)現(xiàn)其實并不難。
服務器(網(wǎng)關):
eth0 為LAN口,IP為 LAN_IP = 192.168.0.1
eth1 為第一個WAN口,接電信線路,IP為 CTC_IP,網(wǎng)關為 CTC_GW
eth2 為第二個WAN口,接網(wǎng)通線路,IP為 CNC_IP,網(wǎng)關為 CNC_GW
內(nèi)網(wǎng)網(wǎng)站
HTTP_SERVER = 192.168.0.100
內(nèi)核打補丁
如果你希望外網(wǎng)用戶,不管通過哪個IP都可以訪問到服務器或映射后的內(nèi)網(wǎng)服務器,那么你就需要為內(nèi)核打上補丁,
補丁可以下載到,在 Static, Alternative Routes, Dead Gateway Detection, NAT 找和內(nèi)核對應的 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) 設置默認路由,比如電信
ip route replace default via 電信網(wǎng)關 dev eth1
2) 設置策略路由,對另外一條線路
ip route add 網(wǎng)通路由表1 via 網(wǎng)通網(wǎng)關 dev eth2 metric 1
ip route add 網(wǎng)通路由表2 via 網(wǎng)通網(wǎng)關 dev eth2 metric 1
…
3) 添加原路返回路由
策略路由規(guī)則設置完后,還要為每條線路加入相應的 "原路返回路由"(從哪條線進來的數(shù)據(jù),最終還是從這條線出去),不然就會出現(xiàn)這樣的問題:
電信用戶通過網(wǎng)通的IP訪問不到服務器,網(wǎng)通用戶也不能通過電信IP訪問到服務器
ip route flush table 100
ip route add default via 電信網(wǎng)關 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)關 dev eth2 src 網(wǎng)通IP table 200 prio 50
ip rule add from 網(wǎng)通IP table 200
出來加入本身的原路返回路由之外,還應加入局域網(wǎng)接口的,不然通過端口映射后,內(nèi)網(wǎng)無法通過外網(wǎng)IP訪問到映射后的服務器
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)設置默認路由(電信)
ip route replace default via 電信網(wǎng)關 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
…
3)添加原路返回路由
ip route flush table ctc
ip route add default via 電信網(wǎng)關 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)關 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
轉發(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)關 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)關 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)服務器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訪問映射后的服務器)
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ī)則應放到 NAT 規(guī)則之前
常見問題(FAQ)
1. 不能實現(xiàn) "交叉訪問" 到服務器
即:會出現(xiàn)外網(wǎng)電信用戶只能通過電信IP訪問到服務器,而通過網(wǎng)通IP訪問不了;
同理,網(wǎng)通用戶只能通過網(wǎng)通IP訪問到服務器,而通過電信IP卻訪問不了。也就是只是單純地解決了 "內(nèi)網(wǎng)訪問哪里,走哪條線路"
答:電信用戶通過網(wǎng)通IP訪問時,數(shù)據(jù)到達了服務器上,本應該從網(wǎng)通的線路返回的,但最終卻從電信的線路出去了,這樣的數(shù)據(jù)會被上層網(wǎng)關丟棄。
此時需要加入 "原路返回路由" ,實現(xiàn) "從哪條線來的,依然從哪條線返回".
2. 外網(wǎng)用戶不能交叉訪問映射后的內(nèi)網(wǎng)服務器
即:電信用戶可以通過電信IP訪問到內(nèi)網(wǎng)服務器,網(wǎng)通用戶可以通過網(wǎng)通IP訪問到內(nèi)網(wǎng)服務器
但是:網(wǎng)通用戶不能通過電信IP訪問到內(nèi)網(wǎng)服務器,電信用戶也不能網(wǎng)通IP訪問到內(nèi)網(wǎng)服務器
答:路由緩存引起的,給內(nèi)核打補丁,或每隔 2 秒左右刷新路由緩存
3. 內(nèi)網(wǎng)用戶不能通過外網(wǎng)IP訪問內(nèi)網(wǎng)服務器
答:a. 沒有做SNAT(端口回流),加入回流規(guī)則即可
b. 加入 "原路返回路由" 時,沒有將局域網(wǎng)的路由加入進去
深入探討
1. 上述三種方式哪一種效率最高? 如何來評估 ?
2. 雙線失效保護,即掉線自動切換的實現(xiàn)(定時探測每條線路的連通性)
3. 通過VPN方式實現(xiàn)虛擬雙線,即傳說中的"借線"
4. 內(nèi)網(wǎng)訪問指定外網(wǎng)IP時走指定線路,指定內(nèi)網(wǎng)IP上網(wǎng)走指定線路
以上就是關于雙線策略路由的三種實現(xiàn)方式總結和端口映射的一些常見問題,謝謝閱讀,希望能幫到大家,請繼續(xù)關注腳本之家,我們會努力分享更多優(yōu)秀的文章。
相關文章

售價599元起! 華為路由器X1/Pro發(fā)布 配置與區(qū)別一覽
華為路由器X1/Pro發(fā)布,有朋友留言問華為路由X1和X1 Pro怎么選擇,關于這個問題,本期圖文將對這二款路由器做了期參數(shù)對比,大家看看哪款才是你的理想選擇2025-04-17
路由器無法上網(wǎng)怎么辦? 四大常見問題故障與解決方案
路由器安裝以后發(fā)現(xiàn)不能上網(wǎng),這可能是由于路由器未撥號、MAC地址綁定等原因所致,下面我們就來看看詳細解決辦法2025-04-09
在現(xiàn)代生活中,路由器已成為我們工作和生活的必需品,然而,當路由器出現(xiàn)問題時,我們往往束手無策,本文將為您提供一套實用的路由器故障排除指南,助您輕松應對各種常見問2025-04-09
支持觸屏的軟路由? GL.iNe BE3600路由器拆機評測
GL.iNet廣聯(lián)智通推出的Wi-Fi 7便攜式無線路由器Slate 7橫空出世,網(wǎng)速直接起飛!這速度,快到你懷疑人生!但問題來了,這玩意兒真有那么神?詳細請看下文測評2025-03-31
TPLINK TL7DR7260 v2.0和v1.0有什么區(qū)別? 兩款路由器拆機測評
TL-7DR7260易展版有兩個版本,分別是v2.0和v1.0,這兩個版本有什么區(qū)別?下面我們就來看看詳細的拆機對比2025-03-31
CPU決定了不能給你10G口! TP-LINK TL-7DR7280路由器拆機測評
實力與顏值并存的TP-Link TL-7DR7280易展Turbo版以夠用問準則,是目前市面上好評非常多、用戶群體非常廣的一款無線路由器,性能穩(wěn)定,功能強悍,給你最可靠的網(wǎng)絡2025-03-31
高性價比WiFi6路由+全屋覆蓋穿墻王! 網(wǎng)件RAX50路由器全面測評
網(wǎng)件RAX50路由器表現(xiàn)如何?確實,它以穩(wěn)定高速的傳輸能力,讓無線連接體驗變得輕松愉快,詳細測評數(shù)據(jù)如下圖文所述2025-03-15
WiFi6時代來臨! 華三H3C NX54路由器還值得購買嗎?
WiFi6時代已經(jīng)來臨,眾多路由器廠商也紛紛推出了兼容WiFi6協(xié)議的路由器,今天我們將深入體驗H3C NX54路由器,這款由知名企業(yè)H3C新華三集團推出的家用路由器2025-03-14
玩游戲最怕什么?當然是卡頓!延遲!關鍵時刻掉線簡直心態(tài)爆炸,該怎么選電競路由器呢?路由器這玩意兒,可不是越貴越好,適合自己的才是王道,下面我們推薦八款適合玩游戲2025-03-14
FiberHome 5G CPE移動路由器值得入手嗎? 烽火5g路由器性能測評
FiberHome烽火 5G CPE移動路由器支持雙模4G/5G全網(wǎng)通,支持WiFi 6雙頻,配備雙千兆網(wǎng)口,無線速率高達1800Mbps,這款路由器性能如何?值得購買嗎?詳細如下2025-03-14











