Tôi đang sử dụng máy chủ DNS nào?


249

Làm cách nào tôi có thể kiểm tra máy chủ DNS nào tôi đang sử dụng (trong Linux)? Tôi đang sử dụng trình quản lý mạng và kết nối có dây với mạng LAN của trường đại học. (Tôi đang cố gắng tìm hiểu lý do tại sao tên miền của tôi không được giải quyết)

Câu trả lời:


207

Bạn sẽ có thể nhận được một số thông tin hợp lý trong:

$ cat /etc/resolv.conf 

26
Tuy nhiên, xin lưu ý rằng (trên Linuxen hiện đại) nội dung /etc/nsswitch.confchỉ ra những dịch vụ tên nào được sử dụng (DNS, LDAP, v.v.) và theo thứ tự nào. Nói fgrep hosts: /etc/nsswitch.conf. Nếu nó chỉ tham chiếu DNS, /etc/resolv.conflà nơi thích hợp để tìm kiếm máy chủ tên của bạn. Nhưng rất có thể bạn cũng đang sử dụng mDNS (còn gọi là ZeroConf, còn gọi là Avahi, còn gọi là Bonjour, v.v.), v.v. Trong trường hợp đó, mọi thứ phụ thuộc vào những gì bạn đang sử dụng.
Alexios

27
Tệp này thường trỏ đến 127.0.1.1 trên Ubuntu - đó là máy chủ bộ đệm DNS cục bộ, không phải là dòng ngược dòng thực tế.
Barry Kelly

2
@BarryKelly Kiểm tra bộ định tuyến của bạn sử dụng cái gì, sau đó
Geremia

2
Và nếu bạn có một số máy chủ ngược dòng được cấu hình? Làm thế nào để biết cái nào hiện đang được sử dụng?
Sylvain Leroux

4
Xem câu trả lời của @ G32RW hoặc @Lonniebiz để biết cách tiếp cận mạnh mẽ hơn trong các trường hợp khác nhau, ví dụ: khi bạn nhận được câu trả lời như127.0.0.53
nealmcb

194

Đây là cách tôi làm điều đó:

nmcli dev show | grep DNS

Điều này làm việc trước đây theo cách trên:

nm-tool | grep DNS

14
Điều này là hữu ích nếu bạn đang sử dụng VPNNetworkManager . Ý chí của bạn /etc/resolv.confsẽ trỏ đến máy của bạn, với dnsmasqviệc giải quyết các tên được cấu hình bởi NetworkManager .
Grzegorz Żur

6
Trên Debian cái này yêu cầu network-managergói.
translucentCloud

2
công cụ nm không có sẵn trong các bản linux mới hơn. ví dụ: nó không nằm trong gói 'quản lý mạng' của debian 8.
don sáng

2
Tôi đã cập nhật câu trả lời để phản ánh những gì làm việc cho tôi trong năm 2016.
Lonniebiz

3
đây là câu trả lời hay nhất, giải quyết. không phải lúc nào cũng thể hiện sự thật
lưỡi dao

72

Tôi nghĩ bạn cũng có thể truy vấn DNS và nó sẽ cho bạn thấy máy chủ nào trả về kết quả. Thử đi:

dig yourserver.somedomain.xyz

Và phản hồi sẽ cho bạn biết (các) máy chủ nào trả về kết quả. Đầu ra mà bạn quan tâm sẽ trông giống như thế này:

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207

Bạn cũng có thể digyêu cầu truy vấn một máy chủ DNS cụ thể bằng cách sử dụngdig @server_ip


8
Trên Debian cái này yêu cầu dnsutilsgói.
Faheem Mitha

6
Nếu bạn sử dụng bất kỳ dịch vụ che dấu / lưu trữ DNS nào được chạy trên máy cục bộ của mình, nó sẽ ẩn các máy chủ DNS thực.
karatedog

4
Ubuntu 18.04 chỉ hiển thị bộ đệm dns cục bộ:SERVER: 127.0.0.53#53(127.0.0.53)
wvducky

58

Chỉ cần làm một , nslookup. Một phần kết quả của nó bao gồm máy chủ mà nó đang sử dụng.

Trong ví dụ dưới đây, nó cho thấy rằng máy chủ DNS được sử dụng là ở mức 8.8.8.8.

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174

1
bạn có thể đưa ra một ví dụ về những gì cần nhập trong lời nhắc?
chovy

Ví dụ: $ nslookup www.google.com
Ren

7
Trên Debian cái này yêu cầu dnsutilsgói.
Gayan Weerakutti

6
Trên một Ubuntu gần đây, điều này một lần nữa trỏ đến máy chủ bộ đệm cục bộ 127.0.0.1 như đã được gợi ý trong nhận xét này
FriendFX

Trong CentOS 7, nó thoát do lỗi, nhưng nó là một vm nên tôi đã làm nslookup google.comtrong máy chủ Windows và tôi đã tìm thấy máy chủ tên. Thêm nó vào /etc/resolv.confnhư: nameserver xx.xx.xx.xxvà khởi động lại dịch vụ network, và tất cả đều ổn. Khen ngợi bạn.
WesternGun

55

Trên các hệ thống chạy systemd sử dụng:

systemd-resolve --status

3
systemd-giải quyết: tùy chọn không được nhận dạng '--status'
Acumenus

@ABB hệ thống? phiên bản systemd?
G32RW

229-4ubfox21.2
Acumenus

11
Đây là cách mặc định mới để làm điều đó trong Ubuntu 18.04 Bionic Beaver - hãy làm quen với nó, mọi người!
AveryFreeman

4
Đây là giải pháp duy nhất hiệu quả với tôi, vì những giải pháp khác đã trả về 127.0.0.53
greuze

13

Với network-managerlệnh mới nmcli, thực hiện việc này:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

Trên các phiên bản mới hơn của trình quản lý mạng (như trong Ubuntu 16.04), tên trường hơi khác nhau:

nmcli --fields ip4.dns,ip6.dns con show <connection_name>

Nếu bạn không biết tên kết nối, hãy sử dụng:

nmcli -t --fields NAME con show --active

Ví dụ:

$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4

Kết quả của tôi : order «con» «show» is not valid.
Sopalajo de Arrierez

Nó hoạt động tốt với tôi với trình quản lý mạng 1.0.4 trên Ubuntu 15.10. Có lẽ bạn có một phiên bản cũ hơn?
Sameer

Các định dạng bảng là khá xấu. Tôi hy vọng sẽ có được một cột giống như định dạng tương tự như Powershell.
CMCDragonkai

1
Trả vềError: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
FriendFX

chỉ đơn giản nmclilà tất cả những gì tôi cần trên Ubuntu 19.04
John Mee

9

để nhận DNS SERVER đầu tiên (chỉ IP):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
  • cat sẽ xuất cấu hình DNS
  • grep chỉ lọc máy chủ tên
  • head sẽ chỉ giữ hàng / ví dụ đầu tiên
  • cut lấy phần ip của hàng (cột thứ hai với '' làm dấu phân cách)

Để đặt ip DNS vào một biến môi trường, bạn có thể sử dụng như sau:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)

2
grep -m 1dừng kết hợp sau trận đấu đầu tiên để bạn không phải sử dụnghead
sshow

Để làm sáng đường ống hơn nữa, các nhóm chụp với Perl regapi rất gọn gàng và grep lấy một đối số tệp : grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Chỉ cần viết lên các nhóm Chụp với biểu thức chính quy grep perl
sshow

8

Nếu bạn đang sử dụng trình quản lý mạng, có thể bạn nhận được tất cả các tham số mạng từ máy chủ dhcp của mình tại trường đại học.

Nếu bạn không muốn sử dụng trình bao của mình để kiểm tra cài đặt dns của bạn (như được mô tả bởi ngần ngại và Alexios), bạn có thể thấy chúng từ bảng "Thông tin mạng".

Bạn có thể truy cập bảng điều khiển này bằng cách nhấn nút chuột phải vào biểu tượng trình quản lý mạng và chọn "Thông tin kết nối" từ menu.


5

Sử dụng resolvectl

$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1

Để tương thích, systemd-resolvelà một liên kết tượng trưng đến resolvectltrên nhiều bản phân phối như đối với Ubuntu 18.10:

$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve

$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 nov.  15 21:42 /usr/bin/systemd-resolve -> resolvectl

$ type -a resolvectl
resolvectl is /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped

hoạt động hoàn hảo trên Ubuntu 18.10.
Georgе Stoyanov

3

Lệnh

 nmcli dev list iface <interfacename> | grep IP4

Thay thế "interacename" bằng của bạn.

thi

 nmcli dev list iface eth0 | grep IP4

Điều này sẽ liệt kê tất cả các máy chủ DNS (Nếu bạn sử dụng nhiều hơn một).


nmcli dev list iface [devicename]là lệnh chính xác
sebix

Tôi không nhận thấy <giao diện> bị ẩn kể từ khi tôi sử dụng <>
Maythux

1
Trên debian tôi gặp lỗi --- $ nmcli dev list iface eth0 Error: 'dev' lệnh 'list' không hợp lệ.
don sáng

nmcli là một lệnh cụ thể của RH.
Rui F Ribeiro

Đây là câu trả lời đúng!
VAdaihiep

3

Tôi có Fedora 25 và cũng có phản hồi chậm tương tự trên dòng lệnh với các lệnh sudo.

nmcli dev show | grep DNS 

cho thấy chỉ một trong 3 bộ điều hợp của tôi (hai hoạt động) có các mục DNS. Bằng cách thêm các mục nhập DNS vào một thẻ hoạt động không có mục nhập - thế là xong! Tất cả là tốt và thời gian đáp ứng là ngay lập tức.


có lẽ thay thế
Amos Folarin


0

Khi bạn nghĩ rằng bạn đã tìm thấy dns của mình, bạn có thể truy vấn trực tiếp bằng dig : dig @<dns ip> <host to lookup>. Nếu nó hoạt động, bạn sẽ thấy nó sau SERVERvới một trạng thái NOERROR.

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.