linux中nmcli不直接配置ipv6生存期,需通过sysctl调优:对slaac地址设net.ipv6.conf.eth0.{valid_lft,prefered_lft}限制最大生命周期,对dhcpv6地址则用nmcli connection modify设置ipv6.dhcp-timeout等选项协商租期。

Linux 中 nmcli 本身不直接暴露 IPv6 地址生存期(valid_lft / preferred_lft)的配置接口,因为这些参数属于内核邻居发现(NDISC)和地址自动配置(SLAAC)的底层行为,由 sysctl 控制,而非 NetworkManager 的连接级配置项。但你可以通过 nmcli 配合系统级调优,实现对 IPv6 地址租约生命周期的间接、有效、生产可用的控制。
以下方法兼顾安全性、持久性和可维护性,适用于 RHEL/CentOS/Rocky/AlmaLinux、openEuler、Fedora 等基于 NetworkManager 的主流发行版。
确认当前 IPv6 地址类型与来源
首先区分地址是手动配置(static)、SLAAC 自动获取,还是 DHCPv6 分配——不同来源对应不同调优路径:
- 手动配置(ipv6.method manual):地址无生存期概念(valid_lft=forever),不触发租约更新,无需调整生存期
-
SLAAC 地址(ipv6.method auto):依赖路由器通告(RA)中的
ValidLifetime和PreferredLifetime,控制权在网关侧;本地可通过sysctl限制接收上限 -
DHCPv6 地址(ipv6.method auto + dhcp-duid 或 ipv6.method dhcp):租期由 DHCPv6 服务器下发,客户端可通过
dhclient参数或 NM 的 DHCP 选项干预
针对 SLAAC 地址:用 sysctl 限制最大生存期
NetworkManager 不允许直接设 preferred_lft,但可通过内核参数防止 SLAAC 地址“永久有效”,强制定期刷新:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 编辑
/etc/sysctl.d/99-ipv6-lifetime.conf:
net.ipv6.conf.all.accept_ra = 2 net.ipv6.conf.all.accept_ra_defrtr = 1 net.ipv6.conf.all.accept_ra_rtr_pref = 1 net.ipv6.conf.all.accept_ra_pinfo = 1 # 限制 SLAAC 地址最大有效/首选生存期(秒),覆盖 RA 中过长的值 net.ipv6.conf.all.max_desync_factor = 300 net.ipv6.conf.all.retrans_time_ms = 1000 net.ipv6.conf.all.base_reachable_time_ms = 30000 # 关键:限制单个地址的最大 lifetime(单位:秒) net.ipv6.conf.all.addr_gen_mode = 1 # ⚠️ 以下两项需根据实际网络策略设置(例如:强制最多 2 小时有效,30 分钟首选) net.ipv6.conf.eth0.valid_lft = 7200 net.ipv6.conf.eth0.prefered_lft = 1800
- 立即生效:
sudo sysctl --system - 验证:
ip -6 addr show dev eth0查看地址后是否带preferred或deprecated标记
针对 DHCPv6 地址:通过 nmcli 设置 DHCP 选项
若使用 DHCPv6 获取地址(ipv6.method dhcp),可指定客户端请求的租期偏好(服务器未必遵守,但能增强协商能力):
- 修改连接,添加 DHCPv6 客户端选项:
sudo nmcli connection modify eth0 \ ipv6.dhcp-send-hostname yes \ ipv6.dhcp-hostname "myhost" \ # 建议租期(单位:秒),部分 DHCPv6 服务端支持 ipv6.dhcp-iaid 12345 \ # 启用快速确认(RFC 3315 5.3),减少重传延迟 ipv6.dhcp-timeout 30
- 重启连接生效:
sudo nmcli connection down eth0 && sudo nmcli connection up eth0 - 查看 DHCPv6 租约详情:
sudo journalctl -u NetworkManager | grep -i "dhcpv6\|ia_na"
验证与监控生存期行为
仅配置不验证等于未完成。建议建立轻量检查机制:
- 实时观察地址状态变化:
watch -n 10 'ip -6 addr show dev eth0 | grep -E "(inet6|preferred|deprecated)"' - 检查 RA 接收情况:
sudo radvdump(需安装radvd)或抓包:sudo tcpdump -i eth0 icmp6 and ip6[40] == 134(RA 类型为 134) - 确认 sysctl 生效:
sysctl net.ipv6.conf.eth0.prefered_lft(注意拼写是prefered_lft,非preferred)
不复杂但容易忽略:SLAAC 的 lifetime 控制本质是“防御性上限”,不是精确调度;真正可控的租约管理仍推荐 DHCPv6 + 服务端策略协同。










