Cisco路由基础:双线策略路由的三种实现方式总结+端口映射
参考了下网上关于电信+网通双线策略路由的帖子,并结合实际环境,将实现双线策略路由的几种方式总结如下,希望对有需要的朋友有所帮助,双线比单线要复杂多了,但把策略路由的原理弄明白了,就会发现其实并不难。
服务器(网关):
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. 静态路由方式(这种方式是最简单的)
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) 添加原路返回路由
策略路由规则设置完后,还要为每条线路加入相应的 "原路返回路由"(从哪条线进来的数据,最终还是从这条线出去),不然就会出现这样的问题:
电信用户通过网通的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,这样再添加规则时,就可以直接用自定义的名称来替代数字
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
转发出去的数据
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 规则
/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是动态的,可以用 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
[注]:上述规则应放到 NAT 规则之前
常见问题(FAQ)
1. 不能实现 "交叉访问" 到服务器
即:会出现外网电信用户只能通过电信IP访问到服务器,而通过网通IP访问不了;
同理,网通用户只能通过网通IP访问到服务器,而通过电信IP却访问不了。也就是只是单纯地解决了 "内网访问哪里,走哪条线路"
答:电信用户通过网通IP访问时,数据到达了服务器上,本应该从网通的线路返回的,但最终却从电信的线路出去了,这样的数据会被上层网关丢弃。
此时需要加入 "原路返回路由" ,实现 "从哪条线来的,依然从哪条线返回".
2. 外网用户不能交叉访问映射后的内网服务器
即:电信用户可以通过电信IP访问到内网服务器,网通用户可以通过网通IP访问到内网服务器
但是:网通用户不能通过电信IP访问到内网服务器,电信用户也不能网通IP访问到内网服务器
答:路由缓存引起的,给内核打补丁,或每隔 2 秒左右刷新路由缓存
3. 内网用户不能通过外网IP访问内网服务器
答:a. 没有做SNAT(端口回流),加入回流规则即可
b. 加入 "原路返回路由" 时,没有将局域网的路由加入进去
深入探讨
1. 上述三种方式哪一种效率最高? 如何来评估 ?
2. 双线失效保护,即掉线自动切换的实现(定时探测每条线路的连通性)
3. 通过VPN方式实现虚拟双线,即传说中的"借线"
4. 内网访问指定外网IP时走指定线路,指定内网IP上网走指定线路
以上就是关于双线策略路由的三种实现方式总结和端口映射的一些常见问题,谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。
相关文章
国产Wi-Fi 7路由器用上歼20通讯高科技!锐捷天蝎龙勃版BE68 Ultra测评
锐捷最新发布的新款Wi-Fi 7家用无线路由器锐捷天蝎龙勃版,即BE68 Ultra Wi-Fi 7路由器,采用了歼20战斗机上面的龙勃透镜天线技术,大幅提升无线路由器的无线覆盖能力,下2024-10-14569元! 锐捷推出天蝎龙勃版 BE68 Ultra 双频 6800M 电竞路由器
锐捷科技在京东正式推出其最新款双频6800M电竞路由器——天蝎龙勃版 BE68 Ultra,售价为569元,这款路由器的发布,将为广大的游戏爱好者和高带宽需求用户提供全新的选择,2024-10-14手机怎么查看无线路由器是否支持kvr、mu-mimo、4096-QAM和MLO?
想要使用手机查看路由器是否kvr、mu-mimo、4096-QAM和MLO,该怎么查看呢?下面我们就来看看详细的教程2024-10-08华为BE7和BE7 Pro有什么区别? 华为BE7路由器拆机测评
华为全新高端Wi-Fi 7路由 BE7系列正式与大家见面,通过全方位升级为用户带来“快又稳”的上网体验,今天我们就来看看华为BE7和BE7 Pro的区别测评2024-10-08- 如何才能让自己的宿舍生活拥有顺畅、稳定的良好网络环境,充分满足学习、娱乐、工作需求呢?收好这份路由器使用指南,宿舍上网冲浪没烦恼2024-09-30
CPU不是6nm制程? TPLINK 7DR7250 WiFi7无线路由器拆机测评
TP-LINK 再次以技术创新引领行业潮流,隆重推出了7DR7250 易展版内置天线无线路由器,这款集高性能、易部署、广覆盖于一体的新品,不仅标志着家庭及小型办公网络迈入了全新2024-09-30BE6500无线路由器不支持MLO开关? 华为BE7 Pro拆机测评
华为路由BE7系列是华为首款搭载飓风散热的Wi-Fi 7路由器,但华为BE7 Pro没有了NFC,下面我们就来看看这款路由器的拆机测评2024-09-30tplink-R5010PE-EN全2.5G POE一体机路由器拆机测评
P-LINK TL-R5010PE-EN 路由器2.5G交换机一体值得购买吗?下面我们就来看看这款路由器的详细拆机测评2024-09-23tplink-R5010PE-AC v2.0与旧版v1.1差别在哪? 路由器拆机对比
TP-LINK普联科技PoE·AC一体机TL-R5010PE-AC V2.0等了很久,一直没有发现网上有拆机帖子,下面我们就来看看详细的拆机测评2024-09-23比R5408PE少了2个千兆口值得吗? TL-R5406PE-AC路由器拆机测评
对于偏大户型、建筑布局复杂的用户,仅靠一台路由器很难获得良好的Wi-Fi覆盖效果,今天我们来看看一款家用商用企业级路由器TL-R5406PE-AC拆机测评2024-09-23
最新评论