Tìm hiểu máy chủ DNS để kết nối DHCP trong Linux


15

Tôi biết họ được định nghĩa /etc/resolv.conf, nhưng nếu nó không ở đó thì sao? Và cụ thể hơn, làm thế nào để bạn tìm thấy máy chủ DNS được DHCP trả về?

Trong Gnome, bạn có thể sử dụng applet NetworkManager để xem DNS chính cho bất kỳ kết nối nào, vậy bạn sẽ làm như thế nào từ dòng lệnh?

Câu trả lời:


22

Thông thường tệp dhclient.lease được đặt tại /var/lib/dhcp3/dhclient.leases, gõ lệnh sau:

less /var/lib/dhcp3/dhclient.leases

HOẶC LÀ

cat /var/lib/dhcp3/dhclient.leases

HOẶC LÀ

Bạn chỉ có thể sử dụng lệnh grep để lấy địa chỉ máy chủ DHCP, nhập:

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

HOẶC LÀ

dhclient eth0


Cảm ơn rất nhiều! Trong trường hợp bất cứ ai tìm kiếm điều này, tệp IPCop được tìm thấy trên /var/ipcop/dhcpc/dhcpcd-*.info
Ivan

Điều này là cụ thể của một máy khách DHCP nhưng có những máy khách khác (chẳng hạn như máy bơm).
bortzmeyer

1
Tôi chạy ps aux | grep dhclientvà thấy rằng tập tin thuê của tôi đã được thiết lập để /var/run/dhclient.eth0.leasesvới -lftùy chọn.
Roger Dueck

8

Gần đây tôi đã gặp vấn đề này khi tôi dhcpcdbị cấu hình sai vì không đặt máy chủ DNS. Tôi phát hiện ra rằng tôi có thể truy vấn máy chủ tên nào có sẵn bằng DHCP bằng lệnh sau:

sudo dhcpcd -o domain_name_servers -T

Lệnh sẽ xuất ra một loạt các thông tin kết nối mạng. Hãy tìm dòng bắt đầu bằng new_domain_name_servers.

Từ đây tôi có thể tự đặt các máy chủ tên.


2
Hoàn hảo. Đây phải là câu trả lời được chấp nhận, hehe.
trống

1
Đây cũng là giải pháp hiệu quả với tôi.
Vidia

Tại sao -ochuyển đổi là cần thiết nếu nó bỏ tất cả các tùy chọn tương tự với -Tmột mình?

3

Tôi đã tìm thấy thông tin cho thuê DHCP của mình /var/lib/dhclient/dhclient-eth0.leasestrong trường hợp bất kỳ ai cũng không thể tìm thấy nó tại/var/lib/dhcp3/dhclient.leases


2

tốt, tại sao không chỉ đơn giản là đào đó?

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

nhìn vào những dòng cuối cùng: ;; MÁY CHỦ: 192.168.1.15 # 53 (192.168.1.15)


Tôi đã suy nghĩ điều tương tự ban đầu, nhưng tôi không cho rằng nó sẽ hiển thị TẤT CẢ các máy chủ DNS được chỉ định, phải không? Tôi nghĩ rằng đào chỉ trả về cái mà nó đã sử dụng cho việc tra cứu cụ thể đó. Ở cái nhìn thứ hai, người đăng không chỉ định vì vậy nếu anh ta hài lòng với nó thì câu trả lời của bạn chắc chắn là dễ nhất. :-)
KPWINC

vâng, bạn là đầu ra đúng chỉ hiển thị các dns được sử dụng bởi truy vấn đó ... vì vậy bạn có thể thấy những gì đang thực sự xảy ra. Tôi thấy giải pháp của bạn tốt để tìm hiểu điều gì sẽ xảy ra, vì điều đó :-)
Marcus Spiegel

Đó không phải là chính xác những gì tôi đang tìm kiếm, nhưng dù sao cũng cảm ơn.
Ivan

1
Khi không có máy chủ DNS nào phản hồi, dig không hiển thị bất kỳ thông tin hữu ích nào, có thể làm cho nó nhổ ra các máy chủ DNS mà nó đã cố gắng hỏi không?
Ivan

Vì vậy, sau RingTFM, tôi thấy nó chỉ sử dụng bất cứ thứ gì có trên /etc/resolv.conf
Ivan

1

Nếu không có gì trong /etc/resolv.conf, độ phân giải DNS (nghĩa là độ phân giải sử dụng dns như được định nghĩa trong /etc/nsswitch.conf) sẽ không hoạt động. Đây là những gì dig, host và các thói quen libc sử dụng để thực hiện phân giải DNS. Nếu không có gì được chỉ định trong tệp này, độ phân giải DNS sẽ không hoạt động (mặc dù độ phân giải máy chủ có thể hoạt động thông qua các phương tiện khác, nếu phương pháp phân giải máy chủ khác được định cấu hình, chẳng hạn như NIS (điều này là không thể)).


1

lệnh này hiển thị máy chủ DNS trên mạng của bạn

đào | grep SERVER: | awk -F # '{in $ 1}' | awk -F: '{in $ 2}'

172,17.0.1


Điều này không trả lời câu hỏi. Trong thực tế, nó ít đáng tin cậy hơn cách tiếp cận mà OP đề cập trong câu hỏi, chỉ đơn giản là đọc nó từ đó /etc/resolv.conf. Sau khi tất cả đào cũng sẽ đọc từ /etc/resolv.confđó và sau đó (cố gắng) giao tiếp với máy chủ trước khi tạo ra bất kỳ đầu ra nào.
kasperd

0

Đọc /etc/resolv.conf. Đó là tất cả.

man resolv.conf cũng hữu ích


ngoại trừ anh ta nói phải làm gì nếu nó không ở đó ..
warren

1
Có, nhưng tôi bỏ qua điểm này, điều này không có ý nghĩa. Vì trình phân giải libc sử dụng giải phápvvv, nên nó phải ở đó.
bortzmeyer

0

Trong các bản phân phối hiện đại, nó trông giống như

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

Trong đó 91.193.220.7 là máy chủ DNS của ISP của tôi

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

Thêm một giải pháp để truy vấn máy chủ DHCP:

sudo nmap --script broadcast-dhcp-discover

Đầu ra cho bạn biết máy chủ tên được cung cấp bởi máy chủ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.