查看: 24020|回复: 85
IP策略分流(国内外分流、运营商分流等)和源进源出在openwrt上的实现
火
[复制链接]
ylg
ylg
当前离线
积分394
IP卡
狗仔卡
电梯直达
1#
发表于 2023-6-16 14:10
|
只看该作者
|倒序浏览
|阅读模式
本帖最后由 ylg 于 2023-6-29 08:55 编辑
网络环境:多wan口openwrt X86软路由,电信+联通pppoe接入,动态公网IP,内网部署NAS备份数据+下载思考资料+流媒体服务;
诉求:1、策略分流(电信走电信,联通走联通,国内负载均衡,海外走联通(联通国际出口负载低));2、外网访问内网流媒体服务+备份数据回传,外网电信IP走电信wan口,其它走联通wan口。
IP策略分流(国内外分流、运营商分流等):1、使用WMAN3实现IP策略分流,基本配置网上教程一大堆不必重复,需要注意如下:网络-接口设置里,wan接口高级设置里的网关跃点每条线路需要设置不同数字,数字越小该线路的优先级越高;MWAN全局菜单-本地源接口选项选择lan;MWAN成员的跃迁点数和比重根据带宽实际情况按比列设置数字;规则从上到下匹配,匹配成功后下面的规则被忽略,不符合任何规则的流量使用主路由表进行路由,所以根据实际情况调整规则上下位置及其重要。
2、精准的IP策略分流依赖于准确的IP数据库,经过研究比对,择优选用了gaoyifan的开源项目:https://github.com/gaoyifan/china-operator-ip,感谢作者的贡献。实现办法如下:添加计划任务,于每天凌晨2点更新IP数据库,并执行各个脚本,如下:
0 2 */1 * * cd /etc/ipset-rules2 && wget -m -c -t 10 -T 60 -N https://gaoyifan.github.io/china-operator-ip/ && sh genrules.sh && ipset flush && sh /etc/ipset-rules2/china.sh && sh /etc/ipset-rules2/china6.sh && sh /etc/ipset-rules2/chinanet.sh && sh /etc/ipset-rules2/chinanet6.sh && sh /etc/ipset-rules2/unicom.sh && sh /etc/ipset-rules2/unicom6.sh && /etc/init.d/mwan3 restart#wget镜像更新IP数据库,得到最新国内各ISP广播使用的IP段:wget -m -c -t 10 -T 60 -N https://gaoyifan.github.io/china-operator-ip/
#genrules.sh是将更新后的IP数据(txt文件)转换为ipset注入的shell脚本,genrules.sh内容如下:#!/bin/bashcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/china.txt | awk '{print "ipset add china " $0}' | cat > /etc/ipset-rules2/china.shsed -i '1s/^/#!\/bin\/bash\nipset create china hash:net hashsize 16384 maxelem 262144\n/' /etc/ipset-rules2/china.shchmod +x /etc/ipset-rules2/china.shcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/china6.txt | awk '{print "ipset add china6 " $0}' | cat > /etc/ipset-rules2/china6.shsed -i '1s/^/#!\/bin\/bash\nipset create china6 hash:net family inet6 hashsize 4096\n/' /etc/ipset-rules2/china6.shchmod +x /etc/ipset-rules2/china6.shcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/chinanet.txt | awk '{print "ipset add chinanet " $0}' | cat > /etc/ipset-rules2/chinanet.shsed -i '1s/^/#!\/bin\/bash\nipset create chinanet hash:net hashsize 16384 maxelem 262144\n/' /etc/ipset-rules2/chinanet.shchmod +x /etc/ipset-rules2/chinanet.shcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/chinanet6.txt | awk '{print "ipset add chinanet6 " $0}' | cat > /etc/ipset-rules2/chinanet6.shsed -i '1s/^/#!\/bin\/bash\nipset create chinanet6 hash:net family inet6 hashsize 4096\n/' /etc/ipset-rules2/chinanet6.shchmod +x /etc/ipset-rules2/chinanet6.shcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/unicom.txt | awk '{print "ipset add unicom " $0}' | cat > /etc/ipset-rules2/unicom.shsed -i '1s/^/#!\/bin\/bash\nipset create unicom hash:net hashsize 16384 maxelem 262144\n/' /etc/ipset-rules2/unicom.shchmod +x /etc/ipset-rules2/unicom.shcat /etc/ipset-rules2/gaoyifan.github.io/china-operator-ip/unicom6.txt | awk '{print "ipset add unicom6 " $0}' | cat > /etc/ipset-rules2/unicom6.shsed -i '1s/^/#!\/bin\/bash\nipset create unicom6 hash:net family inet6 hashsize 4096\n/' /etc/ipset-rules2/unicom6.shchmod +x /etc/ipset-rules2/unicom6.sh
#注入ip条目前,清空ipset中所有集合的ip条目:ipset flush然后就是逐个运行ipset注入脚本,之后重启mwan3。
#由于ipset运行于内存中,路由器重启后失效,所以需要添加开机脚本,在系统-启动项-本地启动脚本 'exit 0' 之前写入:sh /etc/ipset-rules2/china.shsh /etc/ipset-rules2/china6.shsh /etc/ipset-rules2/chinanet.shsh /etc/ipset-rules2/chinanet6.shsh /etc/ipset-rules2/unicom.shsh /etc/ipset-rules2/unicom6.sh/etc/init.d/mwan3 restart
之后,在mwan规则菜单里,ipset项填上对应的集合名称,选好分配策略即可,下图示例为电信线路ipv4规则,所有访问电信ipv4的流量都走电信wan口:
至此,完成了内网访问互联网的IP策略分流。
源进源出:
实现源进源出的方法是给不同线路进来的访问流量打标签(参考:https://blog.csdn.net/yk_wing4/article/details/90474164),然后匹配对应的路由表,原路返回数据:在防火墙-自定义规则里加入如下规则,对新建流打上标签:
#从电信线路进来的流量打上标签0x1100/0xff00iptables -t mangle -A PREROUTING -i pppoe-wan_CT -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x1100/0xff00
#从联通线路进来的流量打上标签0x2200/0xff00iptables -t mangle -A PREROUTING -i pppoe-wan_CU -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x2200/0xff00#对任意方向的报文,从 ct->mark(连接跟踪标签)拷贝到 skb->mark(报文标签)iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --ctmask 0xff00 --nfmask 0xff00#策略路由:源地址 是 192.168.11.0/24 并且 打上 00x1100/0xff00 标签 的报文 使用路由表1(MWAN3已将电信出口的路由写入table 1)ip rule add from 192.168.11.0/24 fwmark 0x1100/0xff00 table 1#策略路由:源地址 是 192.168.11.0/24 并且 打上 00x2200/0xff00 标签 的报文 使用路由表2(MWAN3已将联通出口的路由写入table 2)ip rule add from 192.168.11.0/24 fwmark 0x2200/0xff00 table 2
配置好后查看路由规则如下:
至此,外网访问内网即可原路返回,避免A wan口请求的数据从B wan口回去。
路由器openwrt
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
分享到:
QQ好友和群
QQ空间
收藏28
分享
支持0
反对0
相关帖子
• BE10000(RC01)的QWRT NFC功能实现
• (已成功)求助求助,路由器是AX3000E,想要开启SSH来通过命令绑定arp
• opwnrt路由一样可以socls5单机单ip
• Quantum Fiber W1700K路由器已经适配OpenWrt官方固件
• h3c zeroWrt uboot
• ROCK 3A OPENWRT
• 求推荐一个有2.5口的wifi7能刷openwrt的路由器
• K2P现在用哪个OpenWrt
• 华硕 Lyra MAP-AC2200刷openwrt教程2026年1月27日
• 在openwrt.ai上定制的openwrt直刷玩客云后不能正常使用,有大侠知道怎么弄吗?
• 求K2P openwrt chaos_calmer V1.7 正式版发布
• openwrt搭配5G通信壳有公网ipv6吗?
• 蒲公英x1pro 能刷cudy tr3000的openwrt固件嗎
• 红米AX6S刷了Openwrt之后没mesh有大佬知道怎么开吗
• 今天入手了一个CMCC的RAX3000M,通过努力,刷入了openwrt,使用中继,感觉速度没提升
• tplink5620能刷openwrt吗
• 求助大佬,N1盒子刷了openwrt系统,设置无线中继失败!
• 【新人求助】N1盒子Openwrt旁路由无法上网问题
• 请教下各位N1 OPENWRT用久了出现这几个问题怎么解决
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
置顶卡
沉默卡
喧嚣卡
顶贴卡
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
2#
发表于 2023-6-16 15:09
|
只看该作者
我的openwrt官方版本iptables命令好像用不了
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
点评
ylg
试试升级下版本呢
详情
回复
发表于 2023-6-16 15:11
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
ylg
ylg
当前离线
积分394
IP卡
狗仔卡
3#
楼主|
发表于 2023-6-16 15:11
|
只看该作者
wind333 发表于 2023-6-16 15:09
我的openwrt官方版本iptables命令好像用不了
试试升级下版本呢
点评
wind333
已经是官方最新版了,看了下好像命令改了尝试了下没有报错。 iptables -t mangle -A PREROUTING -i pppoe-wan -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x1100/0xff00
iptables -t mangle -A PREROUTING
详情
回复
发表于 2023-6-16 15:27
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
4#
发表于 2023-6-16 15:18
|
只看该作者
大佬方便加个微信吗
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
5#
发表于 2023-6-16 15:27
|
只看该作者
ylg 发表于 2023-6-16 15:11
试试升级下版本呢
已经是官方最新版了,看了下好像命令改了尝试了下没有报错。 iptables -t mangle -A PREROUTING -i pppoe-wan -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x1100/0xff00
iptables -t mangle -A PREROUTING -i pppoe-vwan0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x2200/0xff00
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
6#
发表于 2023-6-16 15:32
|
只看该作者
大佬能远程帮我看下吗源进源出的问的吗?付费也可以
点评
ylg
我也是参考:https://blog.csdn.net/yk_wing4/article/details/90474164这个来设置的,目前工作正常无异常,建议多看下这个链接。
详情
回复
发表于 2023-6-16 15:42
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
lengyi
lengyi
当前离线
积分244
IP卡
狗仔卡
7#
发表于 2023-6-16 15:36
|
只看该作者
感谢分享!!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
8#
发表于 2023-6-16 15:41
|
只看该作者
这是按照你的命令执行完后结果,然后测试了下外网访问流量还是没有源进源出。
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
点评
ylg
貌似table 1和 table 2混一起了,检查下mwan3设置,按理这2张表各自对应一个wan口
详情
回复
发表于 2023-6-16 15:56
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
ylg
ylg
当前离线
积分394
IP卡
狗仔卡
9#
楼主|
发表于 2023-6-16 15:42
|
只看该作者
wind333 发表于 2023-6-16 15:32
大佬能远程帮我看下吗源进源出的问的吗?付费也可以
我也是参考:https://blog.csdn.net/yk_wing4/article/details/90474164这个来设置的,目前工作正常无异常,建议多看下这个链接。
点评
wind333
能否帮我看下,这块看不懂,知识付费。
详情
回复
发表于 2023-6-16 16:00
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
ylg
ylg
当前离线
积分394
IP卡
狗仔卡
10#
楼主|
发表于 2023-6-16 15:56
|
只看该作者
wind333 发表于 2023-6-16 15:41
这是按照你的命令执行完后结果,然后测试了下外网访问流量还是没有源进源出。
...
貌似table 1和 table 2混一起了,检查下mwan3设置,按理这2张表各自对应一个wan口
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wind333
wind333
当前离线
积分578
IP卡
狗仔卡
11#
发表于 2023-6-16 16:00
|
只看该作者
ylg 发表于 2023-6-16 15:42
我也是参考:https://blog.csdn.net/yk_wing4/article/details/90474164这个来设置的,目前工作正常无异 ...
能否帮我看下,这块看不懂,知识付费。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
suifeng260940
suifeng260940
当前离线
积分237
IP卡
狗仔卡
12#
发表于 2023-6-16 16:34
|
只看该作者
111111111111111111
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
小熊仔
小熊仔
当前离线
积分730
IP卡
狗仔卡
13#
发表于 2023-6-16 22:32
|
只看该作者
谢谢分享!!!!!!!!!!!!!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
wulishui
wulishui
当前离线
积分8519
IP卡
狗仔卡
14#
发表于 2023-6-16 22:53
|
只看该作者
本帖最后由 wulishui 于 2023-6-17 01:12 编辑
看了下,准备做个东西代替掉万年古坟 mwan3helper
粗略调了下没发现什么错误,过几天再看看
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
点评
Zephiris
大佬,等待啊!
发表于 2023-11-29 15:23
caolei3721
你这个Openwrt用的什么版本啊,mwan3helper为什么有IPset选项卡啊
详情
回复
发表于 2023-8-2 20:24
小熊仔
等大神发布
详情
回复
发表于 2023-6-17 18:53
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
小熊仔
小熊仔
当前离线
积分730
IP卡
狗仔卡
15#
发表于 2023-6-17 18:53
|
只看该作者
wulishui 发表于 2023-6-16 22:53
看了下,准备做个东西代替掉万年古坟 mwan3helper
粗略调了下没发现什么错误,过几天再看看
等大神发布
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡