(適用 Ubuntu 22.04 / 24.04 / 24.10 / 24.04 LTS “Noble”)
在企業或內部環境中,許多網路尚未支援 IPv6,導致 Ubuntu 系統在安裝套件時出現連線錯誤。
例如以下訊息:
Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::102).
Network is unreachable
這表示 apt 嘗試透過 IPv6 連線,但 IPv6 網路不可達,導致安裝或更新中斷。
🔍 問題說明
Ubuntu 預設會:
- 啟用 IPv6 網路堆疊;
- 在 DNS 查詢時優先使用 IPv6;
apt也會自動使用 IPv6 位址連線。
當伺服器、網關或防火牆未支援 IPv6 時,就會出現「Network is unreachable」或「Connection timed out」的錯誤。
🧰 解決步驟
步驟 1:永久關閉 IPv6
編輯設定檔:
sudo nano /etc/sysctl.conf
在最後加入以下內容:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
套用設定:
sudo sysctl -p
確認是否關閉:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
若輸出為 1,表示 IPv6 已停用。
步驟 2:強制 apt 使用 IPv4
建立設定檔:
sudo nano /etc/apt/apt.conf.d/99force-ipv4
內容輸入:
Acquire::ForceIPv4 "true";
儲存後執行:
sudo apt clean
sudo apt update
此時 apt 應只會使用 IPv4 位址,例如:
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
步驟 3(選用):讓系統整體偏好 IPv4
編輯 /etc/gai.conf:
sudo nano /etc/gai.conf
找到下列設定並取消註解(移除 #):
precedence ::ffff:0:0/96 100
這會讓系統在所有網路連線中優先使用 IPv4。
✅ 驗證方式
- 確認 IPv6 已停用:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6顯示1即成功。 - 確認 DNS 僅回傳 IPv4:
getent ahosts archive.ubuntu.com若未出現開頭為2620:的位址(IPv6),則設定完成。 - 驗證 apt:
sudo apt update若更新正常且無Network is unreachable,代表設定成功。
📘 總結
| 項目 | 動作 |
|---|---|
| 關閉 IPv6 | 編輯 /etc/sysctl.conf |
| 強制 apt 使用 IPv4 | 新增 /etc/apt/apt.conf.d/99force-ipv4 |
| 系統層級 IPv4 優先 | 修改 /etc/gai.conf |
| 驗證 | getent ahosts 與 apt update |
💡 建議(企業環境)
在企業網路中,若 IPv6 未啟用或未通過防火牆,建議:
- 預設停用 IPv6;
- 對伺服器映像(image)預先加入
99force-ipv4設定; - 於內部 SOP 中明列「Ubuntu IPv6 關閉標準作法」。