如何只给路由器后的某个设备单独分配 IPv6 地址

2020-04-22 00:01:30 +08:00
 swiftg
移动宽带没有公网 IPv4,有 IPv6 地址,外网可以直接入站访问家里的 nas,但是 IPv6 出站访问外网的线路质量就特别差,好像总共出国带宽只有 20G 。偏偏电脑和手机在获取 IPv6 地址后都会优先使用 IPv6 访问,造成访问比如 V2EX 速度很慢。

不想手动在每个设备上配置 IP,有些设备还不能手动配置。请问有没有办法可以在路由器上设置只给某个设备分配 IPv6 地址。路由器是 openwrt 和 padavan
16284 次点击
所在节点    宽带症候群
65 条回复
swiftg
2020-04-28 12:17:04 +08:00
@qingxi 这不是找到方案了么,iptables 分机器允许下发,操作也简单。dns 方案不够完美,我工作的机器也需要能查询 AAAA 记录,而且经常用到,但是我不想浏览器访问 IPv6 地址
lzl2000
2020-05-06 23:19:32 +08:00
我也想这样设置,能把你 Padavan 防火墙规则的截图我看看吗
swiftg
2020-05-07 00:18:06 +08:00
@lzl2000 ip6tables 规则已经贴出来了,放到自定义防火墙规则里就行了
swiftg
2020-05-07 00:27:14 +08:00
@lzl2000 padavan 的 LAN 接口是 br0,如果你只有一个设备需要 IPv6 的话就按 cwbsw 的写法一条命令用! mac-source 写,如果几个设备的话就按我的写法写,注意顺序,后写的先匹配
zhs1113
2020-05-08 08:11:08 +08:00
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac ! --mac-source *** -j DROP
ip6tables -A input_lan_rule -i br-lan -p udp --dport 547 -m mac ! --mac-source * -j DROP

我按照上面这两条成功指定一台设备分配 ipv6,但是要把 /etc/firewall.user 的文件权限改成可读写执行。
还有个问题是 op 上显示只分配了一台设备的 v6,但是实际上其他设备过一段时间后又自动获取了 ipv6,即使设有状态模式 statefull

我的解决方法是按照 28 楼的 ssh 执行
uci set dhcp.lan.ra_slaac=0
uci commit dhcp
/etc/init.d/odhcpd restart

最后发现其他设备没再获取 ipv6


还有我想添加多个设备分配 v6 但是总是不成功
把下面的规则加进防火墙 重启后 却连一个都没分配到 请问要怎么解决

ip6tables -A input_lan_rule -i br-lan -p udp --dport 547 -j DROP
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -j DROP
ip6tables -A input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 2 --dport 547 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 2 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 1 --dport 547 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 1 -j ACCEPT
swiftg
2020-05-08 09:28:57 +08:00
@zhs1113 firewall.user 肯定要执行权限才能运行。我是 19.07 ,不用改 28 楼的也没问题。
多个设备那个,-A 是附加到链的最后,先添加的先匹配。我不知道为什么用-A 添加的规则执行不了就用-I 插入到链的开头,后插入的先执行。所以你的规则要么把-A 改成-I,要么把顺序调换下就行了
zhs1113
2020-05-08 16:41:26 +08:00
@swiftg -A 改成-I 后只有 MAC 地址 1 分配到 v6 第二个分配不到 我的是 lean N1 主路由
zhs1113
2020-05-08 17:50:48 +08:00
@swiftg 而且好像用 ACCEPT 也没真正分配成功 被分配的设备显示的不是公网 ipv6
zhs1113
2020-05-08 17:55:02 +08:00
可能因为被分配的设备没开 dhcpv6 吧 不是很确定
whitegerry
2020-05-14 01:18:51 +08:00
用 ros 也按这种方式测试了下,重新拨号成功的瞬间,所有设备都获取到 ipv6 了,但只有允许的设备 ipv6 是通的,其他设备重启一下网络 ipv6 才会消失
zhs1113
2020-09-15 19:28:22 +08:00
@whitegerry 我刚用 ros,配置好 ipv6 了 请问要怎么加这个特定设备分配 ipv6 的规则,请教一下
dasenlin
2021-05-03 14:26:18 +08:00
@zhs1113 实测这样是可行的

ip6tables -A input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 2 --dport 547 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 2 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 1 --dport 547 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 1 -j ACCEPT
ip6tables -A input_lan_rule -i br-lan -p udp --dport 547 -j DROP
ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -j DROP

或者倒序插入

ip6tables -I input_lan_rule -i br-lan -p udp --dport 547 -j DROP
ip6tables -I input_lan_rule -i br-lan -p ipv6-icmp -j DROP
ip6tables -I input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 2 --dport 547 -j ACCEPT
ip6tables -I input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 2 -j ACCEPT
ip6tables -I input_lan_rule -i br-lan -p udp -m mac --mac-source mac 地址 1 --dport 547 -j ACCEPT
ip6tables -I input_lan_rule -i br-lan -p ipv6-icmp -m mac --mac-source mac 地址 1 -j ACCEPT
zhs1113
2021-06-16 17:35:14 +08:00
@dasenlin 好的 我试试
jiacuo
2021-10-25 20:31:29 +08:00
靠这个帖子解决了大问题。谢谢
Jays
2021-11-07 11:43:00 +08:00
@cwbsw 请问一下,如果有多台设备,规则应该怎样填写? 这个命令支持一台设备,即便再复制更改 mac 后设备第二台设备的 IPV6 还是无法访问网络

ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac ! --mac-source *** -j DROP
ip6tables -A input_lan_rule -i br-lan -p udp --dport 547 -m mac ! --mac-source * -j DROP
cwbsw
2021-11-07 13:18:40 +08:00
@Jays 多台设备看 52 楼。
Jays
2021-11-07 16:22:45 +08:00
@cwbsw 52 楼的试了下,貌似没用。ipV6 地址都能获取到 但 ping 其他 ipv6 地址 都 ping 不通
wwbfred
2022-02-22 02:28:55 +08:00
Openwrt 21.04 版本设置方法:
1. 找到 Lan 设置中 DHCP 服务器下的 IPv6 设置,将 RA 服务和 DHCPv6 服务调为服务器模式。
2. IPv6 RA 设置中取消"启用 SLAAC"选项,RA 标记勾选"受管配置 (M)"和"其他配置 (O)"。
3. ip6tables -A input_lan_rule -i br-lan -p ipv6-icmp -m mac ! --mac-source * -j DROP
4. ip6tables -A input_lan_rule -i br-lan -p udp --dport 547 -m mac ! --mac-source * -j DROP
berry10086
2022-10-24 19:38:34 +08:00
补充一条,还需要加上 ra_dns 0 进制广播 ipv6 dns
Jays
2022-10-29 13:22:31 +08:00
@berry10086 请问 ra_dns 0 是在哪个界面设置?

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

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

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

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

© 2021 V2EX