前言
IPv6 推廣了這麼多年,我一直覺得身為一個搞技術的人,應該要跟上時代。而且對我來說,IPv6 有個很實際的好處:不用設 port forwarding。
我因為身體限制,只能用一根手指打字,操作成本比一般人高很多。每少一個要點擊、要設定的步驟,對我來說都是有感的。IPv6 讓每個裝置都有公開位址,要遠端存取直接連就好,不用在路由器上一條一條設 NAT 規則。
這不是為了追新技術而費事,是真的有需求。
於是某天我決定認真把中華電信的 IPv6 打開來用。結果是一場災難。
問題的開始
開啟 IPv6 之後,網路變得很不穩定。有時候網頁載入很慢,有時候圖片出不來,有時候連線直接卡住。最討厭的是那種「不是完全不能用,但就是怪怪的」狀態,你很難確定問題到底在哪裡。
一開始我以為是華碩路由器的問題。爬了一些文,發現很多人說消費級路由器的 IPv6 支援不好,建議換 OpenWrt。
但仔細想想,這其實很諷刺。華碩是台灣本土廠商,總部就在台灣,員工自己家裡用的大概也是中華電信。理論上他們應該最清楚 HiNet 的 PPPoE Dual Stack 怎麼運作,最有條件做出針對性的最佳化。
結果呢?預設值還是踩雷,IPv6 一樣不穩。
一個台灣使用者,買台灣品牌的路由器,接台灣最大的 ISP,結果 IPv6 還是爛。三方都是本土的,卻沒有人把這條路走通。
好,那就換。
買了 GL.iNet 路由器
我買了一台 GL.iNet 的路由器,它原生就是跑 OpenWrt,心想這下應該能解決問題了。OpenWrt 的設定彈性大,網路上也有很多針對中華電信的設定教學。
結果呢?
跟華碩一模一樣爛。
這下我確定問題不在路由器了。
開始研究原因
既然換了路由器還是一樣,那問題只能在中華電信那端。我開始認真研究到底是怎麼回事。
MTU 黑洞
PPPoE 連線的 MTU 是 1492,但很多路由器預設是 1500。當封包太大又遇到中間路由器擋掉 ICMPv6「Packet Too Big」訊息時,PMTUD 就會失敗。
症狀就是:有些網站正常、有些很慢、有些完全打不開。
PPPoE Dual Stack 的坑
中華電信要求 IPv4 和 IPv6 必須走同一個 PPPoE session。但很多路由器不支援這個功能,或者沒有設成預設值。
72 小時強制斷線
HiNet 每 72 小時會強制 PPPoE 重連。重連後 WAN 拿到新的 prefix,但 LAN 端的裝置可能還抱著舊的 IPv6 位址。如果路由器沒有正確發送 RA 通知裝置「舊位址不能用了」,就會造成連線黑洞。
DHCPv6-PD 只給 /64
非固定制使用者只能拿到 /64 的 LAN prefix,完全沒有切割空間。相比之下,荷蘭的 XS4ALL 從 2009 年就給使用者 /48,可以自己切出 65,536 個子網路。
這點我一直想不通。IPv6 有 128 位元,340 澗個位址,根本不會有枯竭問題。RFC 3177 也建議給家用訂戶 /48,大方給就好了,為什麼中華電信要這樣省?
可能的原因:路由表考量?計費系統的歷史包袱?怕使用者拿去做奇怪的事?還是單純沒想那麼多,預設就這樣設了?
說穿了可能就是:沒人逼他們改,改了也不會多賺錢,那就維持現狀。還在用 IPv4 的思維在管理 IPv6。
連網路設備廠商都沒做好
更荒謬的是,連專業網路設備廠商都沒把 IPv6 當回事。apalrd 在影片裡提到,Ubiquiti 這麼大的廠牌,到現在都還沒有完整支援 IPv6。他們只做了最基本的支援,例如你想用 VPN 搭配 IPv6?抱歉,沒辦法。
Ubiquiti 的 UniFi 系列是很多 home lab 玩家和中小企業的首選,結果 IPv6 還是半殘狀態。這代表大多數客戶根本不在乎這個功能,廠商也就沒有動力做完整。功能清單上有寫「支援 IPv6」就夠交差了,真正用到進階功能的人是少數。
連做網路裝置的公司都這樣,更不用說一般消費級路由器了。
這是台灣獨有的問題嗎?
我本來以為是中華電信特別爛,結果研究之後發現:全世界的 ISP 都差不多爛。
德國使用者用 pfSense 配 PPPoE 也遇到頻繁斷線,阿聯酋使用者換了 TP-Link 路由器後一開 IPv6 就斷網。RIPE(歐洲網路協調中心)甚至專門為 ISP 客服寫了 IPv6 故障排除指南,因為太多使用者抱怨了。
不過有些國家確實做得比較好。荷蘭的 XS4ALL 從 2002 年就開始佈建 IPv6,到 2012 年所有新使用者預設啟用,採用率超過 70%。差別在於他們起步早、有時間踩雷、而且給使用者足夠大的 prefix。
有個做 home lab 的 YouTuber apalrd's adventures 甚至因為網路環境的關係搬去了芬蘭。對於需要穩定 IPv6、要跑伺服器、做直播的人來說,搬家的成本搞不好比長期搞這些還划算。
為什麼行動網路沒這個問題?
有趣的是,中華電信的行動網路 IPv6 使用率高達 75-80%,而且很穩定。
原因是行動網路沒有 PPPoE、沒有 MTU 問題、沒有 72 小時重連、不需要 DHCPv6-PD。整個連線全程由電信商控制,所以反而沒事。
固網的問題在於 PPPoE + DHCPv6-PD + 各種消費級路由器的組合,變數太多,中華電信無法控制用戶端裝置的行為。
我的下一步
雖然知道問題在 ISP 端,但 OpenWrt 確實還有一些可以調整的空間,我之前都用預設值沒改。
接下來我打算試試:
- MTU 設成 1492
- 確認 PPPoE IPv4/IPv6 共用同一個 session
- 開啟 DeprecatePrefix,讓 72 小時重連後裝置能自動換新位址
- 調整 RA MTU
- 確認防火牆允許 ICMPv6
如果調完還是爛,那就真的死心了。
更新:測試結果
用 Claude 的瀏覽器代理直接操作 OpenWrt LuCI 介面,調整了以下設定:
第一階段:基本設定
- WAN (PPPoE) MTU 設為 1492
- 確認 WAN6 DHCPv6 用戶端正常運作
- LAN RA MTU 設為 1492
- 啟用 deprecate_prefix
- 確認防火牆 ICMPv6 規則
測試結果:test-ipv6.com 拿到 10/10 滿分。
第二階段:針對 Apple 裝置最佳化
因為我準備切換到全 Apple 生態系,而 Apple 裝置在待機狀態下處理 prefix 變更的行為比較差,所以額外做了以下調整:
# 縮短 RA lifetime 到 2 小時,prefix 變更時最多卡 2 小時而不是幾天
uci set dhcp.lan.ra_maxinterval='1800'
uci set dhcp.lan.ra_mininterval='600'
uci set dhcp.lan.ra_lifetime='7200'
uci commit dhcp
# 建立 hotplug script,WAN 重連時主動通知 LAN 裝置
cat << 'EOF' > /etc/hotplug.d/iface/99-ipv6-prefix-update
#!/bin/sh
[ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "wan6" ] && {
logger -t ipv6-prefix "WAN6 reconnected, restarting odhcpd"
sleep 5
/etc/init.d/odhcpd restart
}
EOF
chmod +x /etc/hotplug.d/iface/99-ipv6-prefix-update
這樣 72 小時重連時,hotplug 會主動重啟 odhcpd 發送新的 RA,裝置應該能更快切換到新 prefix。
目前狀態
- 路由器:GL.iNet MT6000(跑 Kwrt 24.10-SNAPSHOT)
- IPv6 連線狀況:正常,ping Google DNS 約 2.8ms
- LAN 裝置已取得 IPv6 租約
接下來觀察一週,看看長期穩定性如何。特別關注 72 小時後 PPPoE 重連、prefix 換掉時 Apple 裝置的行為。
(待續:一週後更新長期穩定性結果)
結論
IPv6 的概念很好,但現階段在台灣固網環境要穩定使用,需要:
- ISP 端把基礎設施做好
- 用戶端路由器正確支援
- 使用者自己懂得調整參數
三個條件缺一不可。對於只是想上網不想麻煩的人,關掉 IPv6 目前還是最務實的選擇。
本文撰寫於 2026 年 1 月,測試環境為中華電信光世代非固定制。