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

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

不想手动在每个设备上配置 IP,有些设备还不能手动配置。请问有没有办法可以在路由器上设置只给某个设备分配 IPv6 地址。路由器是 openwrt 和 padavan
18133 次点击
所在节点    宽带症候群
67 条回复
zro
2020-04-22 00:06:43 +08:00
openwrt 装个 Polipo,需要 IPv6 就接到 Polipo 代理。。
zro
2020-04-22 00:08:07 +08:00
顺便把 openwrt 的 dhcpv6 关掉。。
lns103
2020-04-22 00:11:30 +08:00
直接在路由器上用 smartdns,开启 SOA,屏蔽 ipv6 的地址解析,而且外部 ipv6 的访问不受影响。
ps:电信的 ipv6 出国更恶心,大部分都绕欧洲,cf 美国可以直连,但是也辣鸡得不行
swiftg
2020-04-22 00:27:05 +08:00
@lns103 谢谢,smartdns 这个我也想到了,但这不是完美的方案,nas 上我还是需要正常解析 IPv6 的 dns,包括其他设备,有时需要 dig nslookup 调试些东西

@zro 谢谢,路由器上端口转发到内网我也想到了,我用的 socat,实际测试性能有损失。直接访问 nas 的 IPv6 地址 15-20MB/s 跑满宽带,socat 端口转发到 nas 的内网 IP 只有 10MB/s 。而且我还想 nas 能出站访问外网的 IPv6 地址
zro
2020-04-22 00:45:42 +08:00
@swiftg #4 好久好久之前,Google 见过将 PPPoE 的 v4/v6 分离的,把 v6 数据包 drop 掉给其他设备,好像是这样子,具体记不太清。。😣
updateing
2020-04-22 01:02:09 +08:00
可以考虑关掉 SLAAC 只用 DHCPv6,然后禁止 DHCPv6 动态分配(只允许手动添加的 static lease ),再把 NAS 加到 static lease.

我记得 OpenWrt 上这么做好像得魔改 odhcpd,或许用 dnsmasq 做 DHCPv6 服务器会更可行?
qingxi
2020-04-22 01:20:12 +08:00
要么你给 nas 单独设置 DNS,其他内网
qingxi
2020-04-22 01:23:32 +08:00
@qingxi 其他内网 DNS 屏蔽 ipv4 解析
swiftg
2020-04-22 02:06:01 +08:00
@updateing 谢谢,没找到禁用动态 DHCPv6 的地方。我的思路是想在防火墙把内网的 DHCPv6 流量全部 reject,再单独允许 nas 的 DHCPv6,但弄了半天 reject 规则不起作用,DHCPv6 还是在所有内网设备上都能工作。dnsmasq 我明天研究研究
swiftg
2020-04-22 02:07:52 +08:00
@qingxi 单独 dns 这个是个不错的曲线备选方案,但我还是想弄个完美的解决办法
jim9606
2020-04-22 04:47:53 +08:00
没实践过的方案

openwrt 为只使用 V4 设备单独开一个接口和防火墙区域

交换机页面为接入 LANV4 的网口划分独立 VLAN (例如 VLAN3: eth0-tagged, LAN4-untagged,其余为 off,产生交换机 eth0.3,如果接 eth1 就是 eth1.3 )

防火墙创建 LANV4 区域,接口创建的 LANV4,另外分一个地址池,例如 192.168.2.1/24,该接口关闭 RA 、NDP 、DHCPv6,为加入的物理接口创建桥接(上面的 eth0.3,第二个 SSID )

LANV4 防火墙的转发设置跟 LAN 保持一致(出 /入 /转发为允许,允许目标区域 LAN+WAN,允许源区域 LAN )

windows 系统可以考虑修改策略优先 ipv4
( https://support.microsoft.com/zh-cn/help/929852/guidance-for-configuring-ipv6-in-windows-for-advanced-users)

linux 系统可修改 /etc/gai.conf 实现
swiftg
2020-04-22 08:10:51 +08:00
@jim9606 谢谢这么详细的方案,可惜我的情况复杂了点,我路由器 4 个 LAN 口只保留了一个,下面接的一个 24 口交换机,所有有线设备都是接的这个交换机。剩下的 3 个 LAN 口都配置成了 WAN 口使用,接了两条宽带和 IPTV 。另外老家的 padavan 没有配置 switch 的功能

主要是移动设备不方便手动配置和调整优先级
Archeb
2020-04-22 08:18:50 +08:00
我认为用 iptables 屏蔽特定包可以做到这一点
hand515
2020-04-22 08:25:39 +08:00
联通的 ipv6 感觉也是绕美国,traceroute -6 看,先到美国,再到香港
swiftg
2020-04-22 08:28:38 +08:00
@Archeb 我也是这么想的,但是我尝试屏蔽内网所有的 DHCPv6 流量( udp 546,547 端口),但是没有成功,设备照样可以获取 IPv6 地址。

可否指导下怎么设置防火墙?
swiftg
2020-04-22 08:34:47 +08:00
@hand515 三家的 IPv6 出口带宽都太小,V 站联通走日本,但是延迟炸裂,移动走香港,电信走美国,丢包都很严重,总之出国根本没法使用
cwbsw
2020-04-22 10:14:59 +08:00
@swiftg RA 关了吗?
swiftg
2020-04-22 11:57:30 +08:00
@cwbsw 谢谢你的提醒,我发现之前屏蔽了 DHCPv6 后客户端获取的 IP 果然是通过 RA 获取的。

我尝试关闭 RA,可是 nas 虽然有 DHCPv6 获取的 IPv6 地址,却不能上网了,出站都是 Network is unreachable
updateing
2020-04-22 12:25:44 +08:00
@swiftg RA 最好不要关闭, 它是获取默认路由的方式之一。只需要关闭 SLAAC 就足够了,就是 RA 里面对应前缀下的 Autonomous 位。这个用原版的 odhcpd 就可以设置,应该是页面上把 Router Advertisement 设置成 Stateful-only 就行.
zro
2020-04-22 12:29:04 +08:00
想到一个:OpenWRT 不给 lan 分配 v6,然后再搭个 OpenVPN 或 WireGuard 之类的,NAS 就能绕个弯拿到 v6 地址了。。虽然在内网间搭个 VPN 是夸张了点~🥱

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

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

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

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

© 2021 V2EX