以下 IPv6 檢查適用於執行 Pingress 的 Linux 伺服器。
為什麼 Pingress 記錄的是閘道位址?
僅支援 IPv4 的 docker_gwbridge 可能轉換 IPv6 連線,隱藏原始用戶端位址,即使主機支援 IPv6 也是如此。前置 CDN 或其他代理也會改變直接連線的對端:Pingress 記錄該對端的位址,並用它填寫 X-Real-IP 和 X-Forwarded-For。
安裝程式會自動啟用 IPv6 嗎?
首次安裝或加入時,腳本會偵測主機的 IPv6,並嘗試準備雙堆疊網橋。出現選擇提示時,選 1 繼續僅使用 IPv4,選 2 結束並解決問題;預設會結束,沒有互動終端時也是如此。
--no-ipv6 會略過網橋準備,不會停用既有雙堆疊網橋的 IPv6。macOS 的網路由 Docker 執行環境管理。
如何檢查是否正常?
在執行 Pingress 的伺服器上執行:
ip -6 address show scope global
ip -6 route show default
docker network inspect docker_gwbridge --format '{{.EnableIPv6}}'最後一條應輸出 true,它僅確認設定,不代表連線正常。需要公開存取時,網域的 AAAA 記錄應指向可透過 IPv6 存取 Pingress 的位址。
從另一台支援 IPv6 的機器測試兩種協定,將範例網域替換為實際網域:
curl -4 --noproxy '*' -I https://app.example.com
curl -6 --noproxy '*' -I https://app.example.com核對 Pingress 的 client_ip,或應用程式收到的轉送標頭,是否為發起連線的用戶端位址。應用程式本身連線的對端是 Pingress,不是原始用戶端。
安裝後如何再啟用 IPv6?
先讓主機具備可用的 IPv6。網橋已輸出 true 時,檢查連線與 DNS 即可。尚未加入叢集的伺服器,執行安裝命令或伺服器清單提供的加入命令,不加上 --no-ipv6。
重新執行既有安裝不會升級網橋。 已在執行且網橋僅支援 IPv4 的伺服器需要安排維護:
- 備份本機資料,記錄節點 ID、角色、完整節點標籤、網橋設定,以及綁定該節點的應用程式、Pingress 或 Insight。
- 停止或遷移其工作負載。管理節點離開前,須維持過半數管理節點正常運作,並讓 CDelivery 控制台在其他節點正常執行,再將待維護節點降級。唯一的管理節點不可直接離開,應先完成安全接管或制定備份還原計畫。具體操作請參閱 Docker 節點維護說明。
- 節點離開且網橋沒有容器參照後,從正常執行的控制台取得原角色的新加入命令,不加上
--no-ipv6;腳本會在加入前準備預設網橋。自訂網橋需保留原有子網路與選項,另行準備雙堆疊網橋。邀請有效期限為 30 分鐘,CDelivery 重新啟動或遷移後也會失效。 - 重新加入會產生新的節點 ID。還原完整標籤(包括資料卷說明),修復服務對舊 ID 的綁定。使用本機資料卷的應用程式與使用本機儲存的 Insight,不能只在介面中更換節點,需要管理員維護部署約束。資料仍留在原主機上。
- 還原服務,依需要調整 DNS,重新驗證上述 IPv4、IPv6 存取與用戶端位址。
也可以加入另一台支援 IPv6 的伺服器,將 Pingress 部署到該伺服器,再將 DNS 指向它。
IPv6 路由或防火牆異常怎麼辦?
啟用轉送後,accept_ra=1 的介面可能停止接收路由器通告(RA),導致預設路由消失。透過介面所屬的網路管理器持久設定 RA:ifupdown 使用 accept_ra 2,ifupdown-ng 使用 ipv6-accept-ra 2。網路管理器自行處理 RA 的介面,不要盲目覆寫其 accept_ra=0。重新啟動介面或主機後,再次檢查路由。
保持 Docker 的 IPv6 防火牆管理啟用(ip6tables 不可為 false),並在主機防火牆與雲端安全群組中放行 Pingress 的 HTTP/HTTPS 連接埠。網橋輸出 true 並不能證明這些規則或外部存取正常。
其他存取問題
DNS 或路由問題先依網域與路由逐段檢查;憑證缺失、到期或簽發失敗見自動憑證與續期。使用存取日誌確認請求是否到達入口、是否符合應用程式規則,以及上游是否成功回應。