Назад | Перейти на главную страницу

Как получить пары сервер имен - ip для некоторого домена?

Я хочу получить пару имен сервер - ip для некоторого домена. Например, есть домен serverfault.com. Я хочу получить:

NS1.SERVERFAULT.COM - 198.252.206.80
NS2.SERVERFAULT.COM - 198.252.206.81

Является ли это возможным? Я пытаюсь использовать nslookup, но безуспешно.

Обновить. Узнаю команду: C: \ Users \ Nick> nslookup -type = ns serverfault.com, но для меня это не работает:

C:\Users\Nick>nslookup -type=ns serverfault.com
Server:  UnKnown
Address:  62.68.141.212

Non-authoritative answer:
serverfault.com nameserver = ns3.serverfault.com
serverfault.com nameserver = ns4.serverfault.com
serverfault.com nameserver = ns2.serverfault.com
serverfault.com nameserver = ns1.serverfault.com

Часть / a запроса, которую вы хотите, называется «авторитет». Тип записи называется NS.

Я использую для этого «копать». Поскольку Windows не хватает инструментов, я устанавливаю пакет Cygwin (бесплатный, с открытым исходным кодом), который включает его.

nslookup также может это делать и доступен по умолчанию в системах Windows. В моей более старой системе Windows nslookup, который поставляется вместе, может предоставить вам это через (по крайней мере) запрос «все записи» или «ns записи».

Вот как это делается с помощью командной строки моего окна XP для Google.com:

nslookup
> set type=NS
> google.com
Server:  h-67-100-88-26.snfc.ca.megapath.net
Address:  67.100.88.26

Non-authoritative answer:
google.com      nameserver = ns4.google.com
google.com      nameserver = ns1.google.com
google.com      nameserver = ns2.google.com
google.com      nameserver = ns3.google.com

ns3.google.com  internet address = 216.239.36.10
ns4.google.com  internet address = 216.239.38.10
ns1.google.com  internet address = 216.239.32.10
ns2.google.com  internet address = 216.239.34.10
>

Ниже приведен экран справки для Windows XP Corporate Edition nslookup:

Commands:   (identifiers are shown in uppercase, [] means optional)

ИМЯ - вывести информацию об ИМЯ хоста / домена, используя сервер по умолчанию ИМЯ1 ИМЯ2 - как указано выше, но использовать ИМЯ2 в качестве справки по серверу или? - распечатать информацию об общих командах установить OPTION - установить опцию all - параметры печати, текущий сервер и хост [no] debug - распечатать отладочную информацию [no] d2 - распечатать исчерпывающую отладочную информацию [no] defname - добавить имя домена к каждому запросу [ no] recurse - запросить рекурсивный ответ на запрос [no] search - использовать список поиска домена [no] vc - всегда использовать виртуальный канал domain = NAME - установить имя домена по умолчанию на NAME srchlist = N1 [/ N2 /.../ N6] - установить домен на N1 и список поиска на N1, N2 и т. Д. Root = NAME - установить корневой сервер на NAME retry = X - установить количество попыток на X timeout = X - установить начальный интервал тайм-аута на тип X секунд = X - установить тип запроса (например, A, ANY, CNAME, MX, NS, PTR, SOA, SRV) querytype = X - то же, что и type class = X - установить класс запроса (например, IN (Интернет), ANY) [ no] msxfr - использовать MS fast zone transfer ixfrver = X - текущая версия для использования в запросе передачи IXFR ИМЯ сервера - установить сервер по умолчанию на ИМЯ, используя текущий сервер по умолчанию. ИМЯ сервера - установить сервер по умолчанию на ИМЯ, используя начальный палец сервера [ПОЛЬЗОВАТЕЛЬ] - палец er необязательное ИМЯ в текущем корне хоста по умолчанию - установить текущий сервер по умолчанию в корень ls [opt] DOMAIN [> FILE] - вывести список адресов в DOMAIN (необязательно: вывод в ФАЙЛ) -a - перечислить канонические имена и псевдонимы -d - перечислить все записи -t ТИП - перечислить записи заданного типа (например, A, CNAME, MX, NS, PTR и т. Д.) View FILE - отсортировать выходной файл ls и просмотреть его с помощью pg exit - выйти из программы

Ниже приводится первая из "страниц руководства" по dig:

DIG(1)                               BIND9                              DIG(1)

NAME dig - утилита поиска DNS

СИНОПСИС dig [@server] [-b адрес] [-c класс] [-f имя файла] [-k имя файла] [-m] [-p номер порта] [-q имя] [-t тип] [-x адрес ] [-y [hmac:] имя: ключ] [-4] [-6] [имя] [тип] [класс] [queryopt ...]

   dig [-h]

   dig [global-queryopt...] [query...]

ОПИСАНИЕ dig (поиск информации о домене) - это гибкий инструмент для опроса серверов имен DNS. Он выполняет поиск в DNS и отображает ответы, полученные от запрошенных серверов имен. Большинство администраторов DNS используют dig для устранения проблем с DNS из-за его гибкости, простоты использования и ясности вывода. Другие инструменты поиска, как правило, менее функциональны, чем dig.

   Although dig is normally used with command-line arguments, it also has
   a batch mode of operation for reading lookup requests from a file. A
   brief summary of its command-line arguments and options is printed when
   the -h option is given. Unlike earlier versions, the BIND 9
   implementation of dig allows multiple lookups to be issued from the
   command line.

   Unless it is told to query a specific name server, dig will try each of
   the servers listed in /etc/resolv.conf.

   When no command line arguments or options are given, dig will perform
   an NS query for "." (the root).

   It is possible to set per-user defaults for dig via ${HOME}/.digrc.
   This file is read and any options in it are applied before the command
   line arguments.

   The IN and CH class names overlap with the IN and CH top level domains
   names. Either use the -t and -c options to specify the type and class,
   use the -q the specify the domain name, or use "IN." and "CH." when
   looking up these top level domains.

Самое краткое, что я могу придумать, - это использовать dig:

$ dig +noall +additional -t ns google.com
ns4.google.com.         27791   IN      A       216.239.38.10
ns1.google.com.         27791   IN      A       216.239.32.10
ns2.google.com.         27791   IN      A       216.239.34.10
ns3.google.com.         27791   IN      A       216.239.36.10

Обратите внимание, что на самом деле это кэшированные клеевые записи. Если вам нужен ответ от самого авторитетного сервера имен, вам нужно спросить его напрямую. Самый простой способ сделать это с помощью +trace, а затем просто посмотрите на последний полученный ответ.

$ dig +trace +noall +additional google.com ns
m.root-servers.net.     85952   IN      A       202.12.27.33
m.root-servers.net.     85952   IN      AAAA    2001:dc3::35
a.root-servers.net.     85952   IN      A       198.41.0.4
a.root-servers.net.     85952   IN      AAAA    2001:503:ba3e::2:30
h.root-servers.net.     85952   IN      A       128.63.2.53
h.root-servers.net.     85952   IN      AAAA    2001:500:1::803f:235
d.root-servers.net.     41980   IN      A       199.7.91.13
d.root-servers.net.     41980   IN      AAAA    2001:500:2d::d
c.root-servers.net.     85952   IN      A       192.33.4.12
j.root-servers.net.     85952   IN      A       192.58.128.30
j.root-servers.net.     85952   IN      AAAA    2001:503:c27::2:30
b.root-servers.net.     85952   IN      A       192.228.79.201
k.root-servers.net.     85952   IN      A       193.0.14.129
;; Received 509 bytes from 10.19.12.20#53(10.19.12.20) in 6 ms

a.gtld-servers.net.     172800  IN      A       192.5.6.30
a.gtld-servers.net.     172800  IN      AAAA    2001:503:a83e::2:30
b.gtld-servers.net.     172800  IN      A       192.33.14.30
b.gtld-servers.net.     172800  IN      AAAA    2001:503:231d::2:30
c.gtld-servers.net.     172800  IN      A       192.26.92.30
d.gtld-servers.net.     172800  IN      A       192.31.80.30
e.gtld-servers.net.     172800  IN      A       192.12.94.30
f.gtld-servers.net.     172800  IN      A       192.35.51.30
g.gtld-servers.net.     172800  IN      A       192.42.93.30
h.gtld-servers.net.     172800  IN      A       192.54.112.30
i.gtld-servers.net.     172800  IN      A       192.43.172.30
j.gtld-servers.net.     172800  IN      A       192.48.79.30
k.gtld-servers.net.     172800  IN      A       192.52.178.30
l.gtld-servers.net.     172800  IN      A       192.41.162.30
;; Received 500 bytes from 192.58.128.30#53(192.58.128.30) in 148 ms

ns2.google.com.         172800  IN      A       216.239.34.10
ns1.google.com.         172800  IN      A       216.239.32.10
ns3.google.com.         172800  IN      A       216.239.36.10
ns4.google.com.         172800  IN      A       216.239.38.10
;; Received 164 bytes from 192.42.93.30#53(192.42.93.30) in 174 ms

ns4.google.com.         345600  IN      A       216.239.38.10
ns2.google.com.         345600  IN      A       216.239.34.10
ns1.google.com.         345600  IN      A       216.239.32.10
ns3.google.com.         345600  IN      A       216.239.36.10
;; Received 164 bytes from 216.239.36.10#53(216.239.36.10) in 12 ms

Обычно это одно и то же, но если домен находится в процессе переключения серверов имен, он может отличаться.

Чтобы найти серверы имен данного домена, вы можете использовать nslookup для получения записи SOA. С помощью serverfault.com Например:

C:\> nslookup
Default Server: <foo>
Address: <bar>

> set type=SOA
> serverfault.com
Server: <foo>
Address: <bar>

Non-aithoritative answer:
serverfault.com
        primary name server = ns1.serverfault.com
        responsible mail addr = sysadmins.stackoverflow.com
        serial  = 2013072101
        refresh = 600 (10 mins)
        retry   = 600 (10 mins)
        expire  = 604800 (7 days)
        default TTL = 1440 (24 mins)

serverfault.com nameserver = ns2.serverfault.com
serverfault.com nameserver = ns1.serverfault.com
> exit

C:\>

Тогда вы просто бежите nslookup против перечисленных серверов имен, чтобы получить соответствующие IP-адреса.