Bagaimana cara mengarahkan kueri ke server DNS tertentu?


155

Saya ingin mengeluarkan kueri ke server DNS tertentu, yang alamat IP-nya saya tahu. Tidak masalah apakah itu di Windows atau * nix.

Di Windows saya bisa melakukan sesuatu seperti:

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

Tapi ini menggunakan pengaturan DNS mesin lokal. Alih-alih, saya ingin meminta server DNS tertentu untuk menguji apakah itu menanggapi pertanyaan saya dengan benar atau merespons sama sekali.

Jadi harus seperti:

nslookup --dns-ip=8.8.8.8 superuser.com

Jawaban:


201

Untuk catatan dasar A dan CNAME, Anda cukup melakukannya

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'

atau jika Anda cukup mengetik nslookup tanpa parameter apa pun, Anda dapat melakukan lebih banyak opsi ...

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
Sangat disayangkan bahwa manual menggunakan istilah 'host' dan 'server' daripada sesuatu yang lebih jelas seperti 'domain-name' dan 'dns-server'.
ClearCrescendo

1
Itu tidak sepenuhnya salah. "Nama domain" hanya bagian dari nama host. Anda memang dapat melakukan pencarian hanya pada bagian "host" dari FQDN, menghilangkan akhiran domain. NSLOOKUPakan secara otomatis mencoba menggunakan sufiks pencarian yang dikonfigurasi di sistem Anda untuk mendapatkan kecocokan.
TheCompWiz

1
Anda tidak harus sepenuhnya mengakses NSLOOKUPuntuk menggunakan opsi - sintaks hanya sedikit aneh. Contoh :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

Hanya dengan menggali opsi nslookup, yang dapat Anda tampilkan jika Anda memohon nslookupdan kemudian mengetik helpdi dalam mode interaktif nslookup memberi saya jawaban yang tepat:

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
Saya tersenyum ketika saya melihat jawaban ini dimulai dengan "Hanya menggali ...".
Hossein

7

Ya, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com akan mencari server DNS Anda sendiri untuk mengetahui alamat IP untuk superuser.com. Jika Anda menambahkan alamat ip atau nama server DNS yang berbeda ke baris perintah, itu akan mencari server DNS yang diberikan untuk alamat 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

Omong-omong, 8.8.4.4 adalah alamat ip server DNS Google.

Tapi, kedua di atas memberikan "jawaban Non-otoritatif", karena tidak satupun dari mereka SOA, yang merupakan otoritatif untuk domain superuser.com. Keduanya memiliki salinan cache yang telah disebarkan dari SOA. Jika Anda ingin bertanya server otoritatif, pertama cari tahu nama alamat ip dari server otoritatif, menggunakan perintah:

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

Ini akan mengembalikan jawaban non-otoritatif dari server DNS lokal Anda, dari Marburg Uni, menamai semua server otoritatif untuk superuser.com. Kemudian Anda dapat menggunakan perintah yang kami gunakan sebelumnya untuk menanyakan salah satu dari 4 server resmi, sebagai berikut:

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

Seperti yang Anda lihat, kali ini server SOA otoritatif mengembalikan alamat ip, maka Anda tidak melihat komentar "Jawaban non-otoritatif" lagi. Ini sangat berguna, ketika Anda telah membuat nama domain baru atau mengubah penyedia hosting atau ditransfer ke pendaftar domain yang berbeda, dan Anda tidak dapat mengakses situs web Anda, karena alamat IP baru belum disebarluaskan bahkan setelah 24 jam. Kemudian Anda bisa mulai dengan SOA dan memverifikasi bahwa alamat ip Anda yang benar diberikan oleh server DNS, dan kemudian ikuti lebih jauh ke bawah pohon. Baik untuk memeriksa apakah server DNS Google telah menerima perubahan, dan terakhir jika server DNS lokal Anda dapat menyelesaikan nama Domain Anda untuk memperbaiki alamat IP.


1

Untuk mengubah server DNS default Anda di nslookup, Anda cukup mengubah server dengan mengetikkan server NAME atau IPDDNS. Dalam contoh di bawah ini saya telah mengubah server DNS default saya (192.168.50.21) menjadi yang baru (4.2.2.3)

C: \ Windows \ system32> nslookup

Server Default: Tidak Dikenal

Alamat: 192.168.50.21

server 4.2.2.3

Server Default: c.resolvers.level3.net

Alamat: 4.2.2.3

>

Sekarang saya siap untuk membuat permintaan terhadap 4.2.2.3 versus 192.168.50.21


Ini menggandakan jawaban lain dan tidak menambahkan konten baru. Tolong jangan memposting jawaban kecuali Anda benar-benar memiliki sesuatu untuk berkontribusi.
DavidPostill

Mungkin tidak ada konten baru, tetapi nilai. Saya lebih suka jawaban ini daripada onces lama :)
Pawel Cioch

0

Anda dapat mengkonfigurasi DNS utama untuk digunakan dengan koneksi Anda.
Pergi ke properti koneksi Anda => Internet Procol (TCP / IP). (tempat Anda dapat mengatur IP statis)
Di sini Anda dapat menentukan DNS mana yang ingin Anda gunakan untuk setiap koneksi secara manual.
Setelah pengujian, Anda selalu dapat mengubahnya kembali ke nilai sebelumnya.


3
Saya tidak berpikir itu adalah cara "langsung" untuk menanyakan server DNS.
Lepe

0

Dapatkan tipe catatan spesifik dari server DNS yang ditentukan dengan satu perintah

Untuk mencari jenis rekaman selain dari catatan A dan AAAA (dan CNAME) default yang dikembalikan oleh nslookup, menggunakan server DNS yang Anda tentukan:

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

Misalnya, untuk mengembalikan catatan MX untuk domain stackexchange.commenggunakan server DNS 8.8.4.4perintahnya adalah:

nslookup -q=MX stackexchange.com 8.8.4.4

0

Saya bekerja pada Openwrt 18.06.1 ARMv6 Raspberry pi dan mengatur untuk dns serta dnscrypt-proxy sehingga memiliki masalah yang sangat mirip. Penyebab utama adalah bahwa ISP lokal sedang mencegat tanggapan tidak aman dari root-servers.net, tanggapan yang mengatakan situs itu tidak ditemukan, kemudian mengarahkan ke situs web mereka sendiri. Meskipun ini bukan kelemahan keamanan yang hebat, saya juga tidak menemukannya.

Tes pertama yang harus dilakukan ketika menanyakan alamat tertentu sebenarnya adalah dengan mencoba alamat yang tidak valid, untuk memastikan bahwa Anda mendapatkan respons nol yang tepat saat menggunakan parameter server, port dan host, Ada banyak panduan dan versi dan mudah dipikirkan Anda sedang melakukan tes port ketika sebenarnya membalas dari hasil cache atau server default. Setelah mendapatkan respons nol, kemudian bekerja dengan alamat dan port server aktif. Port aktif dapat ditampilkan di openwrt dengan netstat -plnt tetapi perhatikan bahwa beberapa perintah router mungkin perlu diinstal terlebih dahulu. Layanan tor yang saya atur pada port 9053 tidak muncul di sini tetapi masih berfungsi setelah menambahkan DNSPort 127.0.0.1:9053 ke file torrc. Format nslookup pada platform ini menerima parameter [host] dan [server] dan saya dapat menguji dns dengan nslookup cnn.com 127.0.0.1 # 9053 Saya dapat menguji dnscrypt dengan perintah nslookup cnn. com 127.0.0.1 # 5353 Mengubah ke nomor port atau domain yang tidak valid mendapat respons; ; waktu koneksi berakhir; tidak ada server yang bisa dijangkau Dig juga berfungsi di openwrt tetapi harus diinstal dari paket bind-dig. menggali -q 127.0.0.1 -p 9053 www.bbc.com Dan lagi-lagi gagal untuk port yang tidak valid. Dalam kasus saya, masalahnya diselesaikan ketika saya mengubah entri di / etc / config / network dan mengatur opsi dns '127.0.0.1' untuk jaringan di mana saya sebelumnya menggunakan entri dns tidak aman di sana.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.