在Linux中找出用于DHCP连接的DNS服务器


15

我知道它们是在中定义的/etc/resolv.conf,但是如果不存在该怎么办?更具体地说,如何找到DHCP返回的DNS服务器?

在GNOME中,您可以使用NetworkManager小程序查看任何连接的主DNS,那么您将如何在命令行中执行相同的操作?

Answers:


22

通常,dhclient.leases文件位于/var/lib/dhcp3/dhclient.leases,键入以下命令:

less /var/lib/dhcp3/dhclient.leases

要么

cat /var/lib/dhcp3/dhclient.leases

要么

您可以只使用grep命令来获取DHCP服务器地址,输入:

grep dhcp-server-identifier /var/lib/dhcp3/dhclient.leases

要么

dhclient eth0


太谢谢了!如果有人找这个,可以在/var/ipcop/dhcpc/dhcpcd-*.info上找到IPCop文件
Ivan

这是特定于一个DHCP客户端的,但还有其他客户端(例如Pump)。
bortzmeyer

1
我跑了ps aux | grep dhclient,发现我的租约文件已设置为/var/run/dhclient.eth0.leases带有该-lf选项。
罗杰·迪克

8

我最近遇到了这个问题,其中我的dhcpcd配置错误,因为未设置DNS服务器。我发现我可以使用以下命令查询DHCP可用的名称服务器:

sudo dhcpcd -o domain_name_servers -T

该命令将输出一堆网络连接信息。寻找以开头的行new_domain_name_servers

从这里,我能够手动设置名称服务器。


2
完善。这应该是公认的答案,呵呵。
drumfire

1
这也是对我有用的解决方案。
Vidia

-o如果-T单独转储所有相同的选项,为什么还要进行切换?


2

好吧,为什么不简单地挖那个呢?

marcus@marcus ~ $ dig google.de

; <<>> DiG 9.4.3-P3 <<>> google.de
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27579
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:
;google.de.         IN  A

;; ANSWER SECTION:
google.de.      1785    IN  A   209.85.229.104
google.de.      1785    IN  A   216.239.59.104
google.de.      1785    IN  A   74.125.77.104

;; AUTHORITY SECTION:
de.         23431   IN  NS  L.DE.NET.
de.         23431   IN  NS  Z.NIC.de.
de.         23431   IN  NS  F.NIC.de.
de.         23431   IN  NS  C.DE.NET.
de.         23431   IN  NS  S.DE.NET.
de.         23431   IN  NS  A.NIC.de.

;; Query time: 1 msec
;; SERVER: 192.168.1.15#53(192.168.1.15)
;; WHEN: Thu Sep 17 19:33:39 2009
;; MSG SIZE  rcvd: 181

看最后几行:服务器:192.168.1.15#53(192.168.1.15)


我本来在想同样的事情,但我不是那会显示所有已分配的DNS服务器,对吗?我认为dig仅返回用于特定查找的那个。从第二个角度看,发帖人没有具体说明,所以如果他对此感到满意,那么您的答案肯定是最简单的。:-)
KPWINC

是的,你是对的输出只显示了由该查询使用的DNS ...所以你可以看到什么真正发生的事情。我发现您的解决方案很好,可以弄清楚应该怎么做,您可以做到这一点:-)
Marcus Spiegel 2009年

那不是我想要的,但还是要谢谢。
伊万

1
当没有DNS服务器响应时,dig不会显示任何有用的信息,是否有可能使其吐出它尝试询问的DNS服务器?
伊万

因此,在RingTFM之后,我看到它只是使用了/etc/resolv.conf中的任何内容
Ivan

1

如果/etc/resolv.conf中没有任何内容,则DNS解析(即使用/etc/nsswitch.conf中定义的dns解析)将不起作用。这是dig,host和libc例程用来进行DNS解析的内容。如果在此文件中未指定任何内容,则DNS解析将不起作用(尽管如果配置了其他主机解析方法(例如NIS),则主机解析可能会通过其他方式起作用)。


1

此命令显示网络上的DNS服务器

挖| grep服务器:awk -F#'{print $ 1}'| awk -F:“ {print $ 2}”

172.17.0.1


这确实回答了问题。实际上,它不如OP在问题中提到的方法可靠,后者只是从中读取/etc/resolv.conf。毕竟,挖掘也要从中读取/etc/resolv.conf,然后(尝试)与服务器通信,然后再产生任何输出。
kasperd 2014年

0

阅读/etc/resolv.conf。就这样。

man resolv.conf 也很有用


除了他说如果存在该怎么办
。–沃伦

1
是的,但是我忽略了这一点,这没有任何意义。由于libc解析程序使用resolv.conf,因此它必须存在。
bortzmeyer

0

在现代发行版中,

ps aux | grep dhcli | grep -v grep                                                    
root       367  0.0  0.0  16128  3076 ?        S    Apr30   0:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /var/run/dhclient-enp3s0.pid -lf /var/lib/NetworkManager/dhclient-324caec3-58f9-3f00-bff4-2f8bd7d2aafa-enp3s0.lease -cf /var/lib/NetworkManager/dhclient-enp3s0.conf enp3s0


tail -16 /var/lib/NetworkManager/dhclient-324caec3-58f9-3f00-bff4-2f8bd7d2aafa-enp3s0.lease
lease {
  interface "enp3s0";
  fixed-address 10.191.104.3;
  option subnet-mask 255.255.255.0;
  option routers 10.191.104.254;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 91.193.220.3,91.193.220.7;
  option dhcp-server-identifier 91.193.220.3;
  option ntp-servers 91.193.220.6;
  option broadcast-address 10.191.104.255;
  option domain-name "myISP.ru";
  renew 1 2017/05/01 12:56:02;
  rebind 2 2017/05/02 00:27:11;
  expire 2 2017/05/02 03:27:11;
}

其中91.193.220.7是我的ISP的DNS服务器

nslookup serverfault.com 91.193.220.7
Server:     91.193.220.7
Address:    91.193.220.7#53

Non-authoritative answer:
Name:   serverfault.com
Address: 151.101.1.69
Name:   serverfault.com
Address: 151.101.65.69
Name:   serverfault.com
Address: 151.101.193.69
Name:   serverfault.com
Address: 151.101.129.69

0

查询DHCP服务器的另一种解决方案:

sudo nmap --script broadcast-dhcp-discover

输出告诉您DHCP服务器提供的名称服务器:

Starting Nmap 7.60 ( https://nmap.org ) at 2019-12-12 23:50 UTC
Pre-scan script results:
| broadcast-dhcp-discover: 
|   Response 1 of 1: 
|     IP Offered: 144.123.211.44
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 144.123.99.200
|     IP Address Lease Time: 5m00s
|     Subnet Mask: 255.255.0.0
|     Router: 144.123.99.200
|     Domain Name Server: 144.123.99.200
|_    Domain Name: localdomain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.