初探 ipv6 & 群晖 ipv6 DDNS 的设置.
其实 ipv6 早就不是什么新概念了, 只是一直懒得去了解相关的内容.
这次就趁着设置 DDNS 的机会来了解一下 ipv6.
(还不是因为移动要不到公网 ip…)
0x00 了解 ipv6
ipv6 与 ipv4 对用户来说有几点明显的区别:
- 地址格式不同
- 地址分配方式不同
- 无需 NAT, 每台设备均可有公网 ip
- 更高的安全性(ipv6 不容易被扫描)
ipv6 的工作方式是: 拨号后, ISP 给路由器一个 ipv6 前缀
例如IPv6-PD: 2409:8a20:xxxx:xxxx::/60
移动给我分配了一个 /60 前缀, 具体分配规划可以参考 这篇文章.
也就是 128 后面的 68 位都可以让我自行分配, 每一个分配出的 ip 都是公网 ip(全球单播地址).
然后路由器通过路由通告服务将这个前缀分发给所有连接的客户端.
客户端决定后 68 位的方法又有三种.
- 无状态(SLAAC): EUI64 或 随机
- 有状态DHCPv6: DHCP 服务器分配整个 ipv6 地址和 DNS
- 无状态DHCPv6: DHCP 服务器分配 DNS, ipv6 地址同 SLAAC.
获得 ipv6 地址和 DNS 之后即可连接 ipv6 网络, 访问 ipv6 服务.
0x01 设置 DDNS
首先需要实名在阿里云购买一个域名.
群晖自带的 DDNS 功能不支持阿里云的 DDNS 解析. 推荐 Docker 容器 jeessy/ddns-go.
容器启动后访问 [ip]:9876 即可打开 Web UI.
DNS 服务商选择阿里云, 点此创建一个子用户 AccessKey 并给子用户添加 AliyunDNSFullAccess 权限.
将 AccessKey ID 和 AccessKey Secret 填写进网页.
取消勾选 ipv4 ddns, 勾选 ipv6 ddns, 设置为通过网卡获取 IP.
保存设置即可.
但现在有一个小问题. 群晖默认设置的自动获取 ipv6 地址, 会同时通过有状态和无状态两种方式获取 ipv6 地址, 就会有两个 ipv6 地址. DDNS 获取的地址会在两个地址之间反复横跳, 导致之后防火墙设置不便.
将群晖控制面板 - 网络 - 网络界面 - 局域网1 - ipv6设置改为 DHCP-PD. (就是无状态 DHCPv6).
这样就只会通过无状态的模式获取 ipv6 地址. 就不会有两个地址了.
0x02 防火墙放行
以 OpenWRT 为例.
进入管理界面, 网络-防火墙-通信规则, 新增一条.
所有保持默认, 只需要更改目标地址为 ::[群晖 EUI]/::ffff:ffff:ffff:ffff
群晖 EUI 是通过网卡 MAC 地址算出的, 是不会改变的.
可以直接在群晖网络设置中看到.
比如群晖 ipv6 地址为 fe80::233:2345:6789:abcd/64, 那么则填写 ::233:2345:6789:abcd/::ffff:ffff:ffff:ffff
目标端口开放你需要开放的端口. 保存即可.
0x03 测试
等待 DNS 同步后, 就可以在外网访问到群晖了.
本文采用 CC BY-NC-SA 4.0 许可协议发布.
作者: lyc8503, 文章链接: https://blog.lyc8503.net/post/9-syno-ipv6-ddns/
如果本文给你带来了帮助或让你觉得有趣, 可以考虑赞助我¬_¬