Cisco路由基礎:雙線策略路由的三種實現方式總結+端口映射
參考了下網上關于電信+網通雙線策略路由的帖子,并結合實際環(huán)境,將實現雙線策略路由的幾種方式總結如下,希望對有需要的朋友有所幫助,雙線比單線要復雜多了,但把策略路由的原理弄明白了,就會發(fā)現其實并不難。
服務器(網關):
eth0 為LAN口,IP為 LAN_IP = 192.168.0.1
eth1 為第一個WAN口,接電信線路,IP為 CTC_IP,網關為 CTC_GW
eth2 為第二個WAN口,接網通線路,IP為 CNC_IP,網關為 CNC_GW
內網網站
HTTP_SERVER = 192.168.0.100
內核打補丁
如果你希望外網用戶,不管通過哪個IP都可以訪問到服務器或映射后的內網服務器,那么你就需要為內核打上補丁,
補丁可以下載到,在 Static, Alternative Routes, Dead Gateway Detection, NAT 找和內核對應的 patch下載后為內核打上,然后在
Networking ---> Networking options ---> IP: advanced router
把 IP: equal cost multipath with caching support (EXPERIMENTAL) 前面的勾去掉
如果你不想打補丁,或不想動內核,有個簡單的辦法來實現,即寫一個腳本,每隔2秒鐘刷新一次route cache
while : ; do
ip route flush cache
sleep 2
done
雙線策略的實現
1. 靜態(tài)路由方式(這種方式是最簡單的)
1) 設置默認路由,比如電信
ip route replace default via 電信網關 dev eth1
2) 設置策略路由,對另外一條線路
ip route add 網通路由表1 via 網通網關 dev eth2 metric 1
ip route add 網通路由表2 via 網通網關 dev eth2 metric 1
…
3) 添加原路返回路由
策略路由規(guī)則設置完后,還要為每條線路加入相應的 "原路返回路由"(從哪條線進來的數據,最終還是從這條線出去),不然就會出現這樣的問題:
電信用戶通過網通的IP訪問不到服務器,網通用戶也不能通過電信IP訪問到服務器
ip route flush table 100
ip route add default via 電信網關 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 網通網關 dev eth2 src 網通IP table 200 prio 50
ip rule add from 網通IP table 200
出來加入本身的原路返回路由之外,還應加入局域網接口的,不然通過端口映射后,內網無法通過外網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,網通 => 200,這樣再添加規(guī)則時,就可以直接用自定義的名稱來替代數字
echo "100 ctc" 》 /etc/iproute2/rt_tables
echo "200 cnc" 》 /etc/iproute2/rt_tables
1)設置默認路由(電信)
ip route replace default via 電信網關 dev eth1
2)對網通進行基于目的地址的策略路由
ip rule add to 網通路由表1 table cnc prio 100
ip rule add to 網通路由表2 table cnc prio 100
…
3)添加原路返回路由
ip route flush table ctc
ip route add default via 電信網關 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 網通網關 dev eth2 src 網通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 網通IP table cnc
3. iptables打標記+iproute2 fwmark
1)使用 CONNMARK 對連接進行標記
外網進來數據
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ā)出去的數據
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
局域網進來數據
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
本地出去數據
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 電信網關 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 網通網關 dev eth2 table cnc
Iptables/NAT 規(guī)則
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 局域網網段 -j SNAT --to-source 電信外網IP
/sbin/iptables -t nat -A POSTROUTING -o eth2 -s 局域網網段 -j SNAT --to-source 網通外網IP
如果外網IP是動態(tài)的,可以用 MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 局域網網段 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth2 -s 局域網網段 -j MASQUERADE
端口映射
端口映射可以分別針對兩條線做端口映射
比如 LAN口的IP為 192.168.0.1,內網服務器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 網通IP -j DNAT --to-destination 192.168.0.100
端口回流(內網可以通過外網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. 不能實現 "交叉訪問" 到服務器
即:會出現外網電信用戶只能通過電信IP訪問到服務器,而通過網通IP訪問不了;
同理,網通用戶只能通過網通IP訪問到服務器,而通過電信IP卻訪問不了。也就是只是單純地解決了 "內網訪問哪里,走哪條線路"
答:電信用戶通過網通IP訪問時,數據到達了服務器上,本應該從網通的線路返回的,但最終卻從電信的線路出去了,這樣的數據會被上層網關丟棄。
此時需要加入 "原路返回路由" ,實現 "從哪條線來的,依然從哪條線返回".
2. 外網用戶不能交叉訪問映射后的內網服務器
即:電信用戶可以通過電信IP訪問到內網服務器,網通用戶可以通過網通IP訪問到內網服務器
但是:網通用戶不能通過電信IP訪問到內網服務器,電信用戶也不能網通IP訪問到內網服務器
答:路由緩存引起的,給內核打補丁,或每隔 2 秒左右刷新路由緩存
3. 內網用戶不能通過外網IP訪問內網服務器
答:a. 沒有做SNAT(端口回流),加入回流規(guī)則即可
b. 加入 "原路返回路由" 時,沒有將局域網的路由加入進去
深入探討
1. 上述三種方式哪一種效率最高? 如何來評估 ?
2. 雙線失效保護,即掉線自動切換的實現(定時探測每條線路的連通性)
3. 通過VPN方式實現虛擬雙線,即傳說中的"借線"
4. 內網訪問指定外網IP時走指定線路,指定內網IP上網走指定線路
以上就是關于雙線策略路由的三種實現方式總結和端口映射的一些常見問題,謝謝閱讀,希望能幫到大家,請繼續(xù)關注腳本之家,我們會努力分享更多優(yōu)秀的文章。
相關文章

網絡延遲幾分鐘就斷? 路由器剛接核心交換機正常幾分鐘后無法上網解決辦
最近一位小伙伴被信息化項目里的網絡怪象逼到破防:核心交換機上聯路由器后,前幾分鐘一切正常,隨后延遲飆升,最后直接斷網,下面我們就來看看原因分析和解決辦法2026-04-13
雙萬兆+四個2.5G口BE7200無線路由器! 普聯TPLINK 7DR7299拆機測評
今天我們要拆機的TP-LINK“7DR7299”BE7200雙萬兆路由器標價999元,沒走“八爪魚”電競風,而是給了一枚黑銀配色的小方盒,放在玄關、電視柜都不突兀2026-04-10
首發(fā)價999元! 雙萬兆版路由器普聯BE7200發(fā)布
普聯BE7200萬兆路由器,搭載雙萬兆接口與WiFi7技術,高性能硬件配置提升大戶型家庭網絡覆蓋穩(wěn)定性,詳細配置請看下文介紹2026-03-16
這五個開關是現代Wi-Fi 6和Wi-Fi 7路由器中關鍵的性能增強功能,它們分別從信號定向、頻譜效率、多設備并發(fā)、抗干擾和省電調度等維度提升網絡體驗2026-02-25
679元萬兆光口+滿血2.5G全家桶! 簡析中興BE7200 MAX路由器是否值得購買
當千兆寬帶尚未普及,中興已經將萬兆路由器價格拉至679元,這不是一場簡單的價格戰(zhàn),而是對未來的大膽預判與市場規(guī)則的重新定義2026-02-06
中興問天BE7200Pro+路由器新舊兩個版本有什么區(qū)別? 兩版拆機對比
中興問天BE7200Pro+路由器新版本和舊版本呢差別在換了FEM芯片,很多朋友想知道有多大差別,詳細請看下文介紹2026-02-05
滿血堆料Wifi7路由器! 中興問天BE7200MAX拆機評測
問天BE7200 MAX的一大特點就是國產自主,主控芯片查了下好像是中興自研 ZX279133(8核64線程 NPU),搭配1GB內存和256MB閃存,下面我們就來看看拆機測評2026-02-05
TP-LINK TL-7AP3622HI無線AP值得購買嗎? TL-7AP3622HI拆機
TL-7AP3622HI是一款BE3600雙頻Wi-Fi 7無線面板式AP,全新雙2.5G BE3600面板AP,前后網口均支持2.5G,下面我們就來看看拆解測評2026-02-05
路由器發(fā)熱發(fā)燙正常嗎? 路由器發(fā)熱問題的原因分析和解決辦法
與運行時機箱發(fā)熱的原理相似,路由器作為一臺“小型專用電腦”,在其工作過程中必然會產生一定的熱量,然而,是否正常發(fā)熱并不僅僅取決于發(fā)熱本身,更關鍵的是要關注發(fā)熱的2026-01-14
諾基亞貝爾XG-040G-MD光貓均具備一個2.5G網口,同時配備USB3.0和USB2.0接口,但遺憾的是,它并不具備電話口和WIFI功能,下面我們就來看看詳細側測評2025-12-15











