LinuxでDHCP接続用のDNSサーバーを調べる


15

私はそれらがで定義されていることを知っています/etc/resolv.confが、それがない場合はどうなりますか?より具体的には、DHCPによって返されたDNSサーバーをどのように見つけますか?

GNOMEでは、NetworkManagerアプレットを使用して、すべての接続のプライマリDNSを確認できますが、コマンドラインからどのように同じことを行いますか?

回答:


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


まことにありがとうございます!このためケースの誰のルックスで、IPCopファイルが/var/ipcop/dhcpc/dhcpcd-*.infoに記載されています
イワン

これは1つのDHCPクライアントに固有ですが、他にもあります(ポンプなど)。
ボルツマイヤー

1
実行ps aux | grep dhclientしてみると、リースファイルがオプションで設定され/var/run/dhclient.eth0.leasesている-lfことがわかりました。
ロジャーデュック

8

私は最近、dhcpcdDNSサーバーを設定していなかったために設定が間違っていたこの問題に遭遇しました。次のコマンドを使用して、DHCPで使用可能なネームサーバーを照会できることがわかりました。

sudo dhcpcd -o domain_name_servers -T

このコマンドは、ネットワーク接続情報の束を出力します。で始まる行を探しnew_domain_name_serversます。

ここから、ネームサーバーを手動で設定できました。


2
パーフェクト。これは受け入れられた答えであるはずです。
ドラムファイア

1
これも私にとっては有効な解決策でした。
ヴィディア

-oすべての同じオプションを-T単独でダンプする場合、なぜスイッチが必要ですか?

3

DHCPリース情報は/var/lib/dhclient/dhclient-eth0.leases、誰かが見つけられない場合に備えて見つけました/var/lib/dhcp3/dhclient.leases


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

それはまさに私が探していたものではありませんでしたが、とにかく感謝します。
イヴァン

1
DNSサーバーが応答しない場合、digは有用な情報を表示しません。質問しようとしたDNSサーバーを吐き出すことは可能ですか?
イヴァン

だからRingTFMの後、私はそれが/etc/resolv.confにあるものを使用するだけだと思う
イヴァン

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。すべてのdigは/etc/resolv.conf同様に読み取りを行い、出力を生成する前にサーバーと通信(試行)します。
カスペルド

0

読んでください/etc/resolv.conf。それで全部です。

man resolv.conf も便利です。


それはだならば、彼は何をすべきか言わ以外ませんが...
ウォーレン

1
はい、しかし、私はこの点を無視しました、それは意味がありません。libcリゾルバはresolv.confを使用するため、そこに存在する必要があります。
ボルツマイヤー

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サーバーを照会するもう1つのソリューション:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.