ฉันกำลังใช้เซิร์ฟเวอร์ DNS ใด


248

ฉันจะตรวจสอบว่าฉันใช้เซิร์ฟเวอร์ DNS ใด (ใน Linux) ฉันใช้ตัวจัดการเครือข่ายและการเชื่อมต่อแบบใช้สายกับ LAN ในมหาวิทยาลัยของฉัน (ฉันกำลังพยายามหาสาเหตุที่โดเมนของฉันไม่ได้รับการแก้ไข)

คำตอบ:


207

คุณควรได้รับข้อมูลที่สมเหตุสมผลใน:

$ cat /etc/resolv.conf 

26
อย่างไรก็ตามโปรดทราบว่า (บน Linuxen ทันสมัย) เนื้อหาของการ/etc/nsswitch.confกำหนดบริการชื่อใดที่ใช้ (DNS, LDAP, ฯลฯ ) และในลำดับใด fgrep hosts: /etc/nsswitch.confพูด หากอ้างอิง DNS เท่านั้น/etc/resolv.confเป็นสถานที่ที่เหมาะสมในการค้นหาเนมเซิร์ฟเวอร์ของคุณ แต่โอกาสที่คุณจะใช้ mDNS (เช่น ZeroConf, aka Avahi, aka Bonjour ฯลฯ ) ฯลฯ ในกรณีนี้สิ่งต่างๆขึ้นอยู่กับสิ่งที่คุณใช้
Alexios

27
โดยทั่วไปไฟล์นี้จะอยู่ที่ 127.0.1.1 บน Ubuntu ซึ่งเป็นเซิร์ฟเวอร์แคช DNS ในเครื่องไม่ใช่อัปสตรีมจริง
Barry Kelly

2
@BarryKelly ตรวจสอบว่าเราเตอร์ของคุณใช้อะไรอยู่แล้ว
เจอเรเมีย

2
และถ้าคุณมีเซิร์ฟเวอร์อัปสตรีมหลายตัวที่ตั้งค่าไว้ จะรู้ได้อย่างไรว่าจะใช้อันไหนในปัจจุบัน?
Sylvain Leroux

4
ดูคำตอบโดย @ G32RW หรือ @Lonniebiz สำหรับวิธีการที่แข็งแกร่งยิ่งขึ้นภายใต้สถานการณ์ต่าง ๆ เช่นเมื่อคุณได้รับคำตอบเช่น127.0.0.53
nealmcb

193

นี่คือวิธีที่ฉันทำ:

nmcli dev show | grep DNS

สิ่งนี้ทำงานก่อนหน้านี้ตามวิธีข้างต้น:

nm-tool | grep DNS

14
หนึ่งนี้จะเป็นประโยชน์ถ้าคุณกำลังใช้VPNและNetworkManager คุณ/etc/resolv.confจะชี้ไปที่เครื่องของคุณมีdnsmasqการแก้ไขชื่อตามที่กำหนดค่าโดยNetworkManager
Grzegorz Żur

6
บนเดเบียนต้องใช้network-managerแพ็คเกจนี้
TranslucentCloud

2
nm-tool ไม่สามารถใช้งานได้ใน linux รุ่นใหม่ ตัวอย่างเช่นมันไม่ได้อยู่ในแพ็คเกจ 'network-manager' ของเดเบียน 8
ดอนสดใส

2
ฉันได้อัปเดตคำตอบเพื่อให้สะท้อนถึงสิ่งที่ใช้ได้กับฉันในปี 2016
Lonniebiz

3
นี่คือคำตอบที่ดีที่สุดแก้ไขไม่ได้แสดงความจริงเสมอ
เบลด

72

ฉันคิดว่าคุณสามารถสืบค้น DNS ได้และจะแสดงให้คุณเห็นว่าเซิร์ฟเวอร์ใดที่ส่งคืนผลลัพธ์ ลองสิ่งนี้:

dig yourserver.somedomain.xyz

และการตอบสนองควรบอกคุณว่าเซิร์ฟเวอร์ใดส่งคืนผลลัพธ์ ผลลัพธ์ที่คุณสนใจจะเป็นดังนี้:

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

คุณสามารถบอกdigให้สอบถามเซิร์ฟเวอร์ DNS ที่ระบุได้โดยใช้dig @server_ip


8
บนเดเบียนต้องใช้dnsutilsแพ็คเกจนี้
Faheem Mitha

6
หากคุณใช้บริการกำบัง / แคช DNS ใด ๆ ที่ทำงานบนเครื่องท้องถิ่นของคุณบริการดังกล่าวจะซ่อนเซิร์ฟเวอร์ DNS ที่แท้จริง
karatedog

3
Ubuntu 18.04 แสดงเฉพาะแคช DNS ท้องถิ่น:SERVER: 127.0.0.53#53(127.0.0.53)
บอกกล่าว

58

nslookupเพียงแค่ทำแล้ว ส่วนหนึ่งของผลลัพธ์รวมถึงเซิร์ฟเวอร์ที่ใช้งานอยู่

ในตัวอย่างด้านล่างจะแสดงว่าเซิร์ฟเวอร์ DNS ที่ใช้อยู่ที่ 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
คุณสามารถยกตัวอย่างสิ่งที่ต้องใส่ในพรอมต์ได้หรือไม่
chovy

ตัวอย่าง: $ nslookup www.google.com
Ren

7
บนเดเบียนต้องใช้dnsutilsแพ็คเกจนี้
Gayan Weerakutti

5
บน Ubuntu ล่าสุดสิ่งนี้ชี้ไปที่แคชเซิร์ฟเวอร์ท้องถิ่นอีกครั้ง 127.0.0.1 ดังที่ได้กล่าวไว้แล้วในความคิดเห็นนี้
FriendFX

ใน CentOS 7 หยุดทำงานด้วยความผิดพลาด แต่มันเป็น vm ดังนั้นฉันทำnslookup google.comในโฮสต์ Windows และพบเซิร์ฟเวอร์ชื่อ เพิ่มใน/etc/resolv.conflike: nameserver xx.xx.xx.xxและเริ่มบริการnetworkและทั้งหมดเป็นเรื่องปกติ สรรเสริญคุณ
WesternGun

54

บนระบบที่ใช้ systemd ให้ใช้:

systemd-resolve --status

3
systemd-edit: ตัวเลือกที่ไม่รู้จัก '--status'
Acumenus

ระบบ @ABB? รุ่น systemd หรือไม่
G32RW

229-4ubuntu21.2
คิวเมนทัส

10
นี่เป็นวิธีเริ่มต้นใหม่ใน Ubuntu 18.04 Bionic Beaver - ทำความคุ้นเคยกับมันทุกคน!
AveryFreeman

4
นี่เป็นทางออกเดียวที่ใช้ได้สำหรับฉันขณะที่คนอื่นคืน 127.0.0.53
greuze

13

ด้วยnetwork-managerคำสั่งใหม่nmcliให้ทำสิ่งนี้:

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

สำหรับตัวจัดการเครือข่ายเวอร์ชันใหม่ (เช่นใน Ubuntu 16.04) ชื่อฟิลด์จะแตกต่างกันเล็กน้อย:

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

หากคุณไม่รู้จักชื่อการเชื่อมต่อให้ใช้:

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

ตัวอย่างเช่น:

$ 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

ผลลัพธ์ของฉัน: order «con» «show» is not valid.
Sopalajo de Arrierez

มันใช้งานได้ดีสำหรับฉันกับ network-manager 1.0.4 บน Ubuntu 15.10 บางทีคุณอาจมีรุ่นเก่ากว่า
Sameer

รูปแบบตารางไม่ดีนัก ฉันหวังว่าจะได้คอลัมน์เช่นรูปแบบคล้ายกับ Powershell
CMCDragonkai

1
ส่งคืน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

เพียงแค่nmcliทุกอย่างที่ฉันต้องการใน Ubuntu 19.04
John Mee

9

วิธีรับ DNS SERVER แรก (IP เท่านั้น):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
  • cat จะออกการกำหนดค่า DNS
  • grep กรองเนมเซิร์ฟเวอร์เท่านั้น
  • head จะเก็บเฉพาะแถว / อินสแตนซ์แรกเท่านั้น
  • cut ใช้ส่วนของแถว (คอลัมน์ที่สองที่มี '' เป็นตัวคั่น)

หากต้องการวาง DNS ip ในตัวแปรสภาพแวดล้อมคุณสามารถใช้ดังต่อไปนี้:

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

2
grep -m 1หยุดการจับคู่หลังจากที่นัดแรกเพื่อให้คุณไม่ต้องใช้head
sshow

เพื่อแบ่งเบาท่อมากยิ่งขึ้นกลุ่มจับกับ Perl regexp เป็นระเบียบมากและใช้เวลา grep grep -Pom 1 '^nameserver \K\S+' /etc/resolv.confอาร์กิวเมนต์ไฟล์: เพิ่งเขียนขึ้นกลุ่มจับกับ grep Perl แสดงออกปกติ
sshow

8

หากคุณกำลังใช้ตัวจัดการเครือข่ายคุณอาจได้รับพารามิเตอร์เครือข่ายทั้งหมดจากเซิร์ฟเวอร์ dhcp ที่มหาวิทยาลัยของคุณ

หากคุณไม่ต้องการใช้เชลล์เพื่อตรวจสอบการตั้งค่า dns ของคุณ (ตามที่อธิบายโดย hesse และ Alexios) คุณสามารถดูได้จากแผง "ข้อมูลเครือข่าย"

คุณสามารถเข้าถึงแผงนี้โดยการกดปุ่มเมาส์ขวาบนไอคอน Network manager แล้วเลือก "Connection Information" จากเมนู


5

การใช้ 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

เพื่อความเข้ากันได้systemd-resolveเป็นลิงก์สัญลักษณ์ไปยังresolvectlหลาย distros สำหรับ 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

ทำงานได้อย่างสมบูรณ์บน Ubuntu 18.10
Georgе Stoyanov

3

คำสั่ง

 nmcli dev list iface <interfacename> | grep IP4

แทนที่ "interfacename" ด้วยของคุณ

examlpe

 nmcli dev list iface eth0 | grep IP4

นี่จะแสดงรายการเซิร์ฟเวอร์ DNS ทั้งหมด (หากคุณใช้มากกว่าหนึ่ง)


nmcli dev list iface [devicename]เป็นคำสั่งที่ถูกต้อง
sebix

ฉันไม่ได้สังเกตเห็น <อินเทอร์เฟซ> ถูกซ่อนตั้งแต่ฉันใช้ <>
Maythux

1
บนเดเบียนฉันได้รับข้อผิดพลาด --- $ nmcli dev รายการ iface eth0 ข้อผิดพลาด: 'dev' command 'list' ไม่ถูกต้อง
ดอนสดใส

nmcli เป็นคำสั่งเฉพาะ RH
Rui F Ribeiro

นี่คือคำตอบที่ถูกต้อง!
VAdaihiep

3

ฉันมี Fedora 25 และมีการตอบสนองช้าคล้ายกับบรรทัดคำสั่งกับคำสั่ง sudo

nmcli dev show | grep DNS 

แสดงให้เห็นว่ามีเพียงหนึ่งใน 3 อะแดปเตอร์ของฉัน (สองที่ใช้งานอยู่) มีรายการ DNS โดยการเพิ่มรายการ DNS ไปยังการ์ดที่ใช้งานอยู่หนึ่งใบที่ไม่มีรายการ - presto! ทั้งหมดเป็นสิ่งที่ดีและเวลาตอบสนองทันที


อาจจะเป็นอีกทางเลือกหนึ่ง
Amos Folarin


0

เมื่อคุณคิดว่าคุณพบ DNS dig @<dns ip> <host to lookup>ของคุณคุณสามารถสอบถามได้โดยตรงกับการขุด: หากการทำงานคุณจะเห็นได้หลังจากที่มีสถานะเป็นSERVERNOERROR

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.