通过 …
通过 EUI-64 固定各系统设备的 IPv6 后缀
Windows 11
用管理员权限打开 PowerShell,输入 Get-NetIPv6Protocol。
PS C:\Users\sukipai> Get-NetIPv6Protocol
DefaultHopLimit : 128
......
RandomizeIdentifiers : Enabled
AddressMaskReply : Disabled
UseTemporaryAddresses : Enabled
......
注意到以下两个参数
RandomizeIdentifiers:网络配置参数,用于控制 Windows 操作系统在生成接口标识符(Interface Identifier,IID)时是否使用随机值。
UseTemporaryAddresses:设置使用临时地址。
输入以下命令使用 EUI-64 固定 IPv6 后缀
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
Set-NetIPv6Protocol -UseTemporaryAddresses Disabled
执行后,IP 可能会瞬间发生变化导致断连,建议做好充分准备再操作。
变化后的 IPv6 后缀会包含你的网卡 MAC 地址。
Linux
在 Linux 系统中,可以通过 sysctl 配置来禁用随机化标识符:
# 查看当前配置
sysctl net.ipv6.conf.all.use_tempaddr
sysctl net.ipv6.conf.default.use_tempaddr
sysctl net.ipv6.conf.eth0.use_tempaddr
# 禁用临时地址和随机化标识符
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=0
sudo sysctl -w net.ipv6.conf.default.use_tempaddr=0
sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=0
# 永久生效(以Ubuntu/Debian为例)
echo "net.ipv6.conf.all.use_tempaddr = 0" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.use_tempaddr = 0" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.eth0.use_tempaddr = 0" | sudo tee -a /etc/sysctl.conf
# 应用配置
sudo sysctl -p
重启网络服务或重新连接网络后,系统将使用基于 MAC 地址的 EUI-64 标识符。
macOS
在 macOS 中,可以通过以下命令配置:
# 查看当前网络接口配置
networksetup -listallnetworkservices
# 对于每个网络接口(如Wi-Fi、Ethernet),禁用隐私扩展
sudo networksetup -setv6privacy Wi-Fi off
# 验证配置
networksetup -getv6privacy Wi-Fi
或者使用 sysctl 方法:
# 临时禁用
sudo sysctl -w net.inet6.ip6.use_tempaddr=0
# 永久生效
echo "net.inet6.ip6.use_tempaddr=0" | sudo tee -a /etc/sysctl.conf
验证配置
配置完成后,可以通过以下命令验证 IPv6 地址是否使用 EUI-64 格式:
# Windows
ipconfig /all
# Linux
ip -6 addr show
# macOS
ifconfig en0 | grep inet6
查找包含网卡 MAC 地址信息的 IPv6 地址(通常以fe80::开头的链路本地地址和全局单播地址)。
防火墙配置示例
以 OpenWRT 防火墙为例,配置基于 EUI-64 地址的放行规则:
首先获取设备的 EUI-64 地址后缀,假设 MAC 地址为 00:11:22:33:44:55,生成的 EUI-64 后缀为 ::211:22ff:fe33:4455
在放行设备那填写 ::211:22ff:fe33:4455/-64 即可
注意
使用 EUI-64 会暴露设备的 MAC 地址,可能带来隐私风险。建议仅为需要放行 IPv6 转发的设备启用这一功能。
这种方法适用于家庭网络环境,既保持了 IPv6 的安全优势,又解决了动态地址带来的管理难题。 收起