如何检查我使用的是哪个DNS服务器(在Linux中)?我正在使用网络管理器和到我大学LAN的有线连接。 (我试图找出为什么我的域名无法解析的原因)

#1 楼

您应该能够在以下位置获得一些合理的信息:

$ cat /etc/resolv.conf 


评论


但是,请注意(在现代Linuxen上)/etc/nsswitch.conf的内容指示使用哪种名称服务(DNS,LDAP等)以及使用的顺序。说fgrep主机:/etc/nsswitch.conf。如果仅引用DNS,则/etc/resolv.conf是查找名称服务器的正确位置。但是,您可能还会使用mDNS(又名ZeroConf,又名Avahi,又名Bonjour等),在这种情况下,取决于您所使用的内容。

–́Alexios
2012年1月12日13:35

该文件在Ubuntu上通常指向127.0.1.1-它是本地DNS缓存服务器,而不是实际的上游服务器。

–巴里·凯利(Barry Kelly)
16 Mar 8 '16 at 10:24

@BarryKelly检查您的路由器使用什么,然后

–老年病
16年3月11日在17:10

并且,如果您配置了多个上游服务器?如何知道当前使用的是哪一个?

–西尔万·勒鲁(Sylvain Leroux)
16年11月24日在23:31

请参阅@ G32RW或@Lonniebiz的答案,以获得在各种情况下(例如,当您收到像127.0.0.53这样的答案时

–nealmcb
18年11月11日在22:13



#2 楼

这是我的操作方法:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS


此方法比上面的方法更有效:

nm-tool | grep DNS


在Debian上,则需要安装network-manager软件包。

评论


如果您使用的是VPN和NetworkManager,则此功能很有用。您的/etc/resolv.conf将指向您的计算机,其中dnsmasq解析由NetworkManager配置的名称。

– GrzegorzŻur
13年5月30日在11:32

在Debian上,这需要network-manager软件包。

–神经递质
15年2月3日,19:44

nm-tool在较新的Linux中不可用。例如,它不在debian 8的'network-manager'软件包中。

–不要亮
15年10月31日在15:06

我已经更新了答案,以反映出2016年对我有用的内容。

–Lonniebiz
16年9月1日在16:36

这是最好的答案,resolv.conf并不总是显示真相

–刀片
18年2月7日在22:58

#3 楼

在运行systemd的系统上,请使用:

systemd-resolve --status


评论


systemd-resolve:无法识别的选项'--status'

–触角
18年4月1日在18:03

说无法获取全局数据:找不到单元dbus-org.freedesktop.resolve1.service。

– xji
18年4月12日在11:19

这是在Ubuntu 18.04 Bionic Beaver中执行此操作的新默认方法-大家都习惯它!

– AveryFreeman
18年4月24日在20:32

这是唯一对我有用的解决方案,其他解决方案返回了127.0.0.53

– Greuze
18-10-25在7:50

我在读什么书?我只看到DNSSEC记录。

– rosstex
5月2日下午16:22

#4 楼

我认为您也可以查询DNS,它会向您显示哪个服务器返回了结果。尝试以下操作:

dig yourserver.somedomain.xyz


响应将告诉您哪些服务器返回了结果。您感兴趣的输出将如下所示:

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207


您还可以告诉dig使用dig @server_ip查询特定的DNS服务器

评论


在Debian上,这需要dnsutils软件包。

– Faheem Mitha
2012年1月14日20:54

如果您使用在本地计算机上运行的任何DNS屏蔽/缓存服务,它将隐藏真实的DNS服务器。

– karatedog
2015年9月7日上午9:12

Ubuntu 18.04仅显示本地dns缓存:服务器:127.0.0.53#53(127.0.0.53)

– Wisbucky
18年11月14日在2:16

#5 楼

只是做一个,nslookup。结果的一部分包括它正在使用的服务器。

在下面的示例中,它显示使用的DNS服务器位于8.8.8.8。

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174


评论


您能否举例说明在提示中输入什么?

–碎肉
16年1月14日在6:41

示例:$ nslookup www.google.com

–人
16-2-13在23:50

在Debian上,这需要dnsutils软件包。

–加扬·韦拉库蒂(Gayan Weerakutti)
17年8月13日在7:00

在最近的Ubuntu上,这再次指向本地缓存服务器127.0.0.1,如本注释中所暗示

–FriendFX
17年12月1日在1:50



在CentOS 7中,它退出并出现错误,但它是一个虚拟机,因此我在Windows主机中做了nslookup google.com并找到了名称服务器。将其添加到/etc/resolv.conf中,例如:nameserver xx.xx.xx.xx并重新启动服务网络,一切正常。夸你。

– WesternGun
18年5月3日在15:22

#6 楼

使用新的network-manager命令nmcli,请执行以下操作:
nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]

在较新版本的网络管理器(例如Ubuntu 16.04)中,字段名称略有不同:
nmcli --fields ip4.dns,ip6.dns con show [connection_name]

如果您不知道连接名称,请使用:
nmcli -t --fields NAME con show --active

,例如,在旧版本的nmcli上:
$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4


评论


我的结果:订单«con»«show»无效。

– Sopalajo de Arrierez
16年1月30日在22:03

在Ubuntu 15.10上使用network-manager 1.0.4对我来说工作正常。也许您有旧版本?

– Sameer
16 Mar 17 '16 at 5:40

表格格式非常糟糕。我希望获得类似于Powershell的格式的列。

– CMCDragonkai
17 Mar 14 '17在6:42

返回错误:无效字段“ ip4.dns”;允许的字段:NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT优先级,READONLY,DBUS路径,ACTIVE,DEVICE,STATE,ACTIVE-PATH。

–FriendFX
17年12月1日,下午1:53

只是nmcli是我在ubuntu 19.04上所需的全部

–John Mee
19-10-2在5:54

#7 楼

获取第一个DNS服务器(仅IP):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2




cat将输出DNS config

grep仅过滤名称服务器

head将仅保留第一行/实例

cut将行的ip部分(第二列以''作为分隔符)

要将DNS ip放入环境变量中,可以使用以下方法:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)


评论


grep -m 1在第一次匹配后停止匹配,因此您不必使用head

–sshow
17年7月28日在8:30

为了减轻负担,Perl regexp捕获组非常简洁,grep使用文件参数:grep -Pom 1'^ nameserver \ K \ S +'/etc/resolv.conf。刚刚用grep perl正则表达式写了Capture组

–sshow
17年7月28日在9:04

同时有IPv4和IPv6 DNS服务器。同样,由于某种原因,存在辅助服务器。该命令返回哪一个?是否建议您选择第一个,而忽略其他?

–AndréWerlang
1月16日2:53

#8 楼

如果您使用的是网络管理器,则可能会从大学的dhcp服务器上获取所有网络参数。

如果您不想使用外壳程序来检查dns设置(如hesse和Alexios所述) ,您可以在“网络信息”面板中看到它们。

您可以通过在网络管理器图标上按鼠标右键并从菜单中选择“连接信息”来访问此面板。

#9 楼

使用resolvectl


$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1


出于兼容性考虑,systemd-resolve是许多发行版中与resolvectl的符号链接,就像Ubuntu 18.10一样:

评论


在Ubuntu 18.10上完美运行。

–乔治·斯托亚诺夫(Georgi Stoyanov)
19 Mar 27 '19 at 16:02

#10 楼

我有Fedora 25,并且在命令行上的响应速度也与sudo命令类似。
通过将DNS条目添加到一个没有条目的活动卡中-presto!
一切都很好,响应时间很短。

评论


也许替代

– Amos Folarin
19年6月12日在17:44

#11 楼

在Ubuntu> = 15

nmcli device show <interfacename> | grep IP4.DNS


用您的替换<interfacename>

在Ubuntu <= 14

命令

 nmcli dev list iface <interfacename> | grep IP4


用你的<interfacename>替换。

示例

 nmcli device show eth0 | grep IP4.DNS




 nmcli dev list iface eth0 | grep IP4


这将列出所有DNS服务器(如果使用多个服务器)。

评论


nmcli开发人员列表iface [设备名称]是正确的命令

–sebix
15年5月18日在17:33

我没有注意到是隐藏的,因为我使用<>

– Maythux
2015年5月19日下午5:53

在debian上,我得到一个错误-$ nmcli dev list iface eth0错误:'dev'命令'list'无效。

–不要亮
2015年10月31日15:00



nmcli是RH专用命令。

– Rui F Ribeiro
15年11月16日在7:42

这是正确答案!

–VAdaihiep
18年8月10日在8:00

#12 楼

在CentOS中,您可以使用:

/usr/sbin/named -v


#13 楼

在最新的Fedora 33上,您可以使用
# resolvectl dns
Global:
Link 2 (enp0s31f6):
Link 3 (wlp4s0): 1.1.1.1 8.8.8.8
Link 4 (virbr0):
Link 5 (virbr0-nic):

来检查systemd-resolved是否处于活动状态,请执行cat /etc/resolv.conf,它将告诉您谁在控制文件。
如果您需要更多详细信息,则可以使用resolvectl status resolvectl statistics,您也可以刷新缓存...
要进行故障排除,您可以在将级别设置为DEBUG后使用journalctl -u systemd-resolved -f -o cat | grep Lookingsudo resolvectl log-level debug

#14 楼

在未安装systemd-resolved的系统上:
 $ host -v something.unknown | awk -F "[ #]" '/Received /{print}' | uniq
192.168.1.1
 

在运行NetworkManager的系统上:
$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk '/DNS/{print$NF}'
192.168.1.1