nmcli 可通过 connection.modify 间接设置 ipv6.addr-gen-mode(需 nm≥1.26),否则用 sysctl;设为0启用稳定隐私地址,1强制eui-64,2禁用slaac自动生成。

在 Linux 中,nmcli 本身不直接提供设置 ipv6.addr-gen-mode 的命令行参数(该字段属于内核网络接口级配置,由 sysctl 或 iproute2 控制),但可以通过 nmcli 配合 connection.modify 的底层属性方式间接生效——前提是 NetworkManager 版本 ≥ 1.26(RHEL 8.4+/CentOS Stream 8+、Ubuntu 20.10+ 等较新系统)支持该选项。
确认系统是否支持 ipv6.addr-gen-mode
执行以下命令检查当前连接是否允许设置该属性:
-
nmcli connection show "你的连接名" | grep -i addr-gen—— 若无输出,说明未启用或不识别 -
nmcli -p connection show "你的连接名" | grep -A5 "ipv6"—— 查看完整 ipv6 区块中是否有addr-gen-mode字段 - 运行
nmcli --version,确认 ≥ 1.26;低于此版本需改用 sysctl 方式
使用 nmcli 设置 addr-gen-mode(推荐方式)
若支持,可按如下步骤操作(以连接名为 eth0 为例):
- 先设为手动 IPv6 模式:
nmcli connection modify eth0 ipv6.method manual - 指定地址生成算法:
nmcli connection modify eth0 ipv6.addr-gen-mode 0(0=stable-privacy,1=eui64,2=none) - 确保 IPv6 启用:
nmcli connection modify eth0 ipv6.ignore-auto-routes no(避免冲突) - 重新激活连接:
nmcli connection down eth0 && nmcli connection up eth0
注:addr-gen-mode=0 启用 RFC 7217 稳定隐私地址(默认行为);=1 强制使用 EUI-64(如 fe80::20c:29ff:feXX:XXXX);=2 禁用 SLAAC 地址自动生成,仅保留手动配置的地址。
不支持 nmcli 直接设置时的替代方案
若 NetworkManager 版本过低或该属性未暴露,需通过内核参数控制:
- 临时生效(重启失效):
sudo sysctl -w net.ipv6.conf.eth0.addr_gen_mode=0 - 永久生效:编辑
/etc/sysctl.d/99-ipv6-addr-gen.conf,添加:
net.ipv6.conf.eth0.addr_gen_mode = 0 - 重载配置:
sudo sysctl --system - 注意:此方式影响所有基于该接口的 IPv6 行为(包括 NetworkManager 管理的连接)
验证当前 addr-gen-mode 是否生效
执行以下命令组合确认实际效果:
-
sysctl net.ipv6.conf.eth0.addr_gen_mode—— 输出应为 0/1/2 -
ip -6 addr show dev eth0—— 观察 global 地址是否含稳定隐私前缀(如 fdxx:… 或随机后缀),而非固定 EUI-64 格式 -
nmcli -p connection show eth0 | grep -E "(method|addr-gen)"—— 确认配置已写入连接定义











