IPv6 基礎:驗證 ULA、RA/SLAAC、PD 與 DNS
五個位址/機制名詞
Section titled “五個位址/機制名詞”| 名稱 | 範例/角色 | 常見誤解 |
|---|---|---|
| link-local | fe80::/10 |
每張網卡都有;不是公用位址 |
| ULA | 位於 fd00::/8 內 |
無法直接在網際網路上路由 |
| GUA | 2000::/3 公用位址 |
需要上游 PD/配發 |
| RA | 路由器通告前置詞/閘道/DNS | 沒有 RA 就沒有 SLAAC |
| SLAAC | 用戶端依 RA 前置詞自行產生位址 | 不是 DHCPv6 |
| DHCPv6 | 伺服器配發位址/前置詞/DNS | 與 IPv4 DHCP 不同 |
| PD | 上游把前置詞委派給路由器 | 沒有 PD 就沒有 LAN GUA |
路由器 Shell檢查位址、路由與 UCI
ip -6 addr showip -6 routeuci show network.lanuci show dhcp.lanuci show network.globalslogread -e odhcpd | tail -30本次實驗:br-lan 有 ULA fd2f:385b:7d0a::1/60 與 link-local;沒有預設 IPv6 路由,也沒有 GUA。
預期知道目前只有 link-local、ULA,還是已有 GUA。
LAN:ULA + RA/SLAAC
Section titled “LAN:ULA + RA/SLAAC”路由器 Shell確認 LAN 前置詞與 RA 服務
uci show network.globals.ula_prefixuci show network.lan.ip6assignuci show dhcp.lan.rauci show dhcp.lan.ra_slaacuci show dhcp.lan.dhcpv6ps | grep [o]dhcpd本次實驗:
network.globals.ula_prefix='fd2f:385b:7d0a::/48'network.lan.ip6assign='60'dhcp.lan.ra='server'dhcp.lan.ra_slaac='1'dhcp.lan.dhcpv6='server'ip6assign='60' 會從 ULA 的 /48 中取出 /60 給 LAN;用戶端通常取得 /64。
預期LAN 有 ULA 前置詞,且 odhcpd 正在發送 RA。
電腦讓用戶端透過 RA 取得位址
Linux 範例(accept_ra=2 僅用於此 netns;一般用戶端通常維持預設值):
sysctl -w net.ipv6.conf.eth0.accept_ra=2ip -6 addr show eth0ip -6 routeping -6 -c 2 <router-ULA>本次實驗中 netns 用戶端取得:
fd2f:385b:7d0a:0:5088:71ff:fed4:32d2/64 scope global dynamicfe80::5088:71ff:fed4:32d2/64 scope link並成功 ping 到 fd2f:385b:7d0a::1。該用戶端只有 fd2f:385b:7d0a::/64,沒有預設 IPv6 路由(沒有上游)。
預期用戶端取得 ULA,並能 ping 路由器的 IPv6。
WAN:GUA 與 PD
Section titled “WAN:GUA 與 PD”路由器 Shell檢查 WAN6/上游是否提供前置詞
uci show network.wan6 2>/dev/nullubus call network.interface.wan6 status 2>/dev/nullip -6 routeip -6 addr show eth1logread | grep -Ei 'odhcp6c|dhcpv6|pd' | tail -30典型的主路由器設定:
uci set network.wan6=interfaceuci set network.wan6.device='eth1'uci set network.wan6.proto='dhcpv6'uci commit network/etc/init.d/network reload- 上游必須支援 IPv6/PD;部分 ONT/ISP 只給
/64或完全不給; - 沒有 PD 時,不要在 LAN 上自行編造「公用前置詞」;
- 本次實驗沒有上游 IPv6,因此未驗證 GUA/PD;只驗證了 ULA/RA/SLAAC。
預期取得 GUA 與預設路由,或明確得知上游「沒有 IPv6」。
DNS 與防火牆
Section titled “DNS 與防火牆”路由器 Shell分別測試 AAAA 與 IPv6 DNS
nslookup -type=AAAA openwrt.org 127.0.0.1nslookup -type=AAAA openwrt.org <router-ULA>cat /tmp/resolv.conf.d/resolv.conf.auto- 即使 DNS 走 IPv4,AAAA 也能解析;
- 用戶端的 DNS 可能來自 RA/DHCPv6,也可能是手動設定;
- 不要為了「IPv6 可用」就把所有 DNS 改成 IPv6;請保留 IPv4/IPv6 的後備機制。
防火牆:
uci show firewallnft list ruleset 2>/dev/null | head -80- 允許 ICMPv6/ND/RA(否則 IPv6 會壞);
- 允許 LAN→WAN 的 IPv6 轉送;
- 不要為了「測試連線」而停用 IPv6 防火牆;那會讓 LAN 暴露在外。
預期知道問題是「沒有 AAAA」還是「DNS 沒有走 IPv6」。
只有 fe80 位址
Section titled “只有 fe80 位址”- LAN 沒有 ULA 前置詞/
ip6assign; - odhcpd 未執行/RA 被擋;
- 用戶端
accept_ra=0; - 交換器/AP 擋住多播/ICMPv6。
有 ULA 但沒有 GUA
Section titled “有 ULA 但沒有 GUA”- 上游沒有 IPv6/PD;
wan6未設定/未收到前置詞;- ISP 只給
/64,無法再分給 LAN; - relay/ND proxy 情境不同;不要硬套。
有位址但無法上網
Section titled “有位址但無法上網”- 沒有預設 IPv6 路由;
- 防火牆轉送/ICMPv6;
- DNS 只走 IPv4;
- 上游路由/前置詞無效。
啟用 IPv6 後 IPv4 變慢或壞掉
Section titled “啟用 IPv6 後 IPv4 變慢或壞掉”- DNS 偏好/雙堆疊後備機制;
- 用戶端隱私位址/RA 參數;
- 先確保 IPv4 正常;IPv6 逐步加入。
E2 實驗紀錄(2026-10-20)
Section titled “E2 實驗紀錄(2026-10-20)”- 環境:OpenWrt 25.12.6 x86 VM 200;LAN
192.168.1.2/24+ ULAfd2f:385b:7d0a::1/60。 - ULA 前置詞
fd2f:385b:7d0a::/48;ip6assign=60;ra=server、ra_slaac=1、dhcpv6=server;odhcpd 執行中。 - 用戶端:SLAAC 取得
fd2f:385b:7d0a:0:5088:71ff:fed4:32d2/64;成功 ping 路由器的 ULA。 - 沒有上游 IPv6/GUA/PD;WAN6、真實 ISP、DHCPv6 用戶端與 IPv6 防火牆/NAT 未測試。
- 測試配方:
tests/recipes/ipv6-25.12.md。
- 這是 E2 部分驗證:已測試 LAN 的 ULA/RA/SLAAC;未測試 WAN 的 GUA/PD 與真實 ISP。
- 沒有獨立審閱者;結論僅限於此 VM/netns 環境。
- 不要把「LAN 有 ULA」說成「IPv6 網際網路可用」;ULA 僅限內部使用。