开个新坑:写给 Geek 们的小范围 IPv6 组网最佳实践

306 天前
 raysonx

自 2017 年底,国内大多数地区的固定宽带和移动网络就开始提供 IPv6 接入了,平时逛宽带症候群区时也经常看到关于 IPv6 的种种问题。可能因为最近几年越来来多的用户失去了公网 IPv4 地址,肉眼可见 IPv6 有了更多的讨论度。

本人自从十几年前就开始玩 IPv6 了,也在 V2EX 发过几篇关于 IPv6 的文章。之前曾打算专门抽出时间写一系列文章,旨在帮助各位 V 站 的 Geek 们在家庭等小范围进行 IPv6 组网,并为常见的问题提供解决方案,但是这个计划一再搁置,最终也没有去做。今天看到有人在我之前的帖子回复希望我能写点教程,这才又想起这件事。

之前发过的帖主要有:

根据我逛 V 站和其他地方得来的经验,我暂时想到了下面这些主题(想到的很多,不一定会写哪几个),不知各位有没有要补充的或者对某一方面特别感兴趣的?如果某一方面有很多人感兴趣,那我就多写一点或者提早写那一篇。目前想到的主题有:

5386 次点击
所在节点    宽带症候群
40 条回复
xuangoer666
306 天前
求:各种隧道技术的应用,比如用 VPN 接通两地的内网、远程访问内网(内网穿透)等
tediorelee
306 天前
是大佬,mark 一下
ylsf
306 天前
期待大佬更新
cpaig
306 天前
都不太懂,等大佬都讲讲
silverwolf
306 天前
IPv6 下开 AdGuard Home 服务器,如何像 IPv4 一样区分设备?目前的路由器支持 SLAAC 方式自动获取动态分配的 IPv6 公网地址,而 AdGuard Home 安装在一台 N1 盒子里。

就 IPv4 网络而言,这很简单,在路由器上个每个设备设置 MAC 和 IPv4 绑定,LAN 口的 DNS 设置成 N1 盒子的 IP 即可。
IPv6 打开以后,可以在 LAN 侧填写设置 IPv6 DNS 服务器地址,但这就要求填写一个固定地址。如果路由器可以配置 IPv6 ULA 地址还好说,但硬路由不支持。
titanium98118
306 天前
我现在就是为局域网分配 ULA+NAT66 。双 wan 负载均衡貌似只能 NAT?
Yien
306 天前
感谢大佬分享
pk000
306 天前
可以通过 ULA 固定每个多个家之间设备地址,跨地域 IPv6 组网方式有简单的方案吗?
raysonx
306 天前
@silverwolf 请问区分设备的目的是什么?仅仅是为了在动态 IPv6 前缀的前提下给 N1 分配一个静态的 IPv6 地址来提供 DNS 服务吗?

除了使用 ULA 之外,还可以使用 fe80 开头的 link-local 地址,对于绝大多数操作系统,这个地址通常是固定的。

另外你还可以用第三个设备来跑 SLAAC 宣告一个 ULA 前缀,这个设备不必是你的路由器,这样所有设备都能拿到 ULA 地址,只需要记得不要宣告默认路由即可,比如用 radvd 的话,可以用下面的设置( AdvDefaultLifetime 0 可以关闭默认路由宣告):

interface eth0
{
AdvSendAdvert on;
prefix fd12:3456:7890:abcd::/64
{
AdvDefaultLifetime 0;
};
};
raysonx
306 天前
@xuangoer666
@pk000
跨地域组网肯定没有惟一方案,目前我是用 WireGuard + 动态路由协议。这个话题可以专门开一帖讨论。
microka
306 天前
向请问一下,普通家用路由器(比如华为 B610-4E )在开启 IPv6 拨号的使用环境下,能做(应该做)哪些安全设置?一个是路由器端,一个是局域网设备端(以 Windows 为例),谢谢。
raysonx
306 天前
@titanium98118 如果在路由器上做均衡只能 NAT ,因为个人用户没有自己的 PI ( provider-independent )地址,比如你没法向电信宣告联通的路由。如果把在客户端做均衡,可以直接把多个公网地址分配到客户端。这个确实是一个值得讨论的话题。
silverwolf
306 天前
@raysonx 在 AdGuard Home 上根据 IP 地址区分设备,便于看到该设备请求了哪些域名。

感谢科普,我打算按你给的方法在 N1 盒子上跑一个 SLAAC 宣告,给局域网的所有设备下发 IPv6 ULA 地址,并给 DNS 服务器一个固定的 ULA 地址。
Jirajine
306 天前
一直想通过 nat64/dns64 部署纯 ipv6 内网,但主要有两大障碍:
一是地址管理问题,因为 Android 的原因,ipv6 地址没法用纯有状态管理,slaac+隐私扩展让地址完全无法管理,没法根据设备的地址单独配置防火墙等。
二是动态前缀问题。动态前缀让内网无法使用稳定地址,要稳定地址必须 nat ,但 nat 在 ipv6 里是 anti pattern ,坑也不少。很少有应用能支持在无状态前缀 nat 的情况下正确的地址发现。
raysonx
306 天前
@Jirajine 纯 IPv6 内网可是个大坑,大量应用软件甚至不能支持在 NAT64 环境下工作(只有 iOS 是个例外,多亏了苹果的审核机制)。

> 一是地址管理问题,因为 Android 的原因,ipv6 地址没法用纯有状态管理,slaac+隐私扩展让地址完全无法管理,没法根据设备的地址单独配置防火墙等。

你有专门为 Android 设备配置防火墙的需求吗?目前我自己的网络环境下,不提供服务的终端设备都是在同一个 VLAN 下,这个 VLAN 默认不允许从外网发起连接的。如果要提供服务,我看还是放弃 Android 为好。

> 二是动态前缀问题。动态前缀让内网无法使用稳定地址,要稳定地址必须 nat ,但 nat 在 ipv6 里是 anti pattern ,坑也不少。很少有应用能支持在无状态前缀 nat 的情况下正确的地址发现。
国内 ISP 给家宽分配的 PD 前缀确实是动态的。其实按照规范,如果设备的 DUID 不变,在租期内 ISP 应当分配静态的 PD 前缀,只是 ISP 不遵守而已。
内网设备之间的通信还是用 ULA 吧。如果需要开放公网服务,只能建议用 DDNS 。
veSir
306 天前
感谢分享!

openwrt 23.05 fw4 需要设置 PMTU 命令吗?
niubee1
306 天前
@raysonx 确实如你所说,之前打算自己写个 P2P 穿透的程序的时候,被坑了
0o0O0o0O0o
306 天前
对第 4 5 9 3 1 2 7 8 条都感兴趣,排名分先后
lih24338
306 天前
所有的都感兴趣,期待更新。
zooo
306 天前
正需要,期待更新呀

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

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

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

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

© 2021 V2EX