Linux'ta bir DHCP bağlantısı için DNS sunucusunu bulun


15

Tanımlandıklarını biliyorum /etc/resolv.conf, ama ya orada değilse? Ve daha spesifik olarak, DHCP tarafından döndürülen DNS sunucusunu nasıl buluyorsunuz?

GNOME'da herhangi bir bağlantının birincil DNS'sini görmek için NetworkManager uygulamasını kullanabilirsiniz, bu yüzden komut satırından aynısını nasıl yapardınız?

Yanıtlar:


22

Genellikle dhclient.leases dosyası bulunur /var/lib/dhcp3/dhclient.leases, aşağıdaki komutu yazın:

less /var/lib/dhcp3/dhclient.leases

VEYA

cat /var/lib/dhcp3/dhclient.leases

VEYA

DHCP sunucu adresini almak için grep komutunu kullanabilirsiniz, şunu girin:

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

VEYA

dhclient eth0


Çok teşekkürler! Herhangi birinin bunu araması durumunda, IPCop dosyası /var/ipcop/dhcpc/dhcpcd-*.info
Ivan

Bu bir DHCP istemcisine özgüdür, ancak başkaları da vardır (pompa gibi).
bortzmeyer

1
Koştum ps aux | grep dhclientve benim kiralama dosya ayarlı olduğu tespit /var/run/dhclient.eth0.leasesile -lfseçeneği.
Roger Dueck

9

Son zamanlarda benim dhcpcdDNS sunucuları ayarlama değildi gibi yanlış yapılandırılmış bu sorun vardı . DHCP tarafından hangi ad sunucularının kullanılabilir olduğunu şu komutla sorgulayabildiğimi öğrendim:

sudo dhcpcd -o domain_name_servers -T

Komut, bir grup ağ bağlantısı bilgisi verir. İle başlayan satırı arayın new_domain_name_servers.

Buradan ad sunucularını manuel olarak ayarlayabildim.


2
Mükemmel. Kabul edilen cevap bu olmalı hehe.
drumfire

1
Bu benim için de işe yarayan çözümdü.
Vidia

-oaynı seçenekleri -Ttek başına boşaltıyorsa neden anahtar gereklidir ?

3

/var/lib/dhclient/dhclient-eth0.leasesHerkesin bulamaması durumunda DHCP kiralama bilgilerimi de buldum/var/lib/dhcp3/dhclient.leases


2

Peki, neden sadece kazmıyorsun?

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

son satırlara bakın: ;; SUNUCU: 192.168.1.15 # 53 (192.168.1.15)


Başlangıçta aynı şeyi düşünüyordum, ancak atanan TÜM DNS sunucularının TÜMÜNÜ göstereceğini düşünmüyorum, değil mi? Bence dig sadece belirli bir arama için kullandığını döndürür. İkinci bakışta, poster belirtmedi, bu yüzden ondan memnunsa cevabınız kesinlikle en kolayı. :-)
KPWINC

evet doğru çıktı sadece bu sorgu tarafından kullanılan dns gösterir ... böylece gerçekten ne olduğunu görebilirsiniz . Ben ne olduğunu anlamaya çözüm cezası bulundu gerektiğini :-) bunun için THY gerçekleşmesi
Marcus Spiegel

Aradığım şey tam olarak bu değildi, ama yine de teşekkürler.
Ivan

1
Hiçbir DNS sunucusu yanıt vermediğinde, dig herhangi bir yararlı bilgi göstermez, sormaya çalıştığı DNS sunucularını tükürmek mümkün mü?
Ivan

RingTFM'den sonra, sadece /etc/resolv.conf üzerinde ne varsa kullandığını görüyorum
Ivan

1

/Etc/resolv.conf dosyasında hiçbir şey yoksa, DNS çözümlemesi (/etc/nsswitch.conf dosyasında tanımlanan dns kullanan çözümleme) çalışmaz. Bu, dig, host ve libc rutinlerinin DNS çözümlemesi için kullandıkları şeydir. Bu dosyada belirtilen hiçbir şey yoksa, DNS çözümlemesi çalışmaz (ana bilgisayar çözünürlüğü başka yollarla da çalışabilir, ancak NIS gibi başka bir ana bilgisayar çözümleme yöntemi yapılandırılırsa (bu olası değildir)).


1

bu komut ağınızdaki DNS sunucusunu gösterir

kazmak | grep SUNUCU: | awk -F # '{print $ 1}' | awk -F: '{2 $ yazdır}'

172.17.0.1


Bu soruya cevap veriyor. Aslında OP'nin sorudan bahsettiği yaklaşımdan daha az güvenilirdir, ki bu sadece okumaktır /etc/resolv.conf. Tüm dig sonra da okuyacak /etc/resolv.confve daha sonra herhangi bir çıktı üretmeden önce sunucuyla iletişim kurmaya çalışın.
kasperd

0

Okuyun /etc/resolv.conf. Bu kadar.

man resolv.conf de faydalıdır.


o ise ne yapacağını belirtti dışında değil orada ..
warren

1
Evet, ama anlamsız olan bu noktayı görmezden geldim. Libc çözümleyici resolv.conf kullandığından, orada olması gerekir.
bortzmeyer

0

Modern dağıtımlarda,

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

burada 91.193.220.7, ISS'imin DNS sunucusudur

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 sunucusunu sorgulamak için bir çözüm daha:

sudo nmap --script broadcast-dhcp-discover

Çıktı size DHCP sunucusu tarafından sunulan ad sunucusunu bildirir:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.