飞牛开启EUI64功能,实现主路由IPv6防火墙单设备放行
摘要
家中主路由开启 IPv6 防火墙、关闭下级设备防火墙时,远程通过 IPv6+DDNS 访问内网会因地址变化难以放行。开启飞牛的 EUI-64 功能可固定 IPv6 地址后四段,从而在主路由防火墙添加单设备放行规则。文章给出飞牛设置步骤,以及 Windows、Linux、macOS 通过命令行禁用临时地址/随机标识符以启用 EUI-64 的方法,并附验证命令。
前言
先交代一下我的网络环境:家里主路由开着防火墙,下级设备(比如 NAS)是关掉自己防火墙的。这样做的优点是结构简单、易操作,同时能有效避免一些智能设备意外暴露到公网。
但这也带来一个难题:远程访问家里飞牛上的服务时,由于没有公网 IPv4,只能靠 IPv6 通过 DDNS 访问内网。问题来了——IPv6 地址前缀会变,主路由的防火墙到底该怎么设置才能精准放行,就成了一个麻烦事。
其实很好解决:只要开启 EUI-64 功能,就能把 IPv6 地址的后缀固定下来。后缀固定了,防火墙规则就能写得非常精准。这篇文章就完整讲一遍:飞牛怎么开 EUI-64、主路由怎么放行、其他系统(Win/Linux/macOS)怎么通过命令行实现同样效果。
先弄明白:IPv6 地址为什么"变来变去"
这个问题的根源在于 IPv6 地址的构成方式。一个典型的公网 IPv6 地址是 128 位,分成两半看:
部分 | 位数 | 内容 | 会不会变 |
|---|---|---|---|
前缀(Prefix) | 前 64 位 | 由运营商分配给你的网络号 | 会变(重新拨号/重连可能换) |
接口标识符(IID) | 后 64 位 | 标识这是哪台设备 | 默认也会变 |
前缀为什么会变? 因为家用宽带拿到的通常是运营商动态分配的地址段。路由器重新拨号、光猫重启、运营商侧调整,前缀都可能换一批。这也是必须用 DDNS 的原因——地址变了,得有个机制把新地址同步到域名上。
后缀为什么会变? 这是出于隐私考虑的设计。早期 IPv6 的标准做法(EUI-64)是把网卡 MAC 地址编码进后 64 位——问题是 MAC 地址全球唯一且固定,等于给每台设备烙了个永久身份证号,走到哪都能被追踪。所以后来的系统默认启用了"隐私扩展"(RFC 4941):地址后缀随机生成,还会定期更换。
于是就出现了这个局面:前缀会变、后缀也会变,地址完全不固定。DDNS 能解决前缀变化(把新地址写到域名上),但防火墙规则没法跟着变——你不能给防火墙配一条"放行飞牛"的抽象规则,它只认具体的地址或地址段。
EUI-64 的作用就是把"会变的后缀"变成"固定值":主动关掉隐私扩展,让后缀基于 MAC 计算出来,从此稳定不变。这样:
前缀变 → 交给 DDNS 处理(域名始终指向最新地址)
后缀不变 → 防火墙规则可以写死,一次配好长期有效
两条腿走路,远程访问才稳。 这是理解整篇文章的关键。
一、在飞牛 NAS 上开启 EUI-64
开启飞牛的 EUI-64 功能。开启后,设备 IPv6 地址的后四段(接口标识符)会被固定,不再随每次连接变化。飞牛上这一步很简单,只要在对应设置里勾选即可。

配置 DDNS 服务,实现外网访问。这里的服务不设限:可以用飞牛自带的,也可以安装
ddns-go之类的工具。我自己习惯用 lucky。

DDNS 这一环的关键是取址方式:它要能正确读取到这台设备的公网 IPv6 地址(而不是
fe80::开头的链路本地地址、也不是内网私有地址)。判断办法很简单:DDNS 更新后,去 DNS 解析记录里看结果,如果解析出来的是fe80::开头,那就是取错了地址类型,需要调整取址方式(一般选"通过接口获取"或"通过 API 获取")。
在主路由上开启 IPv6 防火墙。路由器型号不限——OpenWrt 软路由或品牌硬路由,只要有防火墙功能都可以。我的主路由是华硕,开启 IPv6 防火墙后,先从外网试访问,发现无法访问,说明防火墙已生效。

"先确认打不通,再开规则"是个很好的习惯。 如果不先验证这一步,你后面加了规则还是访问不了,就分不清到底是"规则写错了"还是"防火墙压根没拦住、问题在别处"。先制造一个确定的失败状态,再加规则把它变成功——这是排查网络问题最省时间的方法。
添加精准放行规则。因为 IPv6 后缀已固定,防火墙规则可以这样写:
本地 IP:填写
::飞牛IPv6后四段/::ffff:ffff:ffff:ffff或::飞牛IPv6后四段/-64通信端口:填你外网映射的端口,我的是
6677

这两串看起来像乱码的东西,含义其实很简单:IPv6 地址可以缩写成
::省略前面连续的 0。所以::abcd:ef01:2345:6789/::ffff:ffff:ffff:ffff的意思是——前缀部分随便是什么(::全 0),后 64 位必须精确等于abcd:ef01:2345:6789。后面那个/::ffff:ffff:ffff:ffff是掩码,ffff代表"这 16 位要精确匹配",四个ffff就是后 64 位全精确匹配。/-64则是另一种简写形式,表达的意图一致。换句话说,规则匹配的是"设备身份"而不是"当前地址"——这正是 EUI-64 带来的好处:前缀换了,这条规则照样命中。
这样,即使 IPv6 前缀变化,只要后四段固定,规则依然精准命中,不会误伤其他设备,也不用频繁改防火墙。
二、其他系统设备通过 EUI-64 固定 IPv6 后缀
飞牛上勾选最省事。但像异地组网、远程操控电脑、串流游戏等场景,其他设备(Windows 电脑、Linux 服务器、Mac)也有固定 IPv6 后缀的需求。这些系统默认会随机化接口标识符,需要手动关闭才能用上 EUI-64。下面按系统给出命令。
Windows 11
用管理员权限打开 PowerShell,先查看当前配置:
注意两个关键参数:
RandomizeIdentifiers:控制 Windows 生成接口标识符(IID)时是否使用随机值。
UseTemporaryAddresses:是否使用临时地址。
要改成 EUI-64(后缀固定、基于网卡 MAC),执行:
⚠️ 执行后,IP 可能会瞬间变化导致断连,建议做好充分准备(比如提前确认重连方式)再操作。变化后的 IPv6 后缀会包含你网卡的 MAC 地址。
如果你是通过远程桌面/串流连着这台机器操作的,务必先准备好"后路":确认机器有本地显示器可用、或者你有内网 Web 管理入口能远程重启网卡。我自己的习惯是先设一个恢复计划再动手——网络类改动一旦改错,代价往往是"人不在现场,进不去机器"。
Linux
Linux 下通过 sysctl 禁用随机化标识符和临时地址:
重启网络服务或重新连接网络后,系统就会使用基于 MAC 地址的 EUI-64 标识符了。
all/default/ 具体网卡名三个都要设,不是重复劳动:default是给"以后新建的网卡"用的默认值,all是给所有现有网卡用的,eth0是明确指定某一块网卡。只改eth0的话,将来你插了新网卡、或者系统把网卡重命名成enp3s0,配置就失效了。写全三条最省心。另外注意把
eth0换成你实际的网卡名——用ip link或ip -6 addr show看一下,现在很多发行版用的是enpXsY这种可预测命名。
macOS
macOS 下可以通过 networksetup 或 sysctl 配置:
或者使用 sysctl 方法:
三、验证配置
配置完成后,用命令验证 IPv6 地址是否已变为 EUI-64 格式:
在输出里查找包含网卡 MAC 地址信息的 IPv6 地址(通常是以 fe80:: 开头的链路本地地址和全局单播地址)。如果找到了带 MAC 特征的后缀,说明 EUI-64 已生效。
怎么一眼认出 EUI-64 后缀? 有个很实用的小技巧:EUI-64 是把 MAC 地址(48 位)中间插进
ff:fe拼成 64 位的,所以后缀中间一段通常是ff:fe。比如 MAC 是00:11:22:33:44:55,对应的后缀大致是0211:22ff:fe33:4455(第 7 位还会做一次翻转,所以开头不是00而是02)。看到ff:fe出现在地址中间,基本就能确定是 EUI-64 生效了。⚠️ 反过来看,这个特征也是"隐私代价":任何人看到你的 IPv6 地址,就能反推出你的网卡 MAC 地址,进而识别出网卡厂商。所以固定后缀是一种用隐私换稳定的取舍——这也是下面这条建议的原因。
安全提醒:固定后缀之后,别忘了这几点
固定后缀让远程访问变稳了,但也降低了设备在公网上的"隐蔽性"。几条要配合做的事:
1. 别裸奔,一定要有防火墙白名单。 固定后缀意味着攻击者只要知道你这一台设备的地址,就能长期盯着它。放行规则里除了限地址,还要限端口——只开你真正需要暴露的那几个服务端口,别图省事放行整台设备的所有端口。
2. 关掉不需要对外暴露的服务。 常见的问题是把 NAS 的管理后台、SSH、数据库端口一起映射出去了。管理后台和 SSH 尽量只在内网访问,需要在外网用时走一层反代 + 二次验证(比如给服务加一层登录验证后再暴露)。
3. 别用默认端口。 虽然 IPv6 地址空间极大(靠扫描穷举整个网段不现实),但已知目标的针对性扫描是常态。把 22、3389、5000 这类"一眼就知道是什么"的默认端口换掉,能挡掉大量自动化探测。
4. 定期看一眼日志。 反代或服务本身通常都有访问日志。出现大量来自陌生地址的失败登录尝试时,说明服务已经被扫到了,该收紧规则或加限速了。
小结
用 EUI-64 固定 IPv6 后缀,本质是把"会变的后缀"变成"可预期的固定值",配合防火墙精准放行 + DDNS 动态更新前缀,就能稳定地远程访问家里服务,又不至于把整段内网暴露到公网。飞牛用户勾选即可,其他设备按上面的命令稍作配置也能实现同样效果。需要提醒的是:固定后缀意味着设备在局域网内更容易被定位,建议配合防火墙白名单使用,别把固定了后缀的设备直接裸奔到公网。
常见问题
Q:改完设置后网络断了,怎么办?
这正是前面提醒过的风险。恢复方式取决于你的接入方式:如果人在现场,直接接显示器/键盘本地登录改回来即可;如果是远程操作,给机器插上网线通常能让它重新拿到一个地址(有线网卡和无线网卡的 IID 是各自独立的)。实在不行就重启设备——大多数系统的网络配置在下次启动时会重新计算地址。
Q:EUI-64 已经开了,为什么外网还是访问不了?
按这个顺序排查:① DDNS 解析出来的地址对不对(不能是 fe80:: 开头);② 防火墙规则是否命中(有的路由器需要把规则放在"允许"链的最前面,被默认拒绝规则抢先了就没用);③ 服务本身是否监听 IPv6(很多服务的配置默认只听 IPv4 的 0.0.0.0,需要改成监听 :: 或同时监听);④ 运营商是否封了端口——家用宽带常封 80/443,这也是我外网端口用 6677 这种非标准端口的原因。
Q:前缀变了之后要手动做什么吗?
不需要。DDNS 会自动把新前缀同步到域名上,而防火墙规则因为只匹配后 64 位,前缀变化不影响命中。这正是"前缀交给 DDNS、后缀交给 EUI-64"这套分工的好处——日常零维护。
Q:用手机流量能访问吗?
可以,前提是你的手机运营商网络支持 IPv6(目前主流运营商都已支持)。判断方法:把手机 Wi-Fi 关掉、只用流量,去 IPv6 测试站点看一眼有没有拿到 IPv6 地址。如果你的访问环境只有 IPv4,那 IPv6 直连是走不通的——这属于访问侧的环境限制,跟家里的配置无关。
Q:为什么不用 IPv4 端口映射?
因为大多数家用宽带拿不到公网 IPv4 地址(运营商普遍做了 NAT 共享),你能"映射"的只是运营商那层内网的端口,外网访问不到。这十几年 IPv6 的普及,恰恰让家用远程访问重新变得可行——所以现在家里要远程访问,IPv6 + DDNS + 精准防火墙这条路线几乎是首选方案。