ฉันจะส่งแบบสอบถามไปยังเซิร์ฟเวอร์ DNS ที่ระบุได้อย่างไร


154

ฉันต้องการออกแบบสอบถามไปยังเซิร์ฟเวอร์ DNS เฉพาะซึ่งมีที่อยู่ IP ที่ฉันรู้จัก มันไม่สำคัญว่าจะอยู่ใน Windows หรือ * ระวัง

ใน Windows ฉันสามารถทำสิ่งต่าง ๆ เช่น:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
Name:    superuser.com
Address:  64.34.119.12

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

ดังนั้นควรเป็นดังนี้:

nslookup --dns-ip=8.8.8.8 superuser.com

คำตอบ:


200

สำหรับระเบียน A และ CNAME พื้นฐานคุณสามารถทำได้

nslookup somewhere.com some.dns.server

Usage: 
   nslookup [-opt ...]             # interactive mode using default server
   nslookup [-opt ...] - server    # interactive mode using 'server'
   nslookup [-opt ...] host        # just look up 'host' using default server
   nslookup [-opt ...] host server # just look up 'host' using 'server'

หรือถ้าคุณเพียงแค่พิมพ์ nslookup โดยไม่มีพารามิเตอร์ใด ๆ คุณสามารถทำได้มากกว่านี้ ...

Commands:   (identifiers are shown in uppercase, [] means optional)
NAME            - print info about the host/domain NAME using default server
NAME1 NAME2     - as above, but use NAME2 as server
help or ?       - print info on common commands
set OPTION      - set an option
    all                 - print options, current server and host
    [no]debug           - print debugging information
    [no]d2              - print exhaustive debugging information
    [no]defname         - append domain name to each query
    [no]recurse         - ask for recursive answer to query
    [no]search          - use domain search list
    [no]vc              - always use a virtual circuit
    domain=NAME         - set default domain name to NAME
    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
    root=NAME           - set root server to NAME
    retry=X             - set number of retries to X
    timeout=X           - set initial time-out interval to X seconds
    type=X              - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV)
    querytype=X         - same as type
    class=X             - set query class (ex. IN (Internet), ANY)
    [no]msxfr           - use MS fast zone transfer
    ixfrver=X           - current version to use in IXFR transfer request
server NAME     - set default server to NAME, using current default server
lserver NAME    - set default server to NAME, using initial server
root            - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
    -a          -  list canonical names and aliases
    -d          -  list all records
    -t TYPE     -  list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.)
view FILE           - sort an 'ls' output file and view it with pg
exit            - exit the program

7
เป็นที่น่าเสียดายที่คู่มือใช้คำว่า 'โฮสต์' และ 'เซิร์ฟเวอร์' แทนสิ่งที่ชัดเจนกว่าเช่น 'ชื่อโดเมน' และ 'เซิร์ฟเวอร์ DNS'
ClearCrescendo

1
มันไม่ถูกต้องทั้งหมด "ชื่อโดเมน" เป็นเพียงส่วนหนึ่งของชื่อโฮสต์ คุณสามารถทำการค้นหาได้เฉพาะในส่วน "โฮสต์" ของ FQDN โดยไม่ต้องต่อท้ายโดเมน NSLOOKUPจะพยายามใช้ส่วนต่อท้ายการค้นหาใด ๆ ที่กำหนดค่าไว้ในระบบของคุณโดยอัตโนมัติเพื่อรับการจับคู่
TheCompWiz

1
คุณไม่จำเป็นต้องNSLOOKUPใช้ตัวเลือกอย่างเต็มที่- ไวยากรณ์นั้นแปลกไปหน่อย ตัวอย่าง :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

เพียงขุดเข้าไปในตัวเลือกของ nslookup ซึ่งคุณสามารถแสดงถ้าคุณเรียกใช้nslookupแล้วพิมพ์helpภายในของโหมดโต้ตอบ nslookup ให้คำตอบที่ถูกต้อง:

C:\Documents and Settings\Anton Daneyko>nslookup help
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

*** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain

C:\Documents and Settings\Anton Daneyko>nslookup
Default Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

> stackoverflow.com 8.8.8.8
Server:  [8.8.8.8]
Address:  8.8.8.8

Non-authoritative answer:
Name:    stackoverflow.com
Address:  64.34.119.12

16
ฉันยิ้มเมื่อเห็นคำตอบนี้เริ่มต้นด้วย "เพิ่งขุดไอเอ็นจี ... "
Hossein

7

ใช่ C:\Documents and Settings\Anton Daneyko>nslookup superuser.com จะค้นหาเซิร์ฟเวอร์ DNS ของคุณเพื่อค้นหาที่อยู่ IP สำหรับ superuser.com หากคุณเพิ่มที่อยู่ IP หรือชื่อของเซิร์ฟเวอร์ DNS อื่นลงในบรรทัดคำสั่งจะค้นหาที่ได้รับเซิร์ฟเวอร์ DNS สำหรับที่อยู่ IP ของ superuser.com Ex:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4
Server:  google-public-dns-b.google.com
Address:  8.8.4.4

Non-authoritative answer:
Name:    superuser.com
Addresses:  190.93.245.58
      190.93.246.58
      141.101.114.59
      190.93.247.58
      190.93.244.58

อย่างไรก็ตาม 8.8.4.4 เป็นที่อยู่ ip ของเซิร์ฟเวอร์ Google DNS

แต่ทั้งสองข้อให้คำว่า "คำตอบที่ไม่มีสิทธิ์" เนื่องจากไม่ใช่ SOA ซึ่งเป็นสิทธิ์สำหรับโดเมน superuser.com ทั้งคู่มีสำเนาแคชที่เผยแพร่จาก SOA ถ้าคุณต้องการถามเซิร์ฟเวอร์ที่มีสิทธิ์อันดับแรกให้ค้นหาชื่อของที่อยู่ ip ของเซิร์ฟเวอร์ที่มีสิทธิ์โดยใช้คำสั่ง:

C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
superuser.com   nameserver = cf-dns02.superuser.com
superuser.com   nameserver = cf-dns01.superuser.com

cf-dns02.superuser.com  internet address = 173.245.59.4
cf-dns02.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04
cf-dns01.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35
cf-dns01.superuser.com  internet address = 173.245.58.53

สิ่งนี้จะส่งคืนคำตอบที่ไม่ได้รับอนุญาตจากเซิร์ฟเวอร์ DNS ในพื้นที่ของคุณจาก Marburg Uni โดยตั้งชื่อเซิร์ฟเวอร์ที่เชื่อถือได้ทั้งหมดสำหรับ superuser.com จากนั้นคุณสามารถใช้คำสั่งที่เราใช้ก่อนหน้านี้เพื่อถามเซิร์ฟเวอร์ที่มีสิทธิ์ใด ๆ ของ 4 ดังต่อไปนี้:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4
Server:  cf-173-245-59-4.cloudflare.com
Address:  173.245.59.4

Name:    superuser.com
Addresses:  141.101.114.59
      190.93.246.58
      190.93.245.58
      190.93.247.58
      190.93.244.58

อย่างที่คุณเห็นเวลานี้เซิร์ฟเวอร์ SOA ที่เชื่อถือได้จะส่งคืนที่อยู่ ip ดังนั้นคุณจึงไม่เห็นความคิดเห็น "คำตอบที่ไม่ใช่สิทธิ์ใช้งาน" อีกต่อไป สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณสร้างชื่อโดเมนใหม่หรือเปลี่ยนผู้ให้บริการโฮสติ้งหรือถ่ายโอนไปยัง บริษัท จดทะเบียนโดเมนอื่นและคุณไม่สามารถเข้าถึงเว็บไซต์ของคุณได้เนื่องจากที่อยู่ IP ใหม่ยังไม่เผยแพร่แม้หลังจาก 24 ชั่วโมง จากนั้นคุณสามารถเริ่มต้นด้วย SOA และตรวจสอบว่าที่อยู่ IP ที่ถูกต้องของคุณนั้นมอบให้โดยเซิร์ฟเวอร์ DNS จากนั้นทำตามที่อยู่ถัดจากต้นไม้ เป็นการดีที่จะตรวจสอบว่าเซิร์ฟเวอร์ Google DNS ได้รับการเปลี่ยนแปลงหรือไม่จากนั้นสุดท้ายหากเซิร์ฟเวอร์ DNS ในเครื่องของคุณสามารถแก้ไขชื่อโดเมนของคุณเพื่อแก้ไขที่อยู่ IP ได้


1

ในการเปลี่ยนเซิร์ฟเวอร์ DNS เริ่มต้นของคุณใน nslookup คุณสามารถเปลี่ยนเซิร์ฟเวอร์โดยพิมพ์เซิร์ฟเวอร์ NAMEorIPofDNS ในตัวอย่างด้านล่างนี้ฉันได้เปลี่ยนเซิร์ฟเวอร์ DNS เริ่มต้นของฉัน (192.168.50.21) เป็นเซิร์ฟเวอร์ใหม่ (4.2.2.3)

C: \ Windows \ system32> nslookup

เซิร์ฟเวอร์เริ่มต้น: ไม่รู้จัก

ที่อยู่: 192.168.50.21

เซิร์ฟเวอร์ 4.2.2.3

เซิร์ฟเวอร์เริ่มต้น: c.resolvers.level3.net

ที่อยู่: 4.2.2.3

>

ตอนนี้ฉันพร้อมที่จะทำแบบสอบถามกับ 4.2.2.3 เมื่อเทียบกับ 192.168.50.21


เป็นการทำซ้ำคำตอบอื่นและไม่เพิ่มเนื้อหาใหม่ โปรดอย่าโพสต์คำตอบเว้นแต่ว่าคุณมีสิ่งใหม่ที่จะมีส่วนร่วม
DavidPostill

อาจไม่มีเนื้อหาใหม่ แต่มีค่า ฉันชอบคำตอบนี้มากกว่า onces ยาว :)
Pawel Cioch

0

คุณสามารถกำหนดค่า DNS หลักที่จะใช้กับการเชื่อมต่อของคุณ
ไปที่คุณสมบัติการเชื่อมต่อของคุณ => Internet Procol (TCP / IP) (สถานที่ที่คุณสามารถตั้งค่า IP แบบคงที่) ที่
นี่คุณสามารถกำหนด DNS ที่คุณต้องการใช้สำหรับแต่ละการเชื่อมต่อด้วยตนเอง
หลังจากการทดสอบคุณสามารถเปลี่ยนกลับเป็นค่าก่อนหน้าได้ตลอดเวลา


3
ฉันไม่คิดว่าเป็นวิธี "โดยตรง" ในการสอบถามเซิร์ฟเวอร์ DNS
lepe

0

รับประเภทเร็กคอร์ดเฉพาะจากเซิร์ฟเวอร์ DNS ที่ระบุด้วยคำสั่งเดียว

ในการค้นหาประเภทเรคคอร์ดอื่น ๆ นอกเหนือจากเรคคอร์ด A และ AAAA (และ CNAME) ที่ส่งคืนโดย nslookup โดยใช้เซิร์ฟเวอร์ DNS ที่คุณระบุ:

nslookup -q=<record type> <host> <DNS server>

ตัวอย่างเช่นในการส่งคืนระเบียน MX สำหรับโดเมนที่stackexchange.comใช้เซิร์ฟเวอร์ DNS 8.8.4.4คำสั่งจะเป็น:

nslookup -q=MX stackexchange.com 8.8.4.4

0

ฉันกำลังทำงานกับ Openwrt 18.06.1 ARMv6 Raspberry pi และตั้งค่า tor dns รวมถึง dnscrypt-proxy ดังนั้นจึงมีปัญหาที่คล้ายกันมาก สาเหตุหลักคือ isp ภายในเครื่องกำลังขัดขวางการตอบสนองที่ไม่ปลอดภัยจาก root-servers.net การตอบสนองที่บอกว่าไม่พบไซต์จากนั้นเปลี่ยนเส้นทางไปยังเว็บไซต์ของตนเอง ในขณะที่ข้อบกพร่องด้านความปลอดภัยที่ดีฉันไม่พบว่ามันมีประโยชน์โดยเฉพาะอย่างยิ่ง

การทดสอบครั้งแรกที่ต้องทำเมื่อทำการค้นหาที่อยู่ที่เฉพาะเจาะจงคือการลองใช้ที่อยู่ที่ไม่ถูกต้องเพื่อให้แน่ใจว่าคุณได้รับการตอบสนองที่ไม่ถูกต้องเมื่อใช้เซิร์ฟเวอร์พอร์ตและพารามิเตอร์โฮสต์มีคำแนะนำและรุ่นต่างๆมากมาย คุณกำลังทำการทดสอบพอร์ตเมื่อในความเป็นจริงการตอบกลับจากผลลัพธ์ที่แคชหรือเซิร์ฟเวอร์เริ่มต้น หลังจากได้รับการตอบกลับแบบ null แล้วให้ทำงานกับที่อยู่เซิร์ฟเวอร์และพอร์ตที่ใช้งานอยู่ พอร์ตที่ใช้งานสามารถแสดงบน openwrt ด้วย netstat -plnt แต่โปรดทราบว่าคำสั่งเราเตอร์บางตัวอาจต้องติดตั้งก่อน บริการ tor ที่ฉันตั้งค่าไว้ที่พอร์ต 9053 ไม่แสดงที่นี่ แต่ยังใช้งานได้หลังจากเพิ่ม DNSPort 127.0.0.1:9053 ไปยังไฟล์ torrc รูปแบบ nslookup บนแพลตฟอร์มนี้ยอมรับพารามิเตอร์ [โฮสต์] และ [เซิร์ฟเวอร์] และฉันสามารถทดสอบ tor dns ด้วย nslookup cnn.com 127.0.0.1 # 9053 ฉันสามารถทดสอบ dnscrypt ด้วยคำสั่ง nslookup cnn com 127.0.0.1 # 5353 การเปลี่ยนเป็นหมายเลขพอร์ตหรือโดเมนที่ไม่ถูกต้องจะได้รับการตอบกลับ ; หมดเวลาการเชื่อมต่อ; ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้ Dig ยังทำงานกับ openwrt แต่จะต้องติดตั้งจากแพ็คเกจ bind-dig dig -q 127.0.0.1 -p 9053 www.bbc.com และอีกครั้งล้มเหลวสำหรับพอร์ตที่ไม่ถูกต้อง ในกรณีของฉันปัญหาได้รับการแก้ไขเมื่อฉันเปลี่ยนรายการใน / etc / config / เครือข่ายและตั้งค่าตัวเลือก dns '127.0.0.1' สำหรับเครือข่ายที่ก่อนหน้านี้ฉันใช้รายการ DNS ที่ไม่ปลอดภัยที่นั่น


0

สำหรับ windows สิ่งที่คุณอาจมองหามีอยู่ในบทความต่อไปนี้: https://technet.microsoft.com/en-us/library/ff394369.aspx


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