萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統配置 IPv6 地址完整教程:從臨時生效到永久持久化

隨著 IPv4 地址枯竭,IPv6 部署已成必然趨勢。在 Linux 服務器上配置 IPv6 地址,既要掌握臨時命令行配置(測試驗證用),又要會修改網絡腳本實現重啟持久化。本文以 RHEL/CentOS 系列為例,兼顧 Debian/Ubuntu 差異,手把手教你完成 IPv6 靜態地址配置、默認網關設置、連通性測試與遠程驗證全流程。

場景假設

  • 網卡介面:eth0
  • IPv6 地址:2400:A480:AAAA:200::159/64
  • 默認網關:2400:A480:AAAA:200::1
  • DNS:2400:3200::1 (示例,請替換為實際可用 IPv6 DNS)

方法一:命令行臨時配置 (重啟失效,適合測試)

# 啟用接口 IPv6
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0

# 添加地址
sudo ip -6 addr add 2400:A480:AAAA:200::159/64 dev eth0

# 添加默認路由
sudo ip -6 route add default via 2400:A480:AAAA:200::1 dev eth0

# 驗證
ip -6 addr show dev eth0
ip -6 route show
ping6 ipv6.google.com

方法二:永久配置 — RHEL / CentOS / Rocky / AlmaLinux (網絡腳本法)

1. 編輯接口配置文件

sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改/追加以下鍵值(保留原有 IPv4 配置):

IPV6INIT="yes"
IPV6ADDR="2400:A480:AAAA:200::159/64"
IPV6_DEFAULTGW="2400:A480:AAAA:200::1"
IPV6_AUTOCONF="no"          # 禁用 SLAAC 自動配置,避免衝突
IPV6_FAILURE_FATAL="no"     # IPv6 失敗不影響 IPv4
# 可選:指定 DNS
DNS1="2400:3200::1"
DNS2="2400:3200:baba::1"

ifcfg-eth0 IPv6 配置示例

2. 重啟網絡服務生效

# CentOS 7/8/9 (systemd)
sudo systemctl restart NetworkManager
# 或傳統 network 服務
sudo systemctl restart network

方法三:永久配置 — Debian / Ubuntu (Netplan / interfaces)

Netplan (Ubuntu 18.04+、Debian 10+)

sudo vi /etc/netplan/01-netcfg.yaml
# 縮進必須為空格,勿用 Tab
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 2400:A480:AAAA:200::159/64
      gateway6: 2400:A480:AAAA:200::1
      nameservers:
        addresses: [2400:3200::1, 2400:3200:baba::1]
      dhcp6: false
      accept-ra: false
sudo netplan apply

/etc/network/interfaces (舊版/無 Netplan 系統)

iface eth0 inet6 static
    address 2400:A480:AAAA:200::159
    netmask 64
    gateway 2400:A480:AAAA:200::1
    dns-nameservers 2400:3200::1 2400:3200:baba::1
    autoconf 0
sudo systemctl restart networking

驗證連通性

  1. 本地 Ping: ping6 ipv6.baidu.com 或 ping6 2400:da00::6666 (清華 IPv6 鏡像)
  2. 查看路由: ip -6 route 應包含 default via 2400:A480:AAAA:200::1 dev eth0
  3. 查看地址: ip -6 addr show eth0 應顯示 2400:a480:aaaa:200::159/64 scope global

ping6 測試成功截圖

遠程驗證:客戶端 SSH 連接測試

使用支援 IPv6 的 SSH 客戶端 (OpenSSH、PuTTY、SecureCRT、MobaXterm、Windows 10+ 內建 SSH) 直接連接 IPv6 地址:

ssh user@2400:A480:AAAA:200::159
# 或帶區域 ID (鏈路本地地址時需用)
ssh user@fe80::215:5dff:fe12:3456%eth0

SecureCRT IPv6 連接配置
SSH 連接成功
遠程會話截圖

常見問題排查

現象可能原因解決
ping6 不通,但 IPv4 正常防火牆阻擋 IPv6 ICMPip6tables -A INPUT -p icmpv6 -j ACCEPT 或 firewall-cmd --permanent --add-protocol=ipv6-icmp
地址顯示 tentative (DAD 失敗)地址衝突/重複檢查網段內其他設備,更換 Interface ID
重啟後配置丟失NetworkManager 覆蓋 / 管理權衝突nmcli con mod eth0 ipv6.method manual ipv6.addresses '2400:A480:AAAA:200::159/64' ipv6.gateway '2400:A480:AAAA:200::1'; nmcli con up eth0
SSH 連不上sshd 未監聽 :::22 / 防火牆 / SELinuxss -ntlp | grep :22 確認監聽 ::;放行 22 端口;setsebool -P sshd_use_tcp_wrapper 1

總結

Linux 配置 IPv6 核心在於:接口啟用 IPv6 → 靜態地址/前綴長度 → 默認網關 → DNS → 防火牆放行 ICMPv6/SSH → 持久化寫入對應發行版配置文件。RHEL 系改 ifcfg-ethX,Debian 系用 Netplan 或 interfaces。配置完成後,務必用 ping6 測外網、用 IPv6 SSH 客戶端測遠程,雙向通暢才算大功告成。

copyright © 萬盛學電腦網 all rights reserved