Do not 手欠
前段时间给宽带改了个套餐,公网IPv4没了,要也不给了,被迫开始转IPv6。
环境
主路由:
ImmortalWrt 21.02
系统:
Window 10 LTSB 21H2
Debian 12(bookworm)
Ubuntu 22.04 LTS(jammy)
ISP:
中国电信(DHCPv6-PD)
配置目标
让需要提供服务的设备获取到稳定的隐私地址,即:
1.不使用eui64(防止通过IPv6 SLAAC 地址反推客户端 MAC)。
2.地址要尽量固定,方便写防火墙规则。
路由配置
ImmortalWrt默认情况下直接拨号就会自动创建一个WAN6虚拟接口,可以说是十分的省心了。
修改配置如图所示:
租期改为12小时
分配长度/64,eui64方式生成路由的地址
手动设置通告的DNS,不使用运营商的
开启SLAAC,配置M、O标签
这里的配置同时开启了Stateless(SLAAC)和Stateful(DHCPv6)
目前:
安卓设备只支持Stateless方式获取IPv6地址
类Debian系统对Stateless和Stateful的支持都相对完善
Windows系统(Window 10 21H2)对Stateless的支持相对完善,对Stateful的支持有问题
所以你完全可以按教程只使用Stateless,我同时开纯粹是没事找事。
Ubuntu
Ubuntu 20+版本默认使用Netplan管理网络
/etc/netplan/00-default-config.yaml
1 | network: |
Debian
首先配置让networkd来管理网络
1 | mv /etc/network/interfaces /etc/network/interfaces.save |
/etc/systemd/network/default.network
1 | [Match] |
Windows
Update: Window在这里纯属特例,它既没有RFC 7217支持,也没有token支持(至少Window 10 21H2完全没有)
所以这里被迫使用eui64,同时为了隐私保护更改掉原始的MAC地址
以管理员启动Powershell:
1 | Set-NetIPv6Protocol -RandomizeIdentifiers Disabled |
解释部分
这样配置下来以后,每个设备理论上能获得两组IPV6地址,一个SLAAC来的,一个DHCP V6分的,
中国电信每过几天就会把拨号断开重连导致PD前缀变化,由于SLAAC得到的地址会很快的更新,在所有系统上也都会很快的恢复连接。
DHCP V6就不一定了,我将租期设置为了12小时,类Debian系统每过12小时都会重新向DHCP服务器要地址,这很好。
但是Windows不会,无论我怎么更改设置,Windows总能给我整出来一个三天租期的花活,
然后因为前缀变化,原来的地址失效无法访问了,Windows就会自己整出来一个新的隐私地址用进而导致防火墙规则失效。
当然,本文中介绍的方法不是RFC 7217,需要RFC 7217请查看参考资料,反正我是感觉7217出来的地址太长还不好看。
参考资料
https://wiki.archlinuxcn.org/wiki/Systemd-networkd
https://wiki.debian.org/SystemdNetworkd
- 本文作者: Disappear9
- 本文链接: https://thinkalone.win/ipv6-in-2024.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!