我为一个物理接口设置了 netplan,该接口又有一个 vlan 子接口。未标记接口和 vlan 接口都是静态寻址的,并在 yaml 文件中列出了相应的名称服务器。我的 netplan 配置如下所示:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eno1:
addresses:
[ 192.168.51.7/24 ]
gateway4: 192.168.51.1
nameservers:
search: [ my.domain ]
addresses: [ 127.0.0.1, 192.168.51.8 ]
vlans:
IOTDevices:
id: 4
link: eno1
addresses:
[ 192.168.4.7/24 ]
gateway4: 192.168.4.1
nameservers:
search: [ my.domain ]
addresses: [ 127.0.0.1, 192.168.4.8 ]
这似乎会生成一个文件(IOTDevices.dhcp)/运行/dhcpd/resolv.conf看起来像这样:
# Generated by dhcpcd from IOTDevices.dhcp
domain my.domain
search my.domain
nameserver 192.168.4.8
nameserver 192.168.4.7
这反过来又填充了/etc/resolv.conf文件如下所示:
# Generated by dhcpcd from IOTDevices.dhcp
# /etc/resolv.conf.head can replace this line
domain my.domain
nameserver 192.168.4.8
nameserver 192.168.4.7
# /etc/resolv.conf.tail can replace this line
我还看到一个文件/etc/NetworkManager/no-stub-resolv.conf其中包含主机两个接口的 IP 以及环回地址。由于主机运行 PiHole 和 Unbound,因此所有这些都是有效的名称服务器。
# Generated by NetworkManager
search my.domain
nameserver 127.0.0.1
nameserver 192.168.51.8
nameserver 192.168.4.8
当我使用 dig 测试 DNS 解析时,响应来自 192.168.4.8,这是/etc/resolv.conf。
- 为什么 netplan 会为 vlan 子接口生成配置文件,但为主接口却不生成任何配置文件?(分配了正确的 IP,但名称服务器没有添加到/etc/resolv.conf)。
- 信息是否/etc/NetworkManager/no-stub-resolv.conf从 yaml 文件生成的文件/etc/netplan?
- 如何让主接口的 IP(192.168.51.7)或环回地址(127.0.0.1)显示在/etc/resolv.conf作为第一个名称服务器?
任何能为我指明正确方向的信息我都会感激不尽。谢谢
答案1
您的配置文件顶部显示“由 dhcpcd 从 IOTDevices.dhcp 生成”。这不是 netplan 的一部分。您dhcpcd
安装了软件包,它不是默认 Ubuntu 系统的一部分,并且不与 netplan 集成。您应该删除此软件包以及,resolvconf
它也不是标准 Ubuntu 网络堆栈的一部分。
进行这些更改将导致 /etc/resolved.conf 被恢复为 /run 下的 systemd-resolved 管理文件的符号链接。