我有一个服务器集群,其中所有服务器都有第二张网卡。这些第二张网卡连接到另一个集群本地交换机。这是一个 10GBit 本地互连。我通过 IPv6 连接这些服务器。每台服务器上都运行一个 radvd。它将服务器的 IPv6 地址范围通告到第二张网卡上,配置如下:
interface <2nd network card> {
AdvSendAdvert on; // we advertise
AdvDefaultLifetime 0; // we're no default gateway
route <network of this server>::/64 {}; // offer route through this network to me
};
服务器上的 Netplan YAML 内容如下:
network:
version: 2
renderer: networkd
ethernets:
<2nd network card>:
accept-ra: true // also tried "dhcp6: true"...
使用 Ubuntu 18.04,一切按预期运行。我看到了以下路线ip -6 r
:
<network of other server>::/64 via <link-local adr of 2nd card of other server>
dev <my 2nd network card> proto ra metric 1024 pref medium
然而,在 Ubuntu 20.04 中,我看到没有什么。路线根本就没有添加。但是,当我netplan try
在几秒钟后发出并按下 Enter 时,发生了一些事情。然后,只有那时我看到一条路线:
<network of other server>::/64 via <link-local adr of 2nd card of other server>
dev <my 2nd network card> proto ra metric 1024 expires 1794sec pref medium
netplan try
此路线定义过期后就会消失,直到发出新的路线定义才会恢复。
我可以禁用路由器通告并明确静态地添加路由:
network:
version: 2
renderer: networkd
ethernets:
<2nd network card>:
accept-ra: false
routes:
- to: <network of other server>::/64
via: <link-local adr of 2nd card of other server>
这是可行的,因此路由和网络通常是可运行的。
我真的有点迷茫。是我做错了什么,还是这是 Netplan 或 systemd-resolved 中的错误?有人知道发生了什么,以及如何说服 Ubuntu 20.04 听取路由器广告吗?