Мне нужно проверить запись PTR, чтобы убедиться, что мой скрипт отправляет электронные письма, которые действительно будут получены моими пользователями, а не будут ошибочно помечены как спам.
Я понимаю, что интернет-провайдер, которому принадлежит диапазон IP-адресов, должен настроить запись PTR, но как проверить, настроена ли она уже?
решение1
Если у вас естьUnix или Linux, вы можете сделать это, введя в командной строке следующее:
dig -x xx.yy.zz.aa
Вы получите ответ с вашими полномочиями aa.zz.yy.xx.in-addr.arpa и сервером, разрешающим этот адрес.
ВОкнаты можешь сделать nslookup xx.yy.zz.aa
.
Вы также можете проверитьВ сетивwww.intodns.comи введите свой домен... При проверке результатов обратного поиска в зоне возникнет ошибка.
xx.yy.zz.aa = IP-адрес, который вы пытаетесь разрешить
Обновлять:
При использовании dig, nslookup или host часто бывает полезно использовать DNS-сервер вне вашего контроля, например Google (8.8.8.8), чтобы вы могли получить подтверждение от третьей стороны, что все в порядке. –Зоредаче
Зоредаче делает хорошее замечание. Вот команды для тестирования/разрешения внешних/внешних DNS-серверов:
Dig (тестирование обратного DNS на DNS-сервере Google 8.8.8.8):
dig -x zz.yy.xx.aa @8.8.8.8
Host и Nslookup (тестирование обратного DNS на DNS-сервере Google 8.8.8.8)
nslookup zz.yy.xx.aa 8.8.8.8
host zz.yy.xx.aa 8.8.8.8
решение2
Я знаю, что это было отмечено как решенное, но я хочу предоставить более полный ответ. Для моих примеров я буду использовать:
- google.comIP-адрес172.217.3.206потому чтоделаетиметь запись PTR.
- serverfault.comIP-адрес151.101.1.69потому чтонеиметь запись PTR.
Первое, что следует отметить, это dig
то, что это многоплатформенная команда, вы можете получить ее для Windows наВеб-сайт ISC BINDперечисленных в BIND, затем выберите платформу Windows (32 или 64 бит). Он имеет много других инструментов, включая собственный двоичный файл nslookup. Я не использую эту версию nslookup.exe, вместо этого я использую версию по умолчанию, которая поставляется с Windows (C:\Windows\System32\nslookup.exe). Однако, если вы хотите использовать ее, dig
вы можете изменить локальную переменную среды PATH или переместить инструмент dig
в папку C:\Windows\System32.
Команда 1) dig PTR 206.3.217.172.in-addr.arpa
- Традиционно это то, как пользователь выполняет обратный DNS-поиск. Он вручную транспонирует IP-адрес: 172.217.3.206
в 206.3.217.172
(обратите внимание на порядок каждого из четырех октетов) и добавляет in-addr.arpa
в конец строки. Вот вывод:
; <<>> DiG 9.9.5 <<>> PTR 206.3.217.172.in-addr.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39790
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;206.3.217.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
206.3.217.172.in-addr.arpa. 84300 IN PTR sea15s12-in-f206.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN PTR sea15s12-in-f14.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN PTR sea15s12-in-f14.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN PTR sea15s12-in-f206.1e100.net.
;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 26 04:20:28 Pacific Daylight Time 2017
;; MSG SIZE rcvd: 153
Команда 2) dig -x 172.217.3.206
- Эта версия команды намного проще, как описано в dig -h
, -x
флаг - это "ярлык для обратного поиска". Вывод идентичен выводу, показанному выше в предыдущей команде.
Команда 3) dig -x 151.101.1.69
- Этот пример показывает, как это выглядит, когда запись PTR не найдена, используя пример serverfault.com. Как вы можете видеть, ответ не содержит PTR, и можно найти только запись SOA 151.in-addr.arpa
:
; <<>> DiG 9.9.5 <<>> -x 151.101.1.69
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21854
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;69.1.101.151.in-addr.arpa. IN PTR
;; AUTHORITY SECTION:
151.in-addr.arpa. 1786 IN SOA pri.authdns.ripe.net. dns.ripe.net. 1490512027 3600 600 864000 3600
;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 26 04:30:38 Pacific Daylight Time 2017
;; MSG SIZE rcvd: 114
Команда 4) nslookup 172.217.3.174
— это команда, предложенная пользователем.l0c0b0xв основном ответе в этой теме. Хотя верно, что есть результат, неясно, является ли это записью PTR или каким-то другим типом записи. Я думаю, что по умолчанию он возвращает PTR, если ему дан IP, но я все равно хочу быть уверен. Он также пропускает другие записи, если есть несколько PTR:
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Name: sea15s11-in-f14.1e100.net
Address: 172.217.3.174
Команда 5) nslookup -debug 172.217.3.174
- Используйте эту команду вместо этого, чтобы увидеть полный список, включая тип записи и полный список результатов. Флаг -debug
сохраняется, чтобы отключить его, вы должны использовать -nodebug
:
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0
QUESTIONS:
8.8.8.8.in-addr.arpa, type = PTR, class = IN
ANSWERS:
-> 8.8.8.8.in-addr.arpa
name = google-public-dns-a.google.com
ttl = 86141 (23 hours 55 mins 41 secs)
------------
Server: google-public-dns-a.google.com
Address: 8.8.8.8
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 4, authority records = 0, additional = 0
QUESTIONS:
174.3.217.172.in-addr.arpa, type = PTR, class = IN
ANSWERS:
-> 174.3.217.172.in-addr.arpa
name = sea15s11-in-f14.1e100.net
ttl = 83026 (23 hours 3 mins 46 secs)
-> 174.3.217.172.in-addr.arpa
name = sea15s11-in-f174.1e100.net
ttl = 83026 (23 hours 3 mins 46 secs)
-> 174.3.217.172.in-addr.arpa
name = sea15s11-in-f14.1e100.net
ttl = 83026 (23 hours 3 mins 46 secs)
-> 174.3.217.172.in-addr.arpa
name = sea15s11-in-f174.1e100.net
ttl = 83026 (23 hours 3 mins 46 secs)
------------
Name: sea15s11-in-f14.1e100.net
Address: 172.217.3.174
Команда 6) nslookup -type=PTR 172.217.3.174
- Эта версия команды определяет записи PTR с -type
флагом. Она отличается от версии без -type
флага двумя способами. Во-первых, она перечисляет все ответы PTR. Во-вторых, она включает информацию «Неавторитетный ответ», которую другая команда не включает. Если внимательно посмотреть выше на вывод отладки, состояние authority records
0, поэтому обе эти команды должны указывать «Неавторитетный ответ».
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
174.3.217.172.in-addr.arpa name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f174.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f174.1e100.net
Команда 7) nslookup -debug -d2 -type=PTR 151.101.1.69
- Вот как можно получить как можно больше подробностей о полном запросе обратного поиска. Напоминание: чтобы отключить его, используйте -nodebug
и -nod2
. Этот пример намеренно не работает на примере serverfault.com:
------------
SendRequest(), len 38
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
8.8.8.8.in-addr.arpa, type = PTR, class = IN
------------
------------
Got answer (82 bytes):
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0
QUESTIONS:
8.8.8.8.in-addr.arpa, type = PTR, class = IN
ANSWERS:
-> 8.8.8.8.in-addr.arpa
type = PTR, class = IN, dlen = 32
name = google-public-dns-a.google.com
ttl = 86280 (23 hours 58 mins)
------------
Server: google-public-dns-a.google.com
Address: 8.8.8.8
------------
SendRequest(), len 43
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
69.1.101.151.in-addr.arpa, type = PTR, class = IN
------------
------------
Got answer (103 bytes):
HEADER:
opcode = QUERY, id = 2, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
69.1.101.151.in-addr.arpa, type = PTR, class = IN
AUTHORITY RECORDS:
-> 151.in-addr.arpa
type = SOA, class = IN, dlen = 48
ttl = 1787 (29 mins 47 secs)
primary name server = pri.authdns.ripe.net
responsible mail addr = dns.ripe.net
serial = 1490512027
refresh = 3600 (1 hour)
retry = 600 (10 mins)
expire = 864000 (10 days)
default TTL = 3600 (1 hour)
------------
*** google-public-dns-a.google.com can't find 69.1.101.151.in-addr.arpa.: Non-ex
istent domain
Команда 8) nslookup 174.3.217.172.in-addr.arpa
- Вы можете задаться вопросом, можно ли использовать традиционный метод обратного поиска DNS с помощью, nslookup
как мы это делали в команде 1 с помощью dig
. Вы можете. Обратите внимание на те же самые ошибки nslookup, которые я перечислил выше (команда 6) между этой командой и командой с -type=PTR
установленным ниже флагом (команда 9):
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Name: 174.3.217.172.in-addr.arpa
Команда 9) nslookup -type=PTR 174.3.217.172.in-addr.arpa
— Как и ожидалось, она выглядит идентично команде 6.
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
174.3.217.172.in-addr.arpa name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f174.1e100.net
174.3.217.172.in-addr.arpa name = sea15s11-in-f174.1e100.net
решение3
Это то же самое, что и любой другой поиск DNS.
Из командной строки Windows:nslookup.exe <ip address>
Из командной строки Linux:host <ip address>
Примечание: Вероятно, лучше всего запускать эти команды с компьютера за пределами вашей сети, чтобы получить доступ к публичному DNS-серверу. В качестве альтернативы, как nslookup, так и host предлагают способы указать DNS-сервер для использования.
решение4
Вступление:
(2) примера, один для IPv4, а другой для IPv6.
Процедура поиска PTR IPv6 заняла у меня много времени, чтобы найти ответ на...
IPv4:
Для примера IPv4 мы будем использовать IP-адрес Google:
host -t PTR 209.85.218.49
Возвращает обратное отображение:
49.218.85.209.in-addr.arpa domain name pointer mail-ej1-f49.google.com.
IPv6:
ШАГ 1: Получите IPv6-адрес хоста (обычно почтового сервера):
host -t AAAA mail.yourServer.net
Это возвращает адрес IPv6, который нам нужен для поиска PTR на следующем шаге:
mail.yourServer.net has IPv6 address 2001:340:1c1e:14::2
ШАГ 2:Теперь укажите IPv6-адрес в host
команде:
host -t PTR 2001:340:1c1e:14::2
Возвращает запись IPv6 PTR:
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.1.0.0.e.1.c.1.0.4.3.0.1.0.0.2.ip6.arpa domain name pointer mail.yourServer.net.
ПРИМЕЧАНИЕ: адрес IPv6 был анонимизирован.
С тех пор как Hurricane Electric дал мнеБЕСПЛАТНЫЙ блок IPv6, я установил обратный IPv6 DNS прямо в ихПанель управления DNSдля почтового сервера.
Обратный генератор IPv6:
Очевидно, что приведенная выше запись IPv6 PTR немного безумна, и, будучи ленивым, я просто использовал обратный генератор IPv6, чтобы создать ее для своего почтового сервера. Есть и другие, но я использовал следующее, чтобы получить правильное значение для обратного IPv6: