IPv4 位址耗盡,IPv6 部署已成必然。Linux 系統配置 IPv6 與 IPv4 邏輯相似,但位址格式、前綴長度、預設閘道表示法有所不同。本文以 Red Hat 系(CentOS/RHEL/Rocky/AlmaLinux)為例,示範靜態 IPv6 設定、服務重啟、連通性測試與遠端驗證完整流程。
eth02400:A480:AAAA:200::159/64(隱含於位址,或顯式設定)2400:A480:AAAA:200::12400:3200::1、2400:3200:baba::1(依 ISP 提供)sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
新增/修改以下參數:
IPV6INIT="yes"
IPV6ADDR="2400:A480:AAAA:200::159/64"
IPV6_DEFAULTGW="2400:A480:AAAA:200::1"
# 可選:DNS
# IPV6_DNS1="2400:3200::1"
# IPV6_DNS2="2400:3200:baba::1"
# 確保啟用 IPv6
NETWORKING_IPV6="yes"
# 設定 IPv6 靜態位址
sudo nmcli con mod eth0 ipv6.method manual \
ipv6.addresses "2400:A480:AAAA:200::159/64" \
ipv6.gateway "2400:A480:AAAA:200::1" \
ipv6.dns "2400:3200::1 2400:3200:baba::1"
# 套用
sudo nmcli con up eth0
查看結果:
nmcli -p device show eth0 | grep -i ipv6
# /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
IPv6=yes
Address=2400:A480:AAAA:200::159/64
Gateway=2400:A480:AAAA:200::1
DNS=2400:3200::1
DNS=2400:3200:baba::1
# 重啟
sudo systemctl restart systemd-networkd
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp6: false
addresses:
- "2400:A480:AAAA:200::159/64"
gateway6: "2400:A480:AAAA:200::1"
nameservers:
addresses:
- "2400:3200::1"
- "2400:3200:baba::1"
sudo netplan apply
| 發行版/管理器 | 重啟指令 |
|---|---|
| network-scripts (RHEL 7) | |
| NetworkManager | |
| systemd-networkd | |
| Netplan |
ip -6 addr show dev eth0
# 應看到 2400:A480:AAAA:200::159/64 scope global
ping -c 4 ipv6.google.com
# 或
ping -c 4 ipv6.baidu.com
# 或
curl -6 https://ipv6.test-ipv6.com/
traceroute6 ipv6.google.com
# 或
tracepath6 ipv6.google.com
ssh user@2400:A480:AAAA:200::159(需客戶端有 IPv6 連線)https://[2400:A480:AAAA:200::159]/(方括號必須)| 現象 | 可能原因 | 對策 |
|---|---|---|
| ping6 不通、無路由 | 缺少預設閘道、或閘道不在同一 /64 | 確認 ip -6 route show 有 default via ... dev eth0 |
| 位址顯示 tentative / dadfailed | 重複位址偵測 (DAD) 失敗,位址衝突 | 換一個 Interface ID(後 64 bits),重啟介面 |
| ssh 連線逾時 | 防火牆擋 ICMPv6 / TCP 22 | firewall-cmd --permanent --add-service=ssh、允許 ICMPv6 |
| NetworkManager 覆蓋手動設定 | 連線設定為 DHCPv6 或 SLAAC | 用 nmcli 設定 ipv6.method manual |
| IPv6 位址每次重開機改變 | 啟用了隱私延伸 (Privacy Extensions / SLAAC) | 靜態設定優先,或關閉 ipv6.privacy |
# firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-icmp-block-inversion
sudo firewall-cmd --permanent --add-icmp-type=router-advertisement
sudo firewall-cmd --permanent --add-icmp-type=neighbor-solicitation
sudo firewall-cmd --permanent --add-icmp-type=neighbor-advertisement
sudo firewall-cmd --reload
# iptables/ip6tables (legacy)
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo ip6tables -A INPUT -p icmpv6 -j ACCEPT
# /etc/sysctl.d/99-ipv6-forward.conf
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
sudo sysctl --system
完成上述步驟,您的 Linux 伺服器即具備完整 IPv6 連線能力。建議同步向 DNS 註冊 AAAA 記錄、設定 IPv6 防火牆規則、監控 IPv6 流量,迎接全面 IPv6 時代。