我不知道该如何修复这个问题,甚至不知道它是怎么发生的。90% 的时间我都是通过家用路由器连接到互联网,而康卡斯特根本没有列在它的配置中。它有自己的 DNS,一切正常,直到更新到 Ubuntu 18,现在当我执行 nslookup 时,我的本地机器都无法解析(全部未找到)。
nslookup data1
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find data1: SERVFAIL
nslookup data1 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: data1
Address: 192.168.1.113
以下是 ifconfig 的结果,显示我的最后一个接口是我的 wifi,并且已连接到正确的网络:
enp2s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 28:f1:0e:4a:a4:b2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 220635 bytes 104082409 (104.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 220635 bytes 104082409 (104.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::686f:cec4:768c:d810 prefixlen 64 scopeid 0x20<link>
ether b0:c0:90:50:8e:20 txqueuelen 1000 (Ethernet)
RX packets 9169680 bytes 6584220987 (6.5 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10685113 bytes 13298441288 (13.2 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这是我的 resolv.conf 文件的内容:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
search wp.comcast.net
这是 systemd-resolve --status 的输出,显示了 GLOBAL 部分中的大量垃圾,并显示了路由器上的 DNS 为 192.168.1.1,但根据上面显示的查找,它似乎被忽略了。
Global
DNS Domain: wp.comcast.net
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (wlp3s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.1
Link 2 (enp2s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
有谁知道如何让我的 nslookups 开始使用此处指定的 DNS?康卡斯特的东西到底是怎么进来的?我该如何把它弄出来?
答案1
我对此有一些经验,但我绝不是专家......
您可能遇到了一些问题...
- 您的路由器可能未设置为使用您想要的 DNS 服务器
- 你的 18.04 计算机上的 dnsmasq 和 systemd-resolved 可能存在问题
- 您可能需要编辑 /etc/hosts 文件
- 您手动编辑了 /etc/resolv.conf (不要这样做)
1.调整路由器的设置...
登录路由器的管理页面,检查 DNS 服务器设置。将其设置为所需的 DNS 服务器,然后保存设置。
2. 调整您的 dnsmasq 和 systemd-resolvd 设置...
dnsmasq 和 systemd-resolved 往往会互相干扰。虽然您可以同时运行两者,但这可能会引起问题。dnsmasq 是上一个系统遗留下来的,在 18.04 升级后仍会保留。
在终端...
ps auxc | grep -i dnsmasq # to see if dnsmasq is running
ps auxc | grep -i resolv # this should be running in 18.04
修复路由器设置后,卸载 dnsmasq,重新启动,然后查看问题是否已解决。如果您发现需要 dnsmasq,请重新安装它,并且您可能需要调整 systemd-resolved 设置。
cd /etc/systemd
sudo pico resolved.conf
改变:
#DNSStubListener=yes
到:
DNSStubListener=no
重新启动并查看问题是否已解决。
3. 编辑 /etc/hosts 以包含您的 .local 名称
这是我的 /etc/hosts 文件的一部分。显然,您需要更改配置中的系统和节点名称。这只是一个示例。
127.0.0.1 Satellite-E55.local Satellite-E55 localhost
127.0.1.1 Satellite-E55
#
# static IP's (systemic network hardware)
#
192.168.0.1 caspurr.local caspurr # Netgear router
192.168.0.2 wdacbridge#1.local wdacbridge#1 # WD AC bridge #1
192.168.0.3 ex6100.local ex6100 # Netgear EX6100
192.168.0.4 repeater.local repeater # Netgear WN2500RP
192.168.0.5 av-bridge.local av-bridge # Cisco E2000
#
#192.168.0.6 meow-nas.local meow-nas # NAS
#192.168.0.7 zonet-nas.local zonet-nas # NAS
#192.168.0.8 woof-nas.local woof-nas # NAS
#
# static DHCP's
#
192.168.0.100 ubuntu-eth0.local ubuntu-eth0 # Toshiba laptop
192.168.0.101 obitalk2.local obitalk2 # Obitalk VOIP
192.168.0.102 vonage.local vonage # Vonage VOIP
192.168.0.103 laserjet.local laserjet # HP P1102W printer
#
192.168.0.201 hdhomerun.local hdhomerun # Silicon Dust DUAL
192.168.0.202 hdhomerun2.local hdhomerun2 # Silicon Dust PRIME
192.168.0.203 hdhomerun3.local hdhomerun3 # Silicon Dust CONNECT
#
# DHCP
#
192.168.0.253 slingbox.local slingbox # Slingbox
#
# cable modem
#
192.168.100.1 cablemodem.local cablemodem # Mediacom cable modem
#
# DNS
#
208.67.222.222 resolver1.opendns.com dns1
208.67.220.220 resolver2.opendns.com dns2
答案2
如果您的 WiFi 连接的 IP 地址是由路由器通过 DHCP 协议分配的,则很可能路由器已配置为宣布从您的 ISP 了解到的 DNS 服务器(如果连接使用 PPPoE,则很常见)。
resolvconf
IIRC 如果安装了该包,这将自动完成。
作为为什么您没有看到列出的实际 DNS 服务器127.0.0.53
,但这是因为 Ubuntu 默认使用 DNS 代理解析器。
作为一个快速解决方法,你可以尝试卸载 resolvconf
/etc/resolv.conf
并使用您喜欢的 DNS 服务器创建一个新 文件。
例如
$> cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
$>
免责声明
我总是resolvconf
在我的机器上卸载它并且一切正常,但我不知道如果卸载它,你的系统上的什么(或哪些包)会被破坏。