Temukan server DNS untuk koneksi DHCP di Linux


15

Saya tahu mereka didefinisikan /etc/resolv.conf, tetapi bagaimana jika itu tidak ada di sana? Dan lebih khusus lagi, bagaimana Anda menemukan server DNS dikembalikan oleh DHCP?

Di GNOME, Anda dapat menggunakan applet NetworkManager untuk melihat DNS utama untuk koneksi apa pun, jadi bagaimana Anda akan melakukan hal yang sama dari baris perintah?

Jawaban:


22

Biasanya file dhclient.leases terletak di /var/lib/dhcp3/dhclient.leases, ketik perintah berikut:

less /var/lib/dhcp3/dhclient.leases

ATAU

cat /var/lib/dhcp3/dhclient.leases

ATAU

Anda bisa menggunakan perintah grep untuk mendapatkan alamat server DHCP, masukkan:

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

ATAU

dhclient eth0


Terima kasih banyak! Kalau-kalau ada yang mencari ini, file IPCop ditemukan di /var/ipcop/dhcpc/dhcpcd-*.info
Ivan

Ini khusus untuk satu klien DHCP tetapi ada yang lain (seperti pompa).
bortzmeyer

1
Saya berlari ps aux | grep dhclientdan menemukan bahwa file sewa saya disetel /var/run/dhclient.eth0.leasesdengan -lfopsi.
Roger Dueck

8

Baru-baru ini saya mengalami masalah ini di mana dhcpcdkonfigurasi saya salah karena tidak mengatur server DNS. Saya menemukan bahwa saya dapat meminta server nama mana yang tersedia oleh DHCP dengan perintah berikut:

sudo dhcpcd -o domain_name_servers -T

Perintah akan menampilkan banyak informasi koneksi jaringan. Cari baris yang dimulai dengan new_domain_name_servers.

Dari sini saya bisa mengatur server nama secara manual.


2
Sempurna. Ini seharusnya jawaban yang diterima, hehe.
drumfire

1
Ini juga solusi yang berhasil untuk saya.
Vidia

mengapa -oswitch diperlukan jika itu membuang semua opsi yang sama dengan -Tsendirian?

3

Saya menemukan info sewa DHCP saya /var/lib/dhclient/dhclient-eth0.leasesseandainya ada orang yang tidak dapat menemukannya di/var/lib/dhcp3/dhclient.leases


2

baik, mengapa tidak menggali saja?

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

lihat baris terakhir: ;; SERVER: 192.168.1.15 # 53 (192.168.1.15)


Saya memikirkan hal yang sama pada awalnya, tetapi saya tidak berpikir itu akan menunjukkan SEMUA server DNS yang ditugaskan, bukan? Saya pikir menggali hanya mengembalikan yang digunakan untuk pencarian itu. Pada pandangan kedua, poster itu tidak menyebutkan secara spesifik, jadi jika dia senang dengan itu maka jawaban Anda pasti yang paling mudah. :-)
KPWINC

ya Anda benar output hanya menampilkan dns yang digunakan oleh permintaan itu ... sehingga Anda dapat melihat apa yang sebenarnya terjadi. Saya menemukan baik solusi Anda untuk mencari tahu apa yang harus terjadi, Mu untuk itu :-)
Marcus Spiegel

Bukan itu yang saya cari, tapi terima kasih.
Ivan

1
Ketika tidak ada server DNS yang merespons, menggali tidak menampilkan info yang berguna, mungkinkah membuatnya memuntahkan server DNS yang ia coba tanyakan?
Ivan

Jadi setelah RingTFM, saya melihat itu hanya menggunakan apa pun yang di /etc/resolv.conf
Ivan

1

Jika tidak ada dalam /etc/resolv.conf, resolusi DNS (yaitu, resolusi menggunakan dns sebagaimana didefinisikan dalam /etc/nsswitch.conf) tidak akan berfungsi. Inilah yang digali, host dan rutinitas libc gunakan untuk melakukan resolusi DNS. Jika tidak ada yang ditentukan dalam file ini, resolusi DNS tidak akan berfungsi (meskipun resolusi host dapat bekerja melalui cara lain, jika metode resolusi host lain dikonfigurasi, seperti NIS (ini tidak mungkin)).


1

perintah ini menunjukkan server DNS di internet Anda

gali | grep SERVER: | awk -F # '{print $ 1}' | awk -F: '{print $ 2}'

172.17.0.1


Ini memang menjawab pertanyaan. Bahkan itu kurang dapat diandalkan daripada pendekatan OP menyebutkan dalam pertanyaan, yang hanya untuk membacanya /etc/resolv.conf. Setelah semua penggalian akan dibaca /etc/resolv.confjuga dan kemudian (coba) berkomunikasi dengan server sebelum menghasilkan output apa pun.
kasperd

0

Baca /etc/resolv.conf. Itu saja.

man resolv.conf berguna juga.


kecuali dia mengatakan apa yang harus dilakukan jika tidak ada di sana ..
warren

1
Ya, tapi saya mengabaikan hal ini, yang tidak masuk akal. Karena resolver libc menggunakan resolv.conf, ia harus ada di sana.
bortzmeyer

0

Dalam distribusi modern sepertinya

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;
}

di mana 91.193.220.7 adalah server DNS ISP saya

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

Satu lagi solusi untuk menanyakan server DHCP:

sudo nmap --script broadcast-dhcp-discover

Output memberitahu Anda nama server yang ditawarkan oleh server 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.