我有一个具有IPv6 6-ULA网络的路由器。如果这重要的话,它正在使用运行Linux。
现在我想在一个网络中自动配置客户端,以便他们在一个ULA前缀中有一个地址。我在局域网上有这样的配置:
[Network]
Description=My IPv6 local-only LAN, no internet access here!
VLAN=myvlan
LinkLocalAddressing=ipv6
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=yes
[Address]
# For IPv4 local-only connectivity
Address=10.1.2.1/24
[IPv6SendRA]
EmitDNS=no
EmitDomains=no
[IPv6Prefix]
# Prefix 1337 from my random ULA prefix announced here
Prefix=fd58:22a0:d6b5:1337::/64效果很好除了一件事..。客户端在链接本地地址上设置默认路由。
所以,在客户身上,我看到:
# ip -6 route
[...]
fd58:22a0:d6b5:1337::/64 dev wlp2s0 proto kernel metric 256 expires 2591901sec pref medium
fe80::/64 dev wlp2s0 proto kernel metric 256 pref medium
default via fe80::36e6:d7ff:fe1b:48fe dev wlp2s0 proto ra metric 1024 expires 1701sec pref medium最后一行我没有想到,它打破了一些东西,因为这些主机现在认为他们可以到达整个IPv6 6-互联网在这个链接,但他们不能。
在我开始研究特定于系统的事情之前,我的主要问题是更笼统地说:根据IPv6 6规范,在没有默认路由的情况下,甚至可以做一个路由广告吗?
在Wireshark中,我将路由声明与我的ISP路由器发送给客户的路由(应该添加默认路由)进行了比较,我只注意到托管标志(因为它也使用DHCPv6 )和由Systemd设置的一些Prf优先级设置为高而不是中等的差别。这让我相信客户端在这里隐式地设置了默认路由。如果没有全局地址,只需要一个ULA,听起来就不像是你想要做的事情,特别是在多主机的情况下(一个启用互联网的网络,一个专用的)。
发布于 2021-10-23 11:07:55
我不知道systemD (或netplan)是如何处理这个问题的。但是radvd支持设置默认值:
AdvDefaultLifetime seconds
The lifetime associated with the default router in units of sec-
onds. The maximum value corresponds to 18.2 hours. A lifetime
of 0 indicates that the router is not a default router and
should not appear on the default router list. The router life-
time applies only to the router's usefulness as a default
router; it does not apply to information contained in other mes-
sage fields or options. Options that need time limits for their
information include their own lifetime fields.
Must be either zero or between MaxRtrAdvInterval and 9000 sec-
onds.
Default: 3 * MaxRtrAdvInterval (Minimum 1 second).https://networkengineering.stackexchange.com/questions/76771
复制相似问题