介紹如何在 Ubuntu Linux 中停用 IPv6 網路位址,只使用 IPv4 網路位址。
停用 IPv6 網路位址
在 Ubuntu Linux 中,若要查詢系統目前的網路位址,可以使用 ip
指令:
# 查詢 IP 位址
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8550 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:0a:2c:91 brd ff:ff:ff:ff:ff:ff inet 192.168.211.16/24 brd 192.168.211.255 scope global dynamic ens3 valid_lft 70738sec preferred_lft 70738sec inet6 fe80::f816:3eff:fe0a:2c91/64 scope link valid_lft forever preferred_lft forever
若要停用 IPv6 的網路位址,可以使用 sysctl
指令:
# 停用 IPv6 網路位址 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
停用 IPv6 之後,在以 ip
指令查詢網路位址時,就不會出現 IPv6 的位址了:
# 查詢 IP 位址
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8550 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:0a:2c:91 brd ff:ff:ff:ff:ff:ff inet 192.168.211.16/24 brd 192.168.211.255 scope global dynamic ens3 valid_lft 70636sec preferred_lft 70636sec
若要恢復 IPv6 網路位址,則可執行:
# 啟用 IPv6 網路位址 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0 sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
開機自動停用 IPv6 網路位址
使用 sysctl
停用或啟用 IPv6 網路位址,只會影響當前的系統狀態,重新開機之後就會恢復成預設值。
若要改變系統的預設值,可以將設定值寫在 /etc/sysctl.conf
設定檔中。例如若要永久停用 IPv6 網路位址,則在 /etc/sysctl.conf
加入這幾行設定:
# 停用 IPv6 網路位址 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
若要永久啟用 IPv6 網路位址,則改為這樣:
# 啟用 IPv6 網路位址 net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0
透過 GRUB 停用 IPv6 網路位址
若要透過 GRUB 讓系統在開機時就停用 IPv6 的網路位址,可編輯 /etc/default/grub
設定檔,修改 GRUB_CMDLINE_LINUX_DEFAULT
與 GRUB_CMDLINE_LINUX
兩項設定值,加入 ipv6.disable=1
:
# 停用 IPv6 網路位址 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1" GRUB_CMDLINE_LINUX="ipv6.disable=1"
這樣系統在開機時就會直接將 IPv6 網路位址停用。
參考資料:It’s FOSS