1. Rocky Linux 9 IPv6配置概述
在当今互联网环境中,IPv6已成为不可或缺的网络协议。作为RHEL的替代发行版,Rocky Linux 9默认已集成完整的IPv6支持栈。与IPv4相比,IPv6不仅拥有更大的地址空间(128位 vs 32位),还具备更好的多播支持、更简化的报头结构和原生安全特性。
实际部署中,我们主要会遇到三种IPv6地址配置场景:
- SLAAC(无状态地址自动配置):路由器通告前缀,主机自动生成接口标识
- DHCPv6:通过DHCP服务器获取完整配置
- 静态配置:手动指定所有网络参数
关键提示:Rocky Linux 9已弃用传统的ifcfg文件,全面转向NetworkManager的nmconnection配置体系。所有网络配置现在存储在/etc/NetworkManager/system-connections/目录下。
2. 网络环境检测与准备
2.1 现有网络接口检查
首先确认系统识别到的网络接口及当前IP配置:
nmcli device status ip -6 address show典型输出示例:
ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet6 2001:db8::a00:27ff:fe4e:66a1/64 scope global dynamic valid_lft 2592000sec preferred_lft 604800sec inet6 fe80::a00:27ff:fe4e:66a1/64 scope link valid_lft forever preferred_lft forever2.2 内核IPv6模块验证
检查IPv6内核支持状态:
lsmod | grep ipv6 sysctl -a | grep ipv6 | grep disable关键参数说明:
net.ipv6.conf.all.disable_ipv6:全局禁用开关net.ipv6.conf.default.disable_ipv6:默认接口策略net.ipv6.conf.<interface>.disable_ipv6:指定接口策略
常见问题:若发现IPv6被禁用,可通过
sysctl -w net.ipv6.conf.all.disable_ipv6=0临时启用,或编辑/etc/sysctl.conf永久生效。
3. NetworkManager配置详解
3.1 nmcli基础命令结构
NetworkManager提供了完整的IPv6管理功能,其命令语法遵循统一模式:
nmcli [OPTIONS] OBJECT { COMMAND | help }IPv6相关OBJECT包括:
connection:管理连接配置device:操作物理/虚拟设备general:查看守护进程状态
3.2 静态IPv6配置实战
配置永久静态IPv6地址(示例使用2001:db8::1/64):
nmcli connection modify ens192 \ ipv6.addresses "2001:db8::1/64" \ ipv6.gateway "2001:db8::ffff" \ ipv6.dns "2001:4860:4860::8888" \ ipv6.method "manual" \ ipv6.ignore-auto-dns true参数解析:
ipv6.addresses:支持多个地址,用逗号分隔ipv6.method manual:表示静态配置ipv6.ignore-auto-dns:禁用自动DNS获取
3.3 DHCPv6配置方法
启用有状态DHCPv6获取:
nmcli connection modify ens192 \ ipv6.method "dhcp" \ ipv6.dhcp-duid "llt" \ ipv6.dhcp-iaid "mac"关键参数说明:
dhcp-duid:客户端标识类型(llt/link-layer/uuid)dhcp-iaid:接口关联标识生成方式
3.4 SLAAC自动配置
配置无状态自动获取:
nmcli connection modify ens192 \ ipv6.method "auto" \ ipv6.addr-gen-mode "stable-privacy" \ ipv6.ip6-privacy 2地址生成模式选项:
eui64:基于MAC地址的传统方式stable-privacy:增强隐私保护(RFC7217)
4. 高级配置场景
4.1 多地址绑定实践
为单个接口配置多个IPv6地址:
nmcli connection modify ens192 \ +ipv6.addresses "2001:db8::100/64" \ +ipv6.addresses "2001:db8::200/64"使用+符号表示追加而非覆盖现有配置。
4.2 IPv6路由管理
查看当前路由表:
ip -6 route show添加永久静态路由:
nmcli connection modify ens192 \ +ipv6.routes "2001:db8:1::/64 2001:db8::ffff"4.3 防火墙策略配置
使用firewalld管理IPv6流量:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv6" source address="2001:db8::/64" accept' --permanent firewall-cmd --reload5. 故障排查指南
5.1 连接测试基础命令
基本连通性检查:
ping6 2001:db8::1 traceroute6 google.com详细诊断工具:
nmcli device show ens192 | grep -i ip6 journalctl -u NetworkManager --since "1 hour ago" | grep -i ipv65.2 常见问题解决方案
场景1:IPv6地址无法获取
排查步骤:
- 确认路由器通告已开启
- 检查NetworkManager日志
- 验证防火墙未阻断DHCPv6流量(UDP 546/547)
场景2:DNS解析失败
解决方案:
nmcli connection modify ens192 \ ipv6.ignore-auto-dns false \ ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844" systemctl restart NetworkManager场景3:MTU问题导致大包传输失败
诊断方法:
ping6 -s 1472 -M do 2001:db8::1若1472字节失败但1400字节成功,表明存在MTU不匹配。
6. 持久化配置与优化
6.1 连接配置备份
导出当前网络配置:
nmcli connection export ens192 > ens192-backup.nmconnection导入配置恢复:
nmcli connection import type ethernet file ens192-backup.nmconnection6.2 性能调优参数
优化IPv6栈性能:
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.accept_ra=2" >> /etc/sysctl.conf sysctl -p6.3 网络测试脚本示例
自动化测试连接质量:
#!/bin/bash TEST_IP="2001:db8::1" ping6 -c 4 $TEST_IP > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "IPv6 connectivity OK" mtr --report --report-cycles 5 $TEST_IP else echo "IPv6 connectivity FAILED" ip -6 route show nmcli device show fi在实际部署中,我发现Rocky Linux 9的NetworkManager对IPv6的支持相当完善,但在处理复杂路由场景时,建议结合iproute2工具进行补充配置。对于需要高可用性的环境,可以考虑使用keepalived实现IPv6 VIP的故障转移。