已经习惯IPv4这么久了,对IPv6还真是陌生。
我最近想向我的 OpenWRT 路由器添加一条防火墙规则,以允许入站 IPv6 连接到我的 Fedora 计算机的某个端口。不过我了解到 IPv6 地址会不时发生变化。所以我提到了一个官方教程并发现我可以使用带有负网络掩码(类似::xxxx:xxxx:xxxx:xxxx/-64
)的接口标识符来确保我的 OpenWRT 路由器始终可以找到我的 Fedora,即使子网前缀随着 ISP 提供的 PD 的变化而变化。
然后,我接下来要做的就是找到一个“静态接口标识符”。 (有动态的,对吧?)所以,我ip a
在 Fedora 上输入并得到
$ ip a
...
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx.xx.xx.xx.xx.xx brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 10.0.1.3/22 brd 10.0.3.255 scope global noprefixroute ens18
valid_lft forever preferred_lft forever
inet6 fd4a:xxxx:xxxx::ppp/128 scope global dynamic noprefixroute
valid_lft 42931sec preferred_lft 1533sec
inet6 240e:xxxx:xxxx:xxxx::ppp/128 scope global dynamic noprefixroute
valid_lft 1533sec preferred_lft 1533sec
inet6 240e:xxxx:xxxx:xxxx:qqqq:qqqq:qqqq:qqqq/64 scope global dynamic noprefixroute
valid_lft 3336sec preferred_lft 3336sec
inet6 fd4a:xxxx:xxxx:0:xxxx:xxxx:xxxx:xxxx/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fd8e:xxxx:xxxx:0:xxxx:xxxx:xxxx:xxxx/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute
valid_lft forever preferred_lft forever
我最初以为我可以找到类似 EUI-64 的东西,但没有一个接口标识符看起来与接口的 MAC 地址相关。然后,由于240e
在我的例子中GUA 必须以 开头,所以我注意到了::ppp
和::qqqq:qqqq:qqqq:qqqq
接口标识符。也出现::ppp
在以 开头的地址中fd4a
。这两个地址都是临时的(我相信),因为有效/首选的 lft 不是“永远的”。
所以,我的问题是,是否可以在 OpenWRT 防火墙规则中使用::ppp/-64
和中的任何一个::qqqq:qqqq:qqqq:qqqq/-64
来指向我的 Fedora 机器?它们会随着时间而改变吗?如果它们都不合适,我可以/应该手动为我的 Fedora 机器分配一个接口标识符吗?还有其他解决办法吗?
答案1
具有最有可能来自 DHCPv6 的地址
/128
,其 IID 由 DHCP 服务器分配。 IID 很可能是静态的,但仅限于 DHCPv6 客户端的 DUID/IAID。带有该标志的地址
temporary
是 RFC 4941“隐私扩展”地址,其 IID 每 X 小时重新生成一次。忽略那些。保留的地址是具有静态 IID 的地址。它们的寿命可能有限,因为地址前缀从 RA 收到的信息的生命周期有限。