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

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

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

不想手动在每个设备上配置 IP,有些设备还不能手动配置。请问有没有办法可以在路由器上设置只给某个设备分配 IPv6 地址。路由器是 openwrt 和 padavan
20005 次点击
所在节点    
宽带症候群
68 条回复
cwbsw
2020-04-22 13:39:18 +08:00
@swiftg 手动添加默认路由。
ip -6 r add default via fe80:*** dev ***
king050203
2020-04-22 13:44:01 +08:00
可以用 ebtables 过滤 ipv6
mandymak
2020-04-22 13:48:16 +08:00
@swiftg 更换主路由为 routeros,openwrt 改为旁路由,routeros 支持把 ipv6 配到独立的 bridge 。
swiftg
2020-04-22 13:57:51 +08:00
@updateing openwrt 里没有 stateful,我猜应该就是对应的 server mode,无论设置为 server mode 还是 relay mode,局域网设备都可以自动获取 IPv6 地址。搜索资料发现 RA 走的 ICMPv6,我就在防火墙把所有 ICMPv6 包 DROP 了,然后单独 ACCEPT nas 的。现在看应该是没问题了。luci 里防火墙设置规则并且拖到最上面不起作用,必须要 ssh 进去手动输 ip6tables 命令才行。

```
ip6tables -I INPUT -p udp --dport 546 -j DROP
ip6tables -I INPUT -p udp --dport 547 -j DROP
ip6tables -I INPUT -p icmpv6 -j DROP
ip6tables -I INPUT -p udp -m mac --mac-source NAS_MAC_ADDRESS --dport 546 -j ACCEPT
ip6tables -I INPUT -p udp -m mac --mac-source NAS_MAC_ADDRESS --dport 547 -j ACCEPT
ip6tables -I INPUT -p icmpv6 -m mac --mac-source NAS_MAC_ADDRESS -j ACCEPT
```
swiftg
2020-04-22 14:09:28 +08:00
@cwbsw 谢谢。我路由器关闭 RA,nas 上手动添加默认 IPv6 路由,还是 Network is unreachable,ip -6 r add default via fe80::6238:e085:ff05:c9d7 dev ens3,和 RA 自动获取的是一模一样的
cwbsw
2020-04-22 14:23:22 +08:00
@swiftg 奇怪了,我 Windows 机器就可以这么干,路由器不开 RA,然后手动配地址和路由。
cwbsw
2020-04-22 14:56:07 +08:00
@swiftg 想了下,最好应该还是只开 RA,禁用 DHCPv6,DROP 非 NAS 的 ICMP6 。
LGA1150
2020-04-22 14:59:28 +08:00
关闭 SLAAC:
uci set dhcp.lan.ra_slaac=0
uci commit dhcp
/etc/init.d/odhcpd restart
RA 还是要开的
cwbsw
2020-04-22 14:59:45 +08:00
不对,不行,这样还是会广播 RA,光 DROP 入站不行。
LGA1150
2020-04-22 15:09:31 +08:00
补充 #28
只有 snapshot 里的 odhcpd 支持 ra_slaac 设置,19.07 或 18.06 都不行
helldiablo
2020-04-22 16:25:32 +08:00
'!~7
helldiablo
2020-04-22 16:28:58 +08:00
'!~7i6
cwbsw
2020-04-22 16:47:03 +08:00
@LGA1150
snapshot 的话,只需 luci 里设置 statefull-only 即可,抓包看 RA 里已经没有 Auto Flag 。
综上,楼主需要在 luci 设置 statefull-only,DROP 掉非 NAS 的 ICMP6 和 UDP 547 入站。
swiftg
2020-04-22 17:42:59 +08:00
@cwbsw 十分感谢!我现在用的 openwrt 19.07 和 padavan 。这样手动设置防火墙后貌似可以达到我想要的效果了,openwrt 上的其他设备偶尔还会获得 IPv6 地址,搞不懂为什么,可能防火墙重启了?

openwrt 上设置为
Router Advertisement-Service: Server Mode
DHCPv6-Service: Server Mode
NDP-Proxy: Disabled
DHCPv6-Mode: Stateful only

padavan 上设置为
WAN: Stateless RA
通过 DHCP 获取内网 IPv6 地址:是
启用 LAN 路由器广播: 是
启用 LAN DHCPv6 服务器: Stateful

两个路由器上都用的同样的规则
ip6tables -I INPUT -p udp --dport 547 -j DROP
ip6tables -I INPUT -p icmpv6 -j DROP
ip6tables -I INPUT -p udp -m mac --mac-source NAS_MAC_ADDR --dport 547 -j ACCEPT
ip6tables -I INPUT -p icmpv6 -m mac --mac-source NAS_MAC_ADDR -j ACCEPT
cwbsw
2020-04-22 18:30:01 +08:00
@swiftg 规则加到 /etc/firewall.user 里重启就不会失效。

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

可能是 30 楼说的原因,19.07 的 statefull-only 实现有问题。可以抓包确认一下。

prefix info option (3), length 32 (4): 240e:***::/64, Flags [onlink], valid time 2251s, pref. time 2251s

Flags 那一项不应该有 Auto 。
swiftg
2020-04-22 19:31:13 +08:00
@cwbsw 我是写到 firewall.user 的,可能之前手动重启的间隙获取的,目前几个小时过去了没有任何问题了。唯一的小瑕疵,WAN 口也不能获取地址,路由本身不能监听 IPv6 端口了
swiftg
2020-04-22 19:53:17 +08:00
@swiftg #36,我自己规则没有指定 lan 接口,按照 @cwbsw 的规则加上-i br-lan,WAN 口就也可以获取 IPv6 地址了。

自此问题完美解决,感谢楼上各位大佬的耐心解答指导
qingxi
2020-04-28 11:24:01 +08:00
最好的解决方案是国内解析启用双栈,国外只解析 ipv4,或屏蔽是双栈网站的 ipv6 解析
swiftg
2020-04-28 11:47:44 +08:00
@qingxi 我需要这台机器上有完整的 IPv6 环境,可以做测试,DNS 的方案不太合适
qingxi
2020-04-28 11:59:59 +08:00
@swiftg 需要完整 ipv6 机器就手动设置 ipv6 dns,openwrt dhcpv6 没找到分组下发配置的方案

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

t/664819

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

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

© 2021 V2EX
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86