Мне интересно, если есть способ запросить DNS-сервер и обойти кэширование (с dig
). Часто я меняю зону на DNS-сервере и хочу проверить, правильно ли она разрешается на моей рабочей станции. Но поскольку сервер кеширует разрешенные запросы, я часто получаю старые. Перезапуск или загрузка сервера на самом деле не является чем-то приятным.
linux
domain-name-system
dig
Даниил
источник
источник
+norecurse
рекомендуется.+recurse
по умолчанию иногда меняет способ, которым DNS-сервер полностью интерпретирует ваш вопрос.+trace
но остерегайтесь кеширования. Эндрю Б написал хорошее объяснение того, как кеширование может обмануть вас, ожидая изменения серверов имен.dig @8.8.8.8 example.com
. там записи появляются намного быстрееВ протоколе DNS нет механизма, который заставлял бы сервер имен отвечать без использования своего кэша. Dig сам по себе не сервер имен, это просто инструмент, который передает ваш запрос на любой сервер имен, который вы настроили, используя стандартные запросы DNS. DNS действительно позволяет серверу не использовать рекурсию, но это не то, что вам нужно. Это полезно только тогда, когда вы хотите напрямую запросить авторитетный сервер имен.
Если вы хотите, чтобы сервер имен не отвечал из своего кэша, вы могли бы сделать это только путем изменения конфигурации на сервере имен , но если вы не управляете сервером имен, это невозможно.
Однако вы можете получить dig, чтобы обойти сконфигурированные серверы имен и выполнить свой собственный рекурсивный запрос, который возвращается к корневым серверам. Для этого используйте
+trace
опцию.На практике, поскольку это будет выполнять запросы только к уполномоченным серверам, а не к вашему локальному решателю кэширования, результат не будет устаревшим, даже если эти серверы будут использовать внутреннее кэширование. Дополнительным преимуществом использования
+trace
является то, что вы можете видеть все отдельные запросы, сделанные по пути.источник
+norecurse
просто указывает серверу имен возвращать всю имеющуюся информацию (включая кэшированную информацию, если таковая имеется), так что это не правильно.+trace
будет работать, потому что он будет следовать цепочке рекурсии вплоть до авторитетного сервера.+norecurse
рекомендацию, поскольку это запутало проблему.Здесь следует отметить кое-что важное, о чем, как я заметил, многие люди даже не упоминают, говоря о
+trace
том, что использование+trace
означает, что клиент dig будет выполнять трассировку, а не DNS-сервер, указанный в вашей конфигурации (/etc/resolv.conf). Итак, другими словами, ваш dig-клиент будет работать как рекурсивный DNS-сервер, если вы спросите его. Но - главное, у вас нет кэша.Более подробно - так что если вы уже запросили
mx
запись с использованиемdig -t mx example.com
и ваш /etc/resolv.conf равен 8.8.8.8, то выполнение каких-либо действий внутри TTL зоны вернет кэшированный результат. В некотором смысле, если вы ищете что-то о своей собственной зоне и о том, как ее видит Google, вы как бы отравили свои результаты DNS с помощью Google для TTL вашей зоны. Неплохо, если у вас короткий TTL, немного мусора, если у вас 1 час.Таким образом, хотя
+trace
вы сможете увидеть, что будет видно, если вы впервые запросите Google, а у него нет кэшированной записи, это может дать вам ложное представление о том, что Google будет рассказывать всем то же самое, что и ваш+trace
результат, что это не произойдет, если вы спросили ранее, и у вас будет длинный TTL, так как он будет обслуживать его из кэша до истечения срока действия TTL - ТОГДА он будет служить так же, как и ваш+trace
показанный.Не могу иметь слишком много деталей IMO.
источник
dig mydomain.com +trace
просто возвращает мнеresolvd
результаты заглушки127.0.0.53
. См. Github.com/systemd/systemd/issues/5897+trace
dig начинается трассировка с использованием указанного сервера имен (например, 8.8.8.8, если это то, что вы настроили) для первого поиска (корневой зоны), но после этого он использует возвращенные серверы имен для дальнейших запросов. Поэтому, если настроенный вами сервер имен не работает или не отвечает должным образом на запрос корневых серверов имен, у вас могут возникнуть проблемы (как в приведенном выше комментарии).Этот bash будет копать записи DNS сайта example.com со своего первого сервера имен:
Вот то же самое, что и псевдоним для .zshrc (и, вероятно, .bashrc):
Вот вывод для /.
Это решение достаточно сложно, чтобы его было непрактично запомнить, но достаточно просто, чтобы проблема не была решена.
dig
не моя специальность - улучшения приветствуются :-)источник