找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2241|回复: 6

请问一下,目前有OP可以实现多线IPv6分流、UPNP指定Wan出口的版本吗?

[复制链接]
发表于 2023-5-29 11:24 | 显示全部楼层 |阅读模式
坐标浙江,电信,现在是单线5拨,挂了5个点心云虚拟机,主路由用的是爱快。

现在爱快要出多线IPv6功能的,但是需要订阅使用,9.9元/线/月。
我现在想用OP代替掉爱快,但现在的主要障碍有两个:1、多线IPv6的分流,很多年前搞过,现在已经忘了;2、多线UPNP,这个是真不知道该如何处理。
请问有大佬可以指导一下吗?可以付费~
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2023-5-29 18:18 | 显示全部楼层
本帖最后由 阿泥基 于 2023-5-29 21:18 编辑

多线IPv6分流用NAT6+MWAN3就可以实现
但多线IPv6分流如果不使用ULA(局域网地址),也就是你想下面的设备直接分配到公网地址后再做分流的话,需要根据出口对前缀进行地址转换,这需要使用支持netmap的nftables或iptables
官方OP在22.03防火墙升级为Firewall 4,默认使用nftables并支持netmap
之前的版本理论上也可以手动安装启用nftables,但太老的版本可能不支持netmap
iptables应该也支持netmap,但我没实测所以不确定

多线UPNP也可以实现但是配置有点麻烦,需要同时启用多个实例和指定不同地址,然而OP上的UPNP还有些莫名其妙的问题(官方OP本来就很不推荐UPNP)
我一开始也搞了一下,能实现但是日志经常报错,最后直接配置DMZ了

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-29 18:47 | 显示全部楼层
本帖最后由 阿泥基 于 2023-6-4 07:11 编辑
  1. #!/bin/sh
  2. ct=$(ifstatus wanct_6 | jsonfilter -e '@["route"][0].source')
  3. cm=$(ifstatus wancm_6 | jsonfilter -e '@["route"][0].source')
  4. nft add table ip6 myrule6
  5. nft create chain ip6 myrule6 srcnat { type nat hook postrouting priority srcnat \; } >>/dev/null 2>&1 || \
  6. nft flush chain ip6 myrule6 srcnat
  7. nft add rule ip6 myrule6 srcnat oifname "pppoe-wanct"  ip6 saddr != $ct snat ip6 prefix to ip6 saddr map { $cm : $ct } || \
  8. nft add rule ip6 myrule6 srcnat oifname "pppoe-wanct" ip6 saddr != $ct masquerade
  9. nft add rule ip6 myrule6 srcnat oifname "pppoe-wancm"  ip6 saddr != $cm snat ip6 prefix to ip6 saddr map { $ct : $cm } || \
  10. nft add rule ip6 myrule6 srcnat oifname "pppoe-wancm" ip6 saddr != $cm masquerade
复制代码

以上是我的IPv6前缀转换脚本,接口名称改成你自己的
22.03以后需要创建脚本文件然后修改防火墙配置,22.03以前的版本(启用了nftables)可以添加到防火墙的自定义规则
向 /etc/config/firewall 添加以下内容
  1. config include
  2.         option path '/usr/nft-nat6.sh'
复制代码

顺便发下我的DMZ脚本
使用方法同上,也可以转为nft格式
* 由于IPv6前缀转换要通过外部命令获取前缀地址,所以只能使用shell脚本 *
  1. #!/bin/sh
  2. nft add table myrule4
  3. nft create chain myrule4 DMZ { type nat hook prerouting priority dstnat + 5 \; } >>/dev/null 2>&1 || \
  4. nft flush chain myrule4 DMZ
  5. nft add rule myrule4 DMZ iifname "pppoe-wanct" tcp dport 1024-65535 dnat ip to 192.168.8.208:1024-65535
  6. nft add rule myrule4 DMZ iifname "pppoe-wanct" udp dport 1024-65535 dnat ip to 192.168.8.208:1024-65535
  7. nft add rule myrule4 DMZ iifname "pppoe-wancm" tcp dport 1024-65535 dnat ip to 192.168.8.218:1024-65535
  8. nft add rule myrule4 DMZ iifname "pppoe-wancm" udp dport 1024-65535 dnat ip to 192.168.8.218:1024-65535
复制代码

如果使用iptables的话,可以把以下规则添加到防火墙的自定义规则
未经测试,不保证效果
  1. ct=$(ifstatus wanct_6 | jsonfilter -e '@["route"][0].source')
  2. cm=$(ifstatus wancm_6 | jsonfilter -e '@["route"][0].source')
  3. ip6tables -t nat -A POSTROUTING -o "pppoe-wanct" -s $cm -j NETMAP --to $ct || \
  4. ip6tables -t nat -A POSTROUTING -o "pppoe-wanct" -j MASQUERADE
  5. ip6tables -t nat -A POSTROUTING -o "pppoe-wancm" -s $ct -j NETMAP --to $cm || \
  6. ip6tables -t nat -A POSTROUTING -o "pppoe-wancm" -j MASQUERADE

  7. iptables -t nat -A PREROUTING -i "pppoe-wanct" -p tcp --dport 1024:65535 -j DNAT --to-destination 192.168.8.208
  8. iptables -t nat -A PREROUTING -i "pppoe-wanct" -p udp --dport 1024:65535 -j DNAT --to-destination 192.168.8.208
  9. iptables -t nat -A PREROUTING -i "pppoe-wancm" -p tcp --dport 1024:65535 -j DNAT --to-destination 192.168.8.218
  10. iptables -t nat -A PREROUTING -i "pppoe-wancm" -p udp --dport 1024:65535 -j DNAT --to-destination 192.168.8.218
复制代码

点评

学习了,感谢实力大佬  详情 回复 发表于 2024-3-1 09:36
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-5-29 19:08 | 显示全部楼层
本帖最后由 阿泥基 于 2023-5-29 21:57 编辑

补充一下,以上只是解决了NAT的问题,实际分流还需要用到MWAN3之类的插件
MWAN3的配置方法有点繁琐,建议自己找资料研究一下
不过MWAN3针对特定设备的多线IPv6分流可能没有现成的文档,我这里就贴出最关键的部分

  1. #!/bin/sh

  2. nft list chain ip6 mangle mwan3_rules | grep '::ffff:ffff:ffff:ffff == ::1111:1111:1111:1111' || \
  3. nft insert rule ip6 mangle mwan3_rules \
  4. ip6 saddr '& ::ffff:ffff:ffff:ffff == ::1111:1111:1111:1111' counter jump mwan3_policy_wancm_only

  5. nft list chain ip6 mangle mwan3_rules | grep '::ffff:ffff:ffff:ffff == ::2222:2222:2222:2222' || \
  6. nft insert rule ip6 mangle mwan3_rules \
  7. ip6 saddr '& ::ffff:ffff:ffff:ffff == ::2222:2222:2222:2222' counter jump mwan3_policy_wanct_only
复制代码


把 ::xxxx:xxxx:xxxx:xxxx 改为你设备的后缀地址(这里假设固定后缀)
mwan3_policy_wanct_only 改为你自己配置的MWAN3策略名称,粘贴到MWAN3的自定义规则(/etc/mwan3.user)中即可
上面脚本只是通过命令方式添加规则,要事先在MWAN3中配置好IPv6的接口成员策略

这里是通过掩码运算来达到单独指定设备后缀的效果
很多人都知道子网掩码的作用,IPv4的/24和IPv6的/64分别对应255.255.255.0(即ff.ff.ff.0)和ffff:ffff:ffff:ffff::,他们的共通点是只标识前缀,所以叫做“子网”掩码
而nftables和iptables都是支持逻辑运算的,因此并不限于子网,用掩码可以标识IP地址(以及任意值)的任意位
这种用法在IPv4中很罕见,但在动态前缀的IPv6环境下就变得非常实用

附上iptables版
我没记错的话fw3重启时会清除规则,所以没有查重
同样是未经测试

  1. #!/bin/sh
  2. ip6tables -A mwan3_rules -s ::1111:1111:1111:1111/::ffff:ffff:ffff:ffff -j mwan3_policy_wanct_only
  3. ip6tables -A mwan3_rules -s ::2222:2222:2222:2222/::ffff:ffff:ffff:ffff -j mwan3_policy_wancm_only
复制代码


只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-6-4 01:38 | 显示全部楼层
谢谢大佬
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-17 09:25 | 显示全部楼层
谢谢大佬的指导!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-3-1 09:36 | 显示全部楼层
阿泥基 发表于 2023-5-29 18:47
以上是我的IPv6前缀转换脚本,接口名称改成你自己的
22.03以后需要创建脚本文件然后修改防火墙配置,22.03 ...

思考了,感谢实力大佬
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-7-25 02:15

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表