Bir sorguyu belirli bir DNS sunucusuna nasıl yönlendirebilirim?


154

IP adresini bildiğim belirli bir DNS sunucusuna sorgu vermek istiyorum. Windows veya * nix'te olması gerçekten önemli değil.

Windows'da şöyle bir şey yapabilirim:

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

Ancak bu, yerel makinenin DNS ayarlarını kullanır. Bunun yerine, sorgularıma doğru yanıt verip vermediğini veya hiç yanıt vermediğini test etmek için belirli bir DNS sunucusunu sorgulamak istiyorum.

Bu yüzden şöyle bir şey olmalı:

nslookup --dns-ip=8.8.8.8 superuser.com

Yanıtlar:


200

Temel A ve CNAME kayıtları için yapabilecekleriniz

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'

veya nslookup komutunu herhangi bir parametre olmadan girerseniz çok daha fazla seçenek yapabilirsiniz ...

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
Kılavuzun, 'domain-name' ve 'dns-server' gibi daha net bir şey yerine 'host' ve 'server' terimlerini kullanması ne yazık ki.
ClearCrescendo

1
Tamamen yanlış değil. "Domain-name" bir ana bilgisayar adının sadece bir kısmıdır. Gerçekten de etki alanı soneki atlayarak, FQDN'nin sadece "ana bilgisayar" bölümünde arama yapabilirsiniz. NSLOOKUPBir eşleşme elde etmek için sisteminizde yapılandırılmış arama soneklerini otomatik olarak kullanmaya çalışır.
TheCompWiz

1
NSLOOKUPSeçenekleri kullanmak için tam erişiminiz olması gerekmez - sözdizimi sadece biraz garip. Örnek :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

Sadece çağırırsanız görüntüleyebileceğiniz nslookup seçeneklerini kazıp nslookupsonra helpnslookup etkileşimli modunun içine yazarak bana doğru cevabı verdi:

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
Bu cevabın "Sadece kazmak ..." ile başladığını görünce gülümsedi .
Hossein,

7

Evet, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com superuser.com adresinin IP adresini bulmak için kendi DNS sunucunuzu arayacaktır. Ip adresini veya farklı bir DNS sunucusunun adını komut satırına eklerseniz, bu verilen super server.com'un ip adresi için verilen DNS sunucusuna bakacaktır. Ör:

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

Bu arada, 8.8.4.4 Google DNS sunucularının ip adresidir.

Ancak, yukarıdakilerin her ikisi de, superuser.com etki alanı için yetkili olan SOA'dan hiçbiri olarak "yetkili olmayan yanıtlar" verir. Her ikisi de SOA'dan yayılmış önbelleğe alınmış bir kopyaya sahiptir. Yetkili sunucuya sormak istiyorsanız, önce şu komutu kullanarak yetkili sunucunun ip adresinin adını bulun:

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

Bu, yerel DNS sunucunuzdan, Marburg Uni'den yetkili olmayan bir cevap döndürür ve superuser.com için tüm yetkili sunuculara ad verir. Ardından, daha önce kullandığımız 4 yetkili sunucuyu sormak için kullandığımız komutu aşağıdaki gibi kullanabilirsiniz:

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

Gördüğünüz gibi, bu sefer yetkili SOA sunucusu ip adreslerini döndürdü, dolayısıyla artık "Yetkili olmayan cevap" yorumunu görmüyorsunuz. Bu, özellikle yeni bir etki alanı adı oluşturduğunuzda veya barındırma sağlayıcılarını değiştirdiğinizde veya farklı bir etki alanı kayıt şirketine aktardığınızda ve yeni IP adresleri 24 saat sonra bile yayılmadığı için web sitenize erişemezsiniz. Daha sonra SOA ile başlayabilir ve doğru ip adresinizin DNS sunucusu tarafından verildiğini doğrulayabilir ve ardından ağaçtan aşağı doğru takip edebilirsiniz. Google DNS sunucularının değişiklikleri alıp almadığını ve son olarak da yerel DNS sunucunuzun IP adresini düzeltmek için Etki Alanı adınızı çözüp çözemediğini kontrol etmek iyidir.


1

Varsayılan DNS sunucunuzu nslookup'ta değiştirmek için sunucuyu değiştirerek sunucuyu değiştirebilirsiniz. NAMEorIPofDNS Aşağıdaki örnekte, varsayılan DNS sunucumu (192.168.50.21) yenisiyle değiştirdim (4.2.2.3)

C: \ Windows \ system32> nslookup

Varsayılan Sunucu: UnKnown

Adres: 192.168.50.21

sunucu 4.2.2.3

Varsayılan Sunucu: c.resolvers.level3.net

Adres: 4.2.2.3

>

Şimdi, 4.2.2.3'e karşı 192.168.50.21'e karşı sorgu yapmaya hazırım.


Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
DavidPostill

Yeni içerik olmayabilir ama değer. Uzun cevaplarda bu cevabı tercih ederim :)
Pawel Cioch

0

Bağlantınızla kullanılacak birincil DNS'yi yapılandırabilirsiniz.
Bağlantı özelliklerine git => İnternet Protokolü (TCP / IP). (statik IP ayarlayabileceğiniz yer)
Burada, her bir bağlantı için hangi DNS'yi kullanmak istediğinizi manuel olarak tanımlayabilirsiniz.
Testten sonra, her zaman önceki değerine geri döndürebilirsiniz.


3
Bunun bir DNS sunucusunu sorgulamanın "doğrudan" bir yolu olduğunu sanmıyorum.
lepe

0

Bir komutla belirtilen DNS sunucusundan belirli kayıt türlerini alın

Belirlediğiniz DNS sunucusunu kullanarak nslookup tarafından döndürülen varsayılan A ve AAAA (ve CNAME) kayıtları dışındaki kayıt türlerini aramak için:

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

Örneğin, stackexchange.comDNS sunucusunu kullanarak etki alanının MX kayıtlarını döndürmek 8.8.4.4için komut şöyle olacaktır:

nslookup -q=MX stackexchange.com 8.8.4.4

0

Openwrt 18.06.1 ARMv6 Raspberry pi üzerinde çalışıyorum ve dnscrypt-proxy'nin yanı sıra tor dns'in kurulması da çok benzer bir sorun yaşadı. Kök sebep, yerel isp'nin root-servers.net adresinden güvensiz cevapları, sitenin bulunmadığını söyleyen cevapları yakalayıp kendi web sitelerine yönlendirmesidir. Büyük bir güvenlik açığı olmasa da, özellikle yararlı bulmuyorum.

Belirli bir adres sorgulanırken yapılacak ilk test aslında geçersiz bir adres denemek, sunucu, port ve host parametrelerini kullanırken uygun bir null yanıtı aldığınızdan emin olmak için, Çok sayıda kılavuz ve sürüm var ve düşünmek kolaydır. aslında önbelleğe alınmış sonuçlardan veya varsayılan sunuculardan yanıt verirken bir bağlantı noktası testi yapıyorsunuz. Boş bir cevap aldıktan sonra aktif bir sunucu adresi ve portu ile çalışın. Aktif portlar netstat -plnt ile openwrt'de gösterilebilir, ancak önce bazı yönlendirici komutlarının yüklenmesi gerekebileceğini unutmayın. 9053 numaralı bağlantı noktasında ayarladığım tor servisi burada gösterilmiyor, ancak torrc dosyasına DNSPort 127.0.0.1:9053 eklendikten sonra hala çalışıyor. Bu platformdaki nslookup formatı [host] ve [server] parametrelerini kabul eder ve torns nslookup cnn.com ile test edebilirim 127.0.0.1 # 9053 nslookup cnn komutuyla dnscrypt test edebilirim. com 127.0.0.1 # 5353 Geçersiz port numaralarına veya domainlerine geçmek bir cevap alır; ; bağlantı zaman aşımı; hiçbir sunucuya erişilemedi. Dig ayrıca openwrt üzerinde de çalışıyor, ancak derleme paketinden kurulması gerekiyor. dig -q 127.0.0.1 -p 9053 www.bbc.com Ve geçersiz portlar için yine başarısız olur. Benim durumumda, / etc / config / network'teki girişleri değiştirdiğimde ve daha önce güvensiz dns girişlerini kullandığım ağlar için dns '127.0.0.1' seçeneğini ayarladığımda sorun çözüldü.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.