Дізнайтеся сервер DNS для з'єднання DHCP в Linux


15

Я знаю, що вони визначені /etc/resolv.conf, але що робити, якщо його немає? А точніше, як ви вважаєте, що DNS-сервер повертається DHCP?

У 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
Іван,

Це специфічно для одного клієнта DHCP, але є й інші (наприклад, насос).
bortzmeyer

1
Я побіг ps aux | grep dhclientі виявив, що мій файл оренди встановлений /var/run/dhclient.eth0.leasesз -lfопцією.
Роджер Дуек

9

Нещодавно у мене виникла ця проблема, коли мою dhcpcdпомилково налаштували, оскільки не встановлювали сервери DNS. Я з’ясував, що я можу запитати, які сервери імен доступні DHCP за допомогою наступної команди:

sudo dhcpcd -o domain_name_servers -T

Команда виведе купу інформації про підключення до мережі. Шукайте рядок, що починається з new_domain_name_servers.

Звідси мені вдалося вручну встановити сервери імен.


2
Ідеально. Це має бути прийнята відповідь, хе-хе.
барабанний вогонь

1
Це було і рішення, яке працювало на мене.
Vidia

Чому -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

так, ви маєте право виводити лише дані, що використовуються цим запитом ... так що ви можете побачити, що відбувається насправді Я знайшов ваше рішення добре, щоб розібратися, що має статися, ваше для цього :-)
Маркус Шпігель,

Це було не саме те, що я шукав, але все одно дякую.
Іван

1
Якщо жоден DNS-сервер не відповідає, dig не відображає корисної інформації, чи можна змусити його виплюнути сервери DNS, які він намагався запитати?
Іван

Тож після RingTFM я бачу, що він просто використовує все, що є на /etc/resolv.conf
Іван,

1

Якщо в /etc/resolv.conf немає нічого, роздільна здатність DNS (тобто роздільна здатність за допомогою dns, визначеного в /etc/nsswitch.conf) не працюватиме. Це те, для чого виконувати розроблення, хост та libc, щоб зробити роздільну здатність DNS. Якщо в цьому файлі нічого не вказано, роздільна здатність DNS не буде працювати (хоча роздільна здатність хоста може працювати за допомогою інших засобів, якщо інший спосіб роздільної здатності хоста налаштований, наприклад, NIS (це малоймовірно)).


1

ця команда показує DNS-сервер у вашій мережі

копати | grep SERVER: | awk -F # '{print $ 1}' | awk -F: '{print $ 2}'

172.17.0.1


Це відповідає на питання. Насправді він менш надійний, ніж підхід, про який йдеться в ОП, у тому, що його просто читати /etc/resolv.conf. Зрештою, копати також буде читати /etc/resolv.conf, а потім (спробувати) спілкуватися з сервером, перш ніж виробляти будь-який вихід.
kasperd

0

Прочитайте /etc/resolv.conf. Це все.

man resolv.conf корисна теж.


крім він сказав , що робити , якщо це НЕ там ..
садок

1
Так, але я проігнорував цей момент, що не має сенсу. Оскільки роздільник libc використовує резоль.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 - 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.