我知道这里还有其他 帖子在问这个问题,但是这些建议没有帮助,配置不断变化,我根本无法让自己的更改持续存在。
我在 GUI 的网络管理器配置中有 Google8.8.8.8
和服务器,并且8.8.4.4
systemd-resolv --status
返回
Link 2 (enp38s0f1)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8
8.8.4.4
DNS Domain: ~.
尽管如此,dig google.com
显示
;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Oct 05 11:08:26 EDT 2020
;; MSG SIZE rcvd: 83
所以我的默认路由192.168.1.1
为DNS
. 此外,/etc/resolv.conf
是 的符号链接/run/systemd/resolve/resolv.conf
,它依次读取
# Generated by dhcpcd from enp38s0f1.dhcp, wlp0s20f3.dhcp
# /etc/resolv.conf.head can replace this line
domain fios-router.home
nameserver 192.168.1.1
# /etc/resolv.conf.tail can replace this line
这个系统上唯一的enp38s0f1.dhcp
文件(我已经搜索过/
)/run/dhcpcd/resolv.conf/enp38s0f1.dhcp
是
# Generated by dhcpcd from enp38s0f1.dhcp
domain fios-router.home
search fios-router.home
nameserver 192.168.1.1
我曾尝试在那里写其他名称服务器,但它们不会持续存在。在过去,我通过使文件不可变来使更改持久化chattr +i
,但是
lsattr /run/dhcpcd/resolv.conf/enp38s0f1.dhcp
返回
lsattr: Inappropriate ioctl for device While reading flags on /run/dhcpcd/resolv.conf/enp38s0f1.dhcp
因此该属性在此处不可用。此外,无论如何我都不应该使文件不可变:大概应该有某种方法可以控制 DNS 服务器..
编辑:
回应以下评论:
$ dpkg -l *dnsmasq*
---
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-================-===============-============-============================================
un dnsmasq <none> <none> (no description available)
ii dnsmasq-base 2.80-1.1ubuntu1 amd64 Small caching DNS proxy and DHCP/TFTP server
un dnsmasq-base-lua <none> <none> (no description available)
如果您当前的 DNS 服务器仍然是您的路由器(即 192.168.1.1),尽管您已经在 /etc/netplan/[network-mager].yaml 或通过 NetworkManager 的 GUI 声明了所需的名称服务器,但至少有两种解决方案尝试:
您可以使用已经提到的 GUI 配置这些设置:
a) 选择一个连接(从有线或无线选项卡)并单击编辑。b) 单击 IPv4 设置选项卡 c) 选择“仅自动 (DHCP) 地址”而不是仅选择“自动 (DHCP)”。d) 在“DNS 服务器”字段中输入 DNS 服务器,以空格分隔(例如 OpenDNS 为 208.67.222.222)。e) 点击“应用”。
请注意,“仅自动 (DHCP) 地址”表示您连接的网络使用 DHCP 服务器分配 IP 地址,但您想手动分配 DNS 服务器。
然后,编辑 /etc/resolvconf/resolv.conf.d/head 并将所需的名称服务器插入为:
最后,更新 /etc/resolv.conf 运行:
我相信我知道如何解决这个问题。
dhcpcd
有一个--nohook
标志,指示它不理会配置的某些部分。从我的dhcpcd(8)
手册页:所以我改变了我的
/lib/systemd/system/dhcpcd.service
,改变了行至
之后,名称服务器在重新启动
8.8.8.8
后仍然存在。8.8.4.4
/etc/resolv.conf