我想使用 DHCP 为我的服务器分配 IP 地址,但手动指定 DNS 服务器。我尝试了以下简单配置:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
nameservers: [8.8.8.8,8.8.4.4]
运行后,netplan apply
我检查名称服务器systemd-resolve --status
并显示:
DNS Servers: 8.8.8.8
8.8.4.4
192.168.1.1
最后是DHCP提供的DNS服务器,我不希望其出现在列表中。
netplan 有办法实现这个吗?
答案1
该问题已在 github 上的 netplan 存储库中修复,并且很可能会在某个时候出现在 Ubuntu 中。
添加了两个新选项,dhcp4-overrides
和dhcp6-overrides
。要忽略来自 DHCP 的 DNS 服务器,您可以执行以下操作:
dhcp4: yes
dhcp4-overrides:
use-dns: no
答案2
不幸的是,netplan 中没有更新日志github 仓库以确定新功能何时推出。然而,发布版本数量在 https://github.com/CanonicalLtd/netplan/releases从 2018 年 11 月的 0.40 升至 0.90
在 Ubuntu 18.10 上,netplan 当前版本为 0.40.2.2
使用该 netplan 版本,尝试使用无线配置来执行 DHCP,但使用 Cloudflare 匿名 DNS 服务器:
network:
version: 2
renderer: NetworkManager
ethernets:
wlp4s0:
dhcp4: yes
dhcp4-overrides:
use-dns: no
nameservers:
addresses: [1.1.1.1,1.0.0.1]
产生Unknown key dhcp4-overrides
错误:
根据以下情况,没有针对 cosmic 的反向移植ubuntu.packages.org
在 Ubuntu 19.04 beta 上安装了 netplan 0.96 版本,dhcp4-overrides
可以使用:
答案3
这是一个非常常见的设置,在 Ubuntu 18.04 中完全被破坏,Netplan 在使用 DHCP 时需要支持 NetworkManager 选项:
nmcli connection modify ${ID} ipv4.ignore-auto-dns yes
nmcli connection modify ${ID} ipv4.dns 'xx.xx.xx.10 xx.xx.xx.20'
nmcli connection modify ${ID} ipv4.dns-search 'abc01.domain.com. abc02.domain.com.'
答案4
使用 dhcp6-overrides 和“use-dns: false”无法忽略通过 DHCP6 提供的 DNS 服务器。
注意:我在 Ubuntu 19.04(disco)中使用 netplan.io 0.96 和 systemd 240。
# cat /etc/netplan/10-enp3s0-init.yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
critical: true
dhcp4: true
dhcp4-overrides:
use-dns: false
dhcp6: true
dhcp6-overrides:
use-dns: false
ipv6-privacy: true
nameservers:
search: [home]
addresses: [1.0.0.1, 1.1.1.1]
# resolvectl status enp3s0
Link 2 (enp3s0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: opportunistic
DNSSEC setting: yes
DNSSEC supported: yes
Current DNS Server: 1.0.0.1
DNS Servers: 1.0.0.1
1.1.1.1
fd50:a94:67b3:0:26a7:dcff:fe27:a60 <--- DHCP6 provided?
DNS Domain: home