雖然 IPv6 是未來趨勢,但在 IPv4/IPv6 雙棧共存環境下,應用程式(如 apt-get、ssh、DNS 解析)常因優先嘗試 IPv6 連線失敗而導致超時。若確認 IPv6 為故障根因,可依需求選擇臨時或永久禁用方案。本文適用於 Ubuntu、Debian、CentOS、RHEL、Fedora、Arch 等主流發行版。
$ ifconfig
# 或
$ ip addr
輸出中若出現 inet6 開頭的位址(如 inet6 fe80::...),表示 IPv6 已啟用。
透過 /proc 檔案系統動態調整核心參數:
sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6'
sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6'
sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
/etc/sysctl.conf(推薦)編輯檔案並加入:
# 禁用全系統 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用特定介面(視需求添加)
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
套用設定:
sudo sysctl -p /etc/sysctl.conf
# 或直接重啟系統
編輯 /etc/default/grub,在 GRUB_CMDLINE_LINUX 加入 ipv6.disable=1:
GRUB_CMDLINE_LINUX="... ipv6.disable=1"
更新 Grub 並重啟:
sudo update-grub # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # CentOS/RHEL
reboot
重啟後再次執行 ip addr 確認無 inet6 輸出。若後續需恢復 IPv6,僅需刪除對應設定並重啟或執行 sysctl -p 即可。
/etc/gai.conf 優先 IPv4),而非盲目禁用;靈活運用臨時與永久方案,能在故障排除與長期治理間取得平衡,確保業務連續性。


