Узнайте 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

KPWINC
источник
Большое спасибо! В случае, если кто-то ищет это, файл IPCop находится в /var/ipcop/dhcpc/dhcpcd-*.info
Иван,
Это характерно для одного DHCP-клиента, но есть и другие (например, pump).
Борцмейер
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
Отлично. Это должен быть принятый ответ, хе-хе.
барабанная дробь
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

посмотрите на последние строки: ;; SERVER: 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) не будет работать. Это то, что dig, host и libc используют для разрешения DNS. Если в этом файле ничего не указано, разрешение DNS не будет работать (хотя разрешение хоста может работать другими способами, если настроен другой метод разрешения хоста, например NIS (это маловероятно)).

BrianEss
источник
1

эта команда показывает DNS-сервер в вашей сети

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

172.17.0.1

mario.q59
источник
Это действительно отвечает на вопрос. На самом деле он менее надежен, чем подход, о котором упоминает ФП в вопросе, а именно - просто прочитать его /etc/resolv.conf. После того, как все dig будут читать, /etc/resolv.confа затем (попытаться) связаться с сервером, прежде чем производить какие-либо выходные данные.
kasperd
0

Читать /etc/resolv.conf. Это все.

man resolv.conf тоже полезно

bortzmeyer
источник
кроме он сказал , что делать , если это не там ..
садок
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 - 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
младший разработчик ruby
источник
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
estibordo
источник