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

Как доказать, что DNS-трафик теряется

В моей офисной локальной сети запросы к DNS-серверам за пределами нашей локальной сети действительно часто терпят неудачу (тайм-аут).

Я подозреваю, что у нашего провайдера какие-то проблемы, но они не ответили на мои жалобы.

Есть ли инструмент, который я мог бы использовать для тестирования / измерения потерь исходящего DNS-трафика. Либо с рабочей станции windows / linux, либо со шлюза OpenBSD 4?

Я не знаю инструмента, который бы делал это напрямую, но вы всегда можете просто использовать tcpdump на шлюзе bsd, чтобы прослушивать запросы и ответы DNS, а затем сравнивать запросы с ответами. Дамп tcp будет выглядеть примерно так:

tcpdump -i interface 'udp port 53' -o dumpfile

Возможно, они тоже будут tcp, так что вы можете захватить оба, если хотите. Затем вы можете проанализировать файл дампа с помощью wirehark, создав два фильтра: один для запросов, а другой - для ответов. Затем просто посчитайте количество запросов и ответов, если ответов <запросов, может быть проблема.

Вы можете попробовать переключиться на другого поставщика DNS, например OpenDNS (который также предлагает другие функции для вашей офисной среды). Если проблема с DNS исчезла, это хороший индикатор проблемы. Возможно, вы даже предпочтете альтернативного поставщика DNS в процессе ...

В противном случае вы можете использовать такие вещи, как ping, чтобы проверить подключение и синхронизацию к DNS-серверу, и traceroute.

Это происходит во всех системах или в выбранном количестве систем? DNS - единственный, у которого есть эта проблема, или другие протоколы?

Если у вас настроена система мониторинга, создайте проверку службы, чтобы выполнить DNS-запрос и сообщить о задержке. Если у вас также есть графическая система, нанесите эти задержки на график.

Если у вас есть файл захвата DNS (предложение Кайла Брандта - хорошее), вы можете использовать Tshark для поиска дубликатов. Например, следующее будет читать файл захвата "dns-external.pcap" и генерировать CSV-файл, содержащий IP-адрес источника, идентификатор DNS-запроса и имена DNS-запросов:

tshark -n -r dns-external.pcap -T fields -E separator=, -E quote=d -e ip.src -e dns.id -e dns.qry.name > /tmp/dns.csv

Затем вы можете использовать Excel, OpenOffice или sort < /tmp/dns.csv | uniq -d искать повторяющиеся запросы.

Вы также можете обнаружить аномалии, используя dnstop но я не уверен, есть ли у него какие-либо функции, специфичные для повторяющихся / потерянных запросов.

Единственный способ узнать, теряется ли DNS-трафик, - это отслеживать трафик как на вашем шлюзе, так и на DNS-сервере в Интернете.

Теперь вы просто запускаете программу, которая выполняет 10 000 запросов и сравнивает полученные вами ответы с ответами, сгенерированными этим внешним сервером имен. Вы захотите выполнить 10 000 запросов для определенного домена (желательно 10 000 различных запросов, чтобы ничего не было кэшировано), а также 10 000 рекурсивных запросов для 10 000 несуществующих вещей (злые интернет-провайдеры любят фильтровать и перехватывать ответы NXDOMAIN.

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