飞牛开启EUI64功能，实现主路由IPv6防火墙单设备放行

前言我家里的网络是开启主路由的防火墙，关闭下级设备防火墙的策略，好处是结构简单易操作，同时可以有效控制一些智能设备暴露到公网。于是会衍生出一个问题，远程访问家里飞牛上的服务，由于没有公网IPv4，所以常用IPv6通过ddns访问内网，但IPv6会变，主路由的防火墙怎么设置就成为了困难，其实很好解决，只需开启EUI64功能，就可以固定IPv6地址后缀。如何设置开启飞牛的EUI-64功能，开启后IPv6地址的后四段会被固定 dd0b492c54401b0b.png 设置DDNS服务，实现外网访问 这里服务不限，可以用飞牛自己的，也可安装ddns-go等工具实现，我自己习惯用lucky。 6db4f114e3f036e0.png 主路由开启IPv6防火墙，路由器型号不限，OpenWrt软路由或品牌硬路由只要有防火墙功能就可以。 我的主路由是华硕，开启IPv6防火墙后，外网无法访问，说明防火墙已生效。 e735f4c74c7c94f3.png 添加放行规则，本地IP填写::飞牛IPv6后四段/::ffff:ffff:ffff:ffff或::飞牛IPv6后四段/-64，通信端口写外网映射端口，我的是6677 {31FD5985-339B-412F-8F38-119CA6CF336F}.png 各系统设备通过 EUI-64 固定 IPv6 后缀飞牛设置仅需勾选是最简单的，当然其他设备也有相同的需求，比如异地组网、远程操控电脑、串流游戏等，只是要麻烦一点需要通过命令行的形式开启EUI-64功能。 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::开头的链路本地地址和全局单播地址）。