救命!关于 openwrt 仅限给单独设备分配 v6 这件事

2022-05-25 20:14:54 +08:00
 woshijidan
首先说说我的设备
广东联通 500M 双栈公网 v4+v6 光猫是已替换的 HS8145V5 GPON (因为旧垃圾联通光猫性能太差 连接数到 3k 就会降速 断流) 实测换光猫后能跑约 18000 左右连接数(可能是宽带 /光猫极限?)

光猫出来网线直插 openwrt 软路由( d2550 )
v6 相关设定

lan 获取到的 v6 是宽带 v6 公网 wan 的 v6 的是 fe80 内网 wanv4 是公网

防火墙相关设定
参考帖子 https://www.v2ex.com/t/664819

光猫 - openwrt 软路由 - AP1 - AP2 (主要无线使用)
目前网络的情况是:设定在 openwrt 防火墙的自定义规则之后,手机 /电脑 过一段时间还是能获取到 ipv6 地址 并且地址是 2408 公网 ip 不过因为设定了防火墙命令后 ipv6 访问是不能访问的 导致电脑打不开网页卡住很久 然后手机显示网络上不了网 wifi 打叉的情况
还漏了什么?
4327 次点击
所在节点    宽带症候群
18 条回复
woshijidan
2022-05-25 20:28:51 +08:00
手机部分补图
wifi 会这样


打开微信 /美团看图会这样
https://imgur.com/a/K8FGDQe
Buges
2022-05-25 20:31:26 +08:00
Openwrt 下 ra 没有使用 radvd ,不支持仅通过单播的方式发送 ra ,所以“仅给单独设备分配 ipv6”是不可能做到的。
除非你使用仅 dhcpv6 的方式,可以为 Android 以外的设备分配地址( Android 不支持纯 dhcpv6 )。
不用看那所谓的防火墙规则,正常情况下 ra/slaac 发送的是“广播”( multicast ), 是向所有设备发出而非某特定地址,所以防火墙是没法单独拦截的。
用防火墙拦截了特定设备的 rs 请求,只能让它刚接入时没有地址。任何其他设备发送 rs 或定时时间一到,路由器发出 ra 后所有设备都能获得地址。
woshijidan
2022-05-25 20:40:10 +08:00
@Buges 也就说果断时间强制下发 v6 地址,然后手机获取到 v6 地址后就检测是否能用,不能用就直接 t 出去 wifi 这样吗?不单只是手机,电脑获取到的 v6 也是时不时断网状态 那这样看来 无解了 只能是 v6 全开了
Buges
2022-05-25 20:45:40 +08:00
@woshijidan 你手机具体什么行为我就不清楚了,不过一般 Android 系统默认 v6 优先,只要获得了 v6 就会优先使用,如果 v6 还被 ban 了那对网络请求延时会有明显影响。
主要原因还是 slaac 的无状态,dhcp 这种有状态协议拿到地址要确认一下,slaac 拿到广播的网段之后自己就给自己配上了,所以你根本没办法拦截。
cloudsigma2022
2022-05-25 21:14:13 +08:00
其实就是 dns 问题,ip6tables 转发 53 端口数据包,确定能解析到 v6 和 v4 地址?
dig 命令 @lanv6ip
cloudsigma2022
2022-05-25 21:15:12 +08:00
同时,在 op 上, 用 ping6 test-ipv6.com
Damn
2022-05-25 22:37:12 +08:00
请使用“!”
iptables 规则我是成功的。
https://www.v2ex.com/t/664819
-m mac ! --mac-source * -j DROP
lovelylain
2022-05-25 22:42:00 +08:00
解决问题的思路不对吧,你不就是想通过 ipv6 访问 nas ,又不想给内网其他设备分配 ipv6 吗?那就把 lan 里面的 ipv6 禁用,只允许路由器 wan 获取 ipv6 地址,然后路由器上部署一个 nginx 反代到 nas ,问题不就解决了?
jim9606
2022-05-25 22:43:11 +08:00
Android 完全不支持 DHCPv6 ,所以只能通过 SLAAC ,但 SLAAC 的 RA 只能使用组播发送。
你不如考虑单独分一个双栈 VLAN 一个纯 IPv4 VLAN ,然后只在双栈 VLAN 启用 IPv6 路由通告。
veSir
2022-05-26 01:35:58 +08:00
数据包负载均衡这玩意没什么用,还会导致莫名其妙的问题.
woshijidan
2022-05-26 03:05:38 +08:00
@cloudsigma2022 openwrt 在 v6 是有效的,但是防火墙可能不一定有效
woshijidan
2022-05-26 03:08:01 +08:00
@Damn 我没用 “!” 虽然防火墙是生效了,但是如上,过一段时间又会重新获取到公网的 v6 难道用“!”就不会了吗?我去试试
Damn
2022-05-26 08:30:58 +08:00
@woshijidan 要点在原帖里有写,附言里的“路由器开 RA 和 DHCPv6”你忽略了。
最后一条回帖“取消启用 SLAAC 选项”你也忽略了。
如果你的设备只能支持 SLAAC 的话这个方法无效。
使用“!”的话规则比你先 accept 后 drop 短,理论上效率更高,大流量 CPU 友好。
woshijidan
2022-05-26 13:12:10 +08:00
@Damn 好吧 软路由是 lean 自编译的 目前看来没法禁用 只能全开了
TsukiMori
2022-05-26 17:05:03 +08:00
你还不如禁用 slaac 然后开 DHCPv6 给你要的设备
但是你这个固件版本用的 ipv6 luci 是老版的 你只能手动 ssh 到路由里改配置文件 关闭 ra 的 a 标记
而且另一个问题就是不知道是不是显示问题 你这个 wan 口没有 pd
oovveeaarr
2022-05-26 17:30:49 +08:00
战略性 Mark ,我的需求倒是反过来,只给某些设备不配 IPv6 )
flynaj
2022-05-27 16:07:03 +08:00
我是深更半夜定时重拨,IPv6 确实更新速度慢
woshijidan
2022-05-27 17:05:50 +08:00
@TsukiMori 不是老版,我刚一星期前编译的,其实它是基于 lean 源码,可能和官方的比稍微有点旧,另外改配置文件我试过了,参考这个帖子 https://www.v2ex.com/t/664819 这样改后还是会广播

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX