在Rocky Linux 9中配置IPv6地址需通过NetworkManager实现,以下是经过生产环境验证的流程及经验总结:
-
终端配置
nmcli con mod <连接名> ipv6.addresses 2001:db8::1/64 nmcli con mod <连接名> ipv6.gateway fe80::1%eth0 nmcli con mod <连接名> ipv6.method manual systemctl restart NetworkManager
子网掩码必须使用CIDR格式(/64),传统IPv4格式(255.255.255.0)会导致配置失效
-
配置文件法
编辑/etc/NetworkManager/system-connections/<连接名>.nmconnection
:[ipv6] addr-gen-mode=stable-privacy dns-search= method=manual address1=2001:db8::1/64,fe80::1%eth0
需特别注意%zone索引(fe80::1%eth0),缺少接口标识会导致链路本地网关失效
-
验证阶段
ip -6 addr show dev eth0 | grep 'scope global' ping6 2001:db8::2 -c4 -I eth0
若出现"Destination unreachable",优先检查交换机端口IPv6 ACL配置
实践中常见故障点:
- NetworkManager 1.40+版本对临时IPv6地址的随机化处理导致白名单失效,需设置
ipv6.addr-gen-mode=0
- 双栈环境下IPv6默认路由优先级高于IPv4,需通过
nmcli con mod <名> ipv6.route-metric 200
调整 - firewalld默认未放行IPv6 ICMPv6,需添加富规则:
firewall-cmd --add-rich-rule='rule protocol value=icmpv6 accept'
- 当使用SLAAC时,需确保内核参数
net.ipv6.conf.eth0.accept_ra=2
,否则会导致DHCPv6不生效
硬件兼容性问题:
某些较老的网卡(特别是Broadcom系列)需禁用ipv6.ip6-privacy
参数,并加载特定内核模块(如bnx2x)才能正常处理IPv6分片数据包。建议在虚拟化环境中优先使用virtio-net设备。