Jak mogę skierować zapytanie do określonego serwera DNS?

154

Chciałbym wysłać zapytanie do określonego serwera DNS, którego adres IP znam. Nie ma znaczenia, czy jest to system Windows, czy * nix.

W systemie Windows mogę zrobić coś takiego:

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

Ale wykorzystuje to ustawienia DNS komputera lokalnego. Zamiast tego chciałbym wysłać zapytanie do określonego serwera DNS, aby sprawdzić, czy odpowiada on poprawnie na moje zapytania lub w ogóle odpowiada.

Powinno to być coś takiego:

nslookup --dns-ip=8.8.8.8 superuser.com
Anton Daneyko
źródło

Odpowiedzi:

200

W przypadku podstawowych rekordów A i CNAME możesz to zrobić po prostu

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'

lub jeśli wpiszesz nslookup bez żadnych parametrów, możesz zrobić o wiele więcej opcji ...

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
TheCompWiz
źródło
7
Szkoda, że ​​w instrukcji użyto terminów „host” i „serwer”, a nie czegoś bardziej przejrzystego, jak „nazwa-domeny” i „serwer dns”.
ClearCrescendo
1
To nie jest całkowicie niepoprawne. „Nazwa domeny” jest tylko częścią nazwy hosta. Rzeczywiście można wyszukiwać tylko część „hosta” nazwy FQDN, pomijając przyrostek domeny. NSLOOKUPautomatycznie spróbuje użyć dowolnych sufiksów wyszukiwania skonfigurowanych w systemie, aby uzyskać dopasowanie.
TheCompWiz
1
NSLOOKUPAby skorzystać z opcji, nie musisz mieć pełnego dostępu - składnia jest trochę dziwna. Przykład :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5
11

Właśnie zagłębianie się w opcje nslookup, które możesz wyświetlić, jeśli wywołujesz, nslookupa następnie wpisanie helpw trybie interaktywnym nslookup dało mi właściwą odpowiedź:

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
Anton Daneyko
źródło
16
Uśmiechnąłem się, gdy zobaczyłem, że ta odpowiedź zaczyna się od „Po prostu kopać ...”.
Hossein
7

Tak, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com wyszukuje własny serwer DNS, aby znaleźć adres IP witryny superuser.com. Jeśli dodasz adres IP lub nazwę innego serwera DNS do wiersza poleceń, będzie on wyszukiwał podany serwer DNS pod adresem ip superuser.com. Dawny:

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

Nawiasem mówiąc, 8.8.4.4 to adres IP serwerów Google DNS.

Ale oba powyższe dają „Nieautorytatywne odpowiedzi”, ponieważ żadna z nich nie jest SOA, która jest autorytatywna dla domeny superuser.com. Oba mają buforowaną kopię, która została propagowana z SOA. Jeśli chcesz zapytać autorytatywny serwer, najpierw sprawdź nazwę adresu IP tego autorytatywnego serwera, używając polecenia:

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

Spowoduje to zwrócenie nieautorytatywnej odpowiedzi z lokalnego serwera DNS z Marburg Uni, podając wszystkie autorytatywne serwery dla superuser.com. Następnie możesz użyć polecenia, którego użyliśmy wcześniej, aby zapytać dowolny z 4 autorytatywnych serwerów w następujący sposób:

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

Jak widzisz, tym razem autorytatywny serwer SOA zwrócił adresy IP, dlatego nie widzisz już komentarza „Odpowiedź nieautorytatywna”. Jest to szczególnie przydatne, gdy utworzyłeś nową nazwę domeny lub zmieniłeś dostawców hostingu lub przeniosłeś się do innego rejestratora domen i nie możesz uzyskać dostępu do swojej witryny, ponieważ nowe adresy IP nie propagowały się nawet po 24 godzinach. Następnie możesz zacząć od SOA i sprawdzić, czy serwer DNS podaje poprawny adres IP, a następnie podążać za nim w dół drzewa. Dobrze jest sprawdzić, czy serwery Google DNS otrzymały zmiany, a następnie, czy lokalny serwer DNS może rozpoznać nazwę domeny pod kątem poprawnego adresu IP.

Bede Amarasekara
źródło
1

Aby zmienić domyślny serwer DNS w nslookup, możesz po prostu zmienić serwer, wpisując serwer NAMEorIPofDNS W poniższym przykładzie zmieniłem domyślny serwer DNS (192.168.50.21) na nowy (4.2.2.3)

C: \ Windows \ system32> nslookup

Serwer domyślny: UnKnown

Adres: 192.168.50.21

serwer 4.2.2.3

Serwer domyślny: c.resolvers.level3.net

Adres: 4.2.2.3

>

Teraz jestem gotowy do zapytania w stosunku do wersji 4.2.2.3 w porównaniu z 192.168.50.21

atlantaitservice.com
źródło
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
Może nie ma nowych treści, ale wartość. Wolę tę odpowiedź od długich czasów :)
Paweł Cioch,
0

możesz skonfigurować podstawowy DNS, który będzie używany z Twoim połączeniem.
Przejdź do właściwości połączenia => Internet Procol (TCP / IP). (miejsce, w którym możesz ustawić statyczny adres IP)
Tutaj możesz ręcznie określić, którego DNS chcesz używać dla każdego połączenia.
Po przetestowaniu zawsze możesz przywrócić poprzednią wartość.

PatrickCUDO
źródło
3
Nie sądzę, że jest to „bezpośredni” sposób wysyłania zapytań do serwera DNS.
lepe 17.07.15
0

Uzyskaj określone typy rekordów z określonego serwera DNS za pomocą jednego polecenia

Aby wyszukać typy rekordów inne niż domyślne rekordy A i AAAA (i CNAME) zwrócone przez nslookup przy użyciu określonego serwera DNS:

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

Na przykład, aby zwrócić rekordy MX dla domeny stackexchange.comkorzystającej z serwera DNS, 8.8.4.4komenda wyglądałaby następująco:

nslookup -q=MX stackexchange.com 8.8.4.4
Twisty impersonator
źródło
0

Pracuję na Openwrt 18.06.1 ARMv6 Raspberry pi i konfiguruję tor dns oraz dnscrypt-proxy, więc miałem bardzo podobny problem. Główną przyczyną jest to, że lokalny ISP przechwytuje niepewne odpowiedzi z root-servers.net, odpowiedzi, które mówią, że strona nie została znaleziona, a następnie przekierowuje na własną stronę internetową. Chociaż nie jest to duża wada bezpieczeństwa, nie uważam go za szczególnie przydatny.

Pierwszym testem, który należy wykonać podczas zapytania o konkretny adres, jest wypróbowanie nieprawidłowego adresu, aby upewnić się, że otrzymujesz prawidłową odpowiedź zerową podczas korzystania z parametrów serwera, portu i hosta. Istnieje wiele przewodników i wersji i łatwo jest myśleć wykonujesz test portu, gdy w rzeczywistości odpowiada on na wyniki z pamięci podręcznej lub z serwerów domyślnych. Po otrzymaniu odpowiedzi zerowej pracuj z aktywnym adresem i portem serwera. Aktywne porty mogą być wyświetlane w trybie openwrt za pomocą netstat -plnt, ale należy pamiętać, że niektóre polecenia routera mogą wymagać instalacji w pierwszej kolejności. Usługa Tor, którą ustawiłem na porcie 9053, nie jest tutaj wyświetlana, ale nadal działa po dodaniu DNSPort 127.0.0.1:9053 do pliku torrc. Format nslookup na tej platformie akceptuje parametry [host] i [serwer] i mogę testować dns z nslookup cnn.com 127.0.0.1 # 9053 Mogę przetestować dnscrypt za pomocą polecenia nslookup cnn. com 127.0.0.1 # 5353 Zmiana na nieprawidłowe numery portów lub domen otrzymuje odpowiedź; ; Przekroczono limit czasu połączenia; nie można dotrzeć do serwerów Dig działa również na openwrt, ale musi zostać zainstalowany z pakietu bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com I znowu nie działa z powodu nieprawidłowych portów. W moim przypadku problem został rozwiązany, kiedy zmieniłem wpisy w / etc / config / network i ustawiłem opcję dns „127.0.0.1” dla sieci, w których wcześniej używałem tam niepewnych wpisów dns.

Prada
źródło