[freebsd] dns, непонятка со вторичным сервером.

Eugene Grosbein eugen at grosbein.net
Tue Jul 2 15:46:17 EEST 2019


02.07.2019 19:26, Taras Heichenko wrote:

>> Конкретно на этот вопрос достаточно легко найти ответ.
>> Достаточно сделать вот такой запрос у сервера whoami.ultradns.net:
>>
>> # dig @204.74.108.1 whoami.ultradns.net +noall +answer
>>
>> ; <<>> DiG 9.14.3 <<>> @204.74.108.1 whoami.ultradns.net +noall +answer
>> ; (1 server found)
>> ;; global options: +cmd
>> whoami.ultradns.net.    0       IN      A       109.94.1.18
>>
>> В ответе будет IP-адрес, с которого пришел запрос на whoami.ultradns.net.
>> Если провайдер перехватывает запросы DNS, в ответе будет IP-адрес какого-то
>> из провайдерских серверов, как в данном примере, когда вернулся IP-адрес
>> провайдерского DNS-сервера ns4.podolsknet.ru [109.94.1.18]
>> вместо реального адреса со внешнего интерфейса спрашивающей машины,
>> который даже в другой IP-сети /24.
> 
> Спрашивающая машина ведь резолвер, а не пользовательская машина,
> на которой формируется запрос?

dig @nserver не использует никаких ресолверов, он содержит ресолвер внутри себя.

>> Если у спрашивающей машины на внешнем интерфейсе не публичный адрес
>> и трафик проходит через провайдерский NAT, то текущее соответствие
>> с внешним IP можно тут же поглядеть на сайтах типа https://2ip.ru/
>> и сравнить с тем, что выдал dig.
> 
> Почти так, но могут быть нюансы. Если резолвер, у которого вы спрашиваете,
> форвардящий, то и без перехвата DNS запросов, вы можете увидеть там другой
> адрес. Кроме того и у резолвера, у которого вы спрашиваете, могут быть разные
> интерфейсы с разными адресами. Т.е. вы спрашиваете резолвер на одном адресе,
> а они отсылает свой запрос с другого интерфейса и получается в ответе совсем
> другой адрес. Это то, что сразу в голову пришло, почему я бы не очень полагался
> на этот сервис. Т.е. если он отвечает то, что ожидали, то все хорошо, но если он
> отвечает не то, что ожидали, то это совсем не обязательно "все плохо".

Нет. Всё это было бы верно, если не задавать dig-у конкретный адрес DNS-сервера,
у которого он должен спросить напрямую в таком случае.

А ещё dig при использовании ключа +trace тоже не стал бы использовать "сторонний" рекурсивный ресолвер,
а стал бы эмулировать его работу, начиная с прямого запроса к корневым DNS, затем к серверам второго уровня
и так далее. dig это относительно низкоуровневая утилита для проверки корректности работы чужих
ресолверов и поэтому он умеет обходиться без их участия.




More information about the freebsd mailing list