自 2017 年底,国内大多数地区的固定宽带和移动网络就开始提供 IPv6 接入了,平时逛宽带症候群区时也经常看到关于 IPv6 的种种问题。可能因为最近几年越来来多的用户失去了公网 IPv4 地址,肉眼可见 IPv6 有了更多的讨论度。
本人自从十几年前就开始玩 IPv6 了,也在 V2EX 发过几篇关于 IPv6 的文章。之前曾打算专门抽出时间写一系列文章,旨在帮助各位 V 站 的 Geek 们在家庭等小范围进行 IPv6 组网,并为常见的问题提供解决方案,但是这个计划一再搁置,最终也没有去做。今天看到有人在我之前的帖子回复希望我能写点教程,这才又想起这件事。
之前发过的帖主要有:
根据我逛 V 站和其他地方得来的经验,我暂时想到了下面这些主题(想到的很多,不一定会写哪几个),不知各位有没有要补充的或者对某一方面特别感兴趣的?如果某一方面有很多人感兴趣,那我就多写一点或者提早写那一篇。目前想到的主题有:
1
xuangoer666 2023-07-08 12:47:18 +08:00 via Android
求:各种隧道技术的应用,比如用 VPN 接通两地的内网、远程访问内网(内网穿透)等
|
2
tediorelee 2023-07-08 12:53:20 +08:00
是大佬,mark 一下
|
3
ylsf 2023-07-08 14:07:39 +08:00 via Android
期待大佬更新
|
4
cpaig 2023-07-08 14:23:10 +08:00
都不太懂,等大佬都讲讲
|
5
silverwolf 2023-07-08 14:32:25 +08:00
IPv6 下开 AdGuard Home 服务器,如何像 IPv4 一样区分设备?目前的路由器支持 SLAAC 方式自动获取动态分配的 IPv6 公网地址,而 AdGuard Home 安装在一台 N1 盒子里。
就 IPv4 网络而言,这很简单,在路由器上个每个设备设置 MAC 和 IPv4 绑定,LAN 口的 DNS 设置成 N1 盒子的 IP 即可。 IPv6 打开以后,可以在 LAN 侧填写设置 IPv6 DNS 服务器地址,但这就要求填写一个固定地址。如果路由器可以配置 IPv6 ULA 地址还好说,但硬路由不支持。 |
6
titanium98118 2023-07-08 15:37:59 +08:00 via Android
我现在就是为局域网分配 ULA+NAT66 。双 wan 负载均衡貌似只能 NAT?
|
7
Yien 2023-07-08 15:50:35 +08:00
感谢大佬分享
|
8
pk000 2023-07-08 15:58:07 +08:00 via iPhone
可以通过 ULA 固定每个多个家之间设备地址,跨地域 IPv6 组网方式有简单的方案吗?
|
9
raysonx OP @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; }; }; |
10
raysonx OP |
11
microka 2023-07-08 16:24:50 +08:00
向请问一下,普通家用路由器(比如华为 B610-4E )在开启 IPv6 拨号的使用环境下,能做(应该做)哪些安全设置?一个是路由器端,一个是局域网设备端(以 Windows 为例),谢谢。
|
12
raysonx OP @titanium98118 如果在路由器上做均衡只能 NAT ,因为个人用户没有自己的 PI ( provider-independent )地址,比如你没法向电信宣告联通的路由。如果把在客户端做均衡,可以直接把多个公网地址分配到客户端。这个确实是一个值得讨论的话题。
|
13
silverwolf 2023-07-08 16:40:04 +08:00
@raysonx 在 AdGuard Home 上根据 IP 地址区分设备,便于看到该设备请求了哪些域名。
感谢科普,我打算按你给的方法在 N1 盒子上跑一个 SLAAC 宣告,给局域网的所有设备下发 IPv6 ULA 地址,并给 DNS 服务器一个固定的 ULA 地址。 |
14
Jirajine 2023-07-08 16:57:06 +08:00
一直想通过 nat64/dns64 部署纯 ipv6 内网,但主要有两大障碍:
一是地址管理问题,因为 Android 的原因,ipv6 地址没法用纯有状态管理,slaac+隐私扩展让地址完全无法管理,没法根据设备的地址单独配置防火墙等。 二是动态前缀问题。动态前缀让内网无法使用稳定地址,要稳定地址必须 nat ,但 nat 在 ipv6 里是 anti pattern ,坑也不少。很少有应用能支持在无状态前缀 nat 的情况下正确的地址发现。 |
15
raysonx OP @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 。 |
16
veSir 2023-07-08 17:32:55 +08:00
感谢分享!
openwrt 23.05 fw4 需要设置 PMTU 命令吗? |
18
0o0O0o0O0o 2023-07-08 17:45:10 +08:00
对第 4 5 9 3 1 2 7 8 条都感兴趣,排名分先后
|
19
lih24338 2023-07-08 17:51:34 +08:00 via Android
所有的都感兴趣,期待更新。
|
20
zooo 2023-07-08 17:53:36 +08:00
正需要,期待更新呀
|
21
raysonx OP @veSir 需要。LUCI 上打开 Firewall 设置,点击 WAN 这个 zone 的设置,勾选 MSS clamping 。
|
22
silverwolf 2023-07-08 19:10:27 +08:00 1
@raysonx 成功了🎉
上面那个 radvd.conf 有语法错误,改为: ``` interface eth0 { AdvSendAdvert on; AdvDefaultLifetime 0; prefix fd07:2023::/64 {}; }; ``` |
23
silverwolf 2023-07-08 19:12:41 +08:00
@silverwolf 我一开始看 error :6 不知道是什么语法错误,把第 6 行移出来就通过了
|
24
Jirajine 2023-07-08 19:21:34 +08:00
@raysonx 不工作的应用应该不多吧,也就 p2p 、nat traversal 以及网络相关的工具需要适配,普通应用应该是无感的(“fakeip”不会 break 的应用 nat64 应该也不会)。
为不同设备配置不同的防火墙规则是刚需,比如限速、劫持、策略路由。因为 ap 的缘故我没法让设备通过不同 ssid 接入不同的 vlan ,即使换了 ap 这样也不方便,会破坏不同设备间依赖内网直连的应用。 稳定地址不仅是内网通信,docker/虚拟机等不少应用也依赖稳定地址,ula 又失去了入站连通性,ula 配合 NAPT 无状态前缀转换好像很不错,但应用不一定能正确处理地址发现的问题。 以及配置 ipv6 相关的 nat 基本要手写防火墙规则,也不好维护。 |
25
u20237 2023-07-08 19:35:01 +08:00
至少得实现聊天/上传/下载吧?那么根服务器在哪?
|
26
Tink 2023-07-08 19:38:50 +08:00
感谢大佬分享
|
27
WhatTheBridgeSay 2023-07-08 21:02:21 +08:00
我现在最想知道的是有没有可能在网关上 DDNS 更新局域网设备 SLAAC 出来的 IPV6 地址,以及 NDP 代理具体是是干嘛用的,按我的理解是用于设备发现用的,那是不是可以网关可以用来获取局域网设备的 IPV6 进而 DDNS ?
|
28
yzc27 2023-07-08 21:14:43 +08:00 via iPhone
想请教一下大佬,路由器有 ipv6 防火墙开关,但没具体设置。把这个防火墙打开,那么这个路由器下面的设备的 ipv6 是不是处于被保护的状态?之面看有人说这个防火墙只保护路由器本身,它下面设备还是“裸奔”。
|
29
sky96111 2023-07-08 21:49:31 +08:00 via Android
我最近使用 WireGuard IPv6 组网的时候遇到了 MTU 的问题,client 使用 wg 默认的 1420 ,服务端 OpenWrt 使用 PPPoE 拨号,dhcpv6-pd 获取 ipv6 地址。同时开启区域转发、MSS 钳制、IP 动态伪装,访问服务端出现有些资源无法访问,ping 又是正常的情况
发现是 MTU 的问题后,用 ping -s 降低包大小进行测试,一直降低到 1382 时才正常 想请教一下,为什么 MTU 会是 1382 ?而且它似乎有点太低了 |
30
raysonx OP @Jirajine 不工作的应用非常多,你试试就知道了。
@WhatTheBridgeSay 有可能,但好像没有现成的实现,之前曾打算自己开发一个,但好像大家的兴趣不大。NDP proxy 类似于 IPv4 下的 ARP proxy ,一种让两个广播域共享同一网段的 hack 。 @yzc27 路由器型号千奇百怪,无法统一回答。 @sky96111 PPPoE 下 WireGuard 的 MTU 设定为 1412 就可以了。 |
31
latteczy 2023-07-09 11:01:11 +08:00
请教一下,家里的网络已经支持 IPv6 ,主机也可以访问 IPv6 ,但是只有我的 MacBook 无法访问 IPv6 ,我的 MacBook 也有 IPv6 地址,但是 ping IPv6 网站解析出来的都是 IPv4 地址(比如 ping mirrors.aliyun.com ),在我家里的其他设备上 ping 这个域名解析出来的都是 IPv6 地址。
请问这可能是什么原因? |
33
t123yh 2023-07-09 21:57:53 +08:00
IPv6 怎么实现出口分流呢,比如我同时拉了电信和移动的宽带,是否可能在路由器上自动区分出口
|
34
huaxie1988 2023-07-09 23:15:53 +08:00 1
@sky96111 测试的时候应该是 1384 吧? 1500-8 Bytes (PPPOE) – 40 Bytes (IPv6) – 8 Bytes (UDP) – 32 Bytes (WG) -20 Bytes (IPv4)-8 Bytes (ICMP),算出来就是 1384 ,mtu 1412
|
35
huaxie1988 2023-07-09 23:21:18 +08:00
@t123yh 不用分流,只要把 2 个地址都分到用户侧,ipv6 会自动分流,IPV6 源地址选择有个特性,是优选和目标地址最长前缀匹配的地址,所以访问电信就选电信地址,访问移动就走移动地址,然后路由器上根据源地址送到对应的出口去,全自动分流。
|
36
latteczy 2023-07-10 17:26:31 +08:00
@raysonx #32 感觉不是这个原因,在 mac 上刷 test-ipv6.com 也显示不支持 IPv6 ,就很奇怪。
|
37
raysonx OP @latteczy 所以你的 mac 真的获得 ipv6 地址了吗?你可以在 mac 上运行下面的命令并把结果发给我 (邮箱 base64 bWVAeXV4LmltCg==)看看:
ifconfig netstat -nr |
38
ttvast 2023-07-11 11:31:01 +08:00
不用 nat 的 ipv6 就是垃圾。
用了 nat ,为啥不直接用 v4 。 除非宽带服务商给我分配固定/56 的网段。 |
39
LodonBoy10086 2023-07-13 15:16:47 +08:00
raysonx 你好,有个有意思的防火墙相关 chaifeng/ufw-docker 。我想问问,怎么把它转成 ipv6 版?有什么其他的注意事项。
|
40
echo1937 2023-08-20 23:37:32 +08:00
楼主有博客吗,方便进行历史内容的搜索和查看。
|