互联网上发布的添加 DNS 服务器的方法不下于 3 种。我一直在阅读 netplan 文档,但我仍然不清楚如何向笔记本电脑添加 DNS 服务器。我身处一个有审查/监视的国家,并且我正在使用泄露 DNS 信息的 VPN。
不管你怎么说,至少将名称服务器添加到 resolv.conf 很简单。这是我找到的使用 wifi 连接配置 DNS 的最佳示例。https://netplan.io/examples
network:
version: 2
renderer: networkd
wifis:
wlp2s0b1:
dhcp4: no
dhcp6: no
addresses: [192.168.0.21/24]
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1, 8.8.8.8]
access-points:
"network_ssid_name":
password: "**********"
这些示例让我感觉我需要配置我访问的每个接入点,我真的希望这不是真的。你们这些聪明人能否为家庭/小型企业用户发布一个现实的例子。
我们真的希望桌面用户现在编写 .yaml 文件吗?我只想将名称服务器放入文件中并完成它。
谢谢。
答案1
我发现使更改在所有网络和接口(使用 dhcp)中持久存在的唯一方法是将以下行添加到 /etc/dhcp/dhclient.conf:
supersede domain-name-servers 8.8.8.8,8.8.4.4 # 用想要的 DNS 服务器替换
答案2
笔记本电脑上的默认 netplan 渲染器是 NetworkManager,而不是 networkd。因此,您通常会通过nm-applet
而不是编辑 netplan yaml 来配置 DNS 首选项。
但是,为所有配置的 wifi 连接指定覆盖 DNS 服务器的情况并不常见;常见的情况是使用 DHCP 服务器提供的 DNS 信息,并仅在特殊情况下覆盖它。因此,没有优化的方法来覆盖所有可用 wifi 连接的 DNS 服务器。
要指向与通过网络连接自动配置的 DNS 服务器不同的 DNS 服务器,您可以 rm /etc/resolv.conf 符号链接并将其替换为包含所需内容的实际文件。
答案3
我还没有找到有人找到使用 CLI 正确添加 DNS 名称服务器的正确方法,而无需编辑 /etc/resolv.conf(其中明确指出不要这样做)。
好的。我想我明白了。
首先,/etc/resolv.conf 只是 ../run/systemd/resolve/stub-resolv.conf 的符号链接。并且声明不要编辑它的注释是关于 ../run/systemd/resolve/stub-resolv.conf,而不是 /etc/resolv.conf。
相同的评论还建议用静态文件替换 /etc/resolv.conf 符号链接。所以我想答案是:
sudo rm /etc/resolv.conf
#删除文件(符号链接)
echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf
#创建新的静态文件并将 DNS 服务器地址放入其中。我猜您可以用不同的属性重复此行以添加备用地址。
echo "options edns0" | sudo tee -a /etc/resolv.conf
#在上述文件末尾添加此行。不知道它有什么用,但它存在于我的原始文件中,所以我也把它放在这里以备不时之需。
答案4
另一种方法(避免接触 /etc/netplan/ 文件)是编辑文件 /etc/systemd/resolved.conf(如果您的机器中存在这样的文件)。例如,最初应该是
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
你可以这样做(首先发出以下命令:
systemctl status systemd-resolved.service
systemd-resolve --status
在进行更改之前先查看情况如何)
[Resolve]
DNS=192.168.10.100 192.168.10.105
FallbackDNS=8.8.8.8 9.9.9.9
Domains=example.com
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
然后执行以下操作:
sudo systemctl 重启 systemd-resolved.service
并使用以下方法检查结果
systemd-resolve --status
有用的信息可以在(丑陋且不人性化,与 Linux 手册页一样,所有手册页都非常糟糕)中找到
man 5 resolved.conf
man 5 resolv.conf
还要确保只有一个与解析相关的服务处于活动状态,您可以通过以下方式查看
systemctl | grep resolv
你应该只看到 systemd-resolved.service 。如果你还看到旧式的 resolvconf,那么你最好停止并禁用它,甚至删除包及其配置文件
sudo apt-get purge resolvconf
在进行上述任何建议的编辑之前