Введение
В этом лабораторном занятии вы научитесь устранять неполадки с DNS-запросами с помощью утилиты Tshark из пакета Wireshark, выполняя практические упражнения. Вы будете захватывать DNS-трафик с использованием фильтра "udp port 53", анализировать запросы с помощью фильтров отображения, таких как "dns.qry.name", и изучать статистику времени с помощью опции "dns,tree".
В рамках лабораторного занятия вы научитесь практическим методам выделения DNS-пакетов, визуализации времени выполнения запросов и извлечения подробной информации о пакетах с использованием флага "-V". Завершив эти упражнения, вы приобретете важные навыки диагностики проблем с DNS с использованием профессиональных методов анализа пакетов.
Захват DNS с помощью -f "udp port 53"
На этом этапе вы научитесь захватывать DNS-трафик с использованием фильтра захвата в Wireshark. DNS (Domain Name System, Система доменных имен) похожа на телефонную книгу интернета, преобразующую человекочитаемые доменные имена (например, example.com) в машинночитаемые IP-адреса. Большинство DNS-запросов используют UDP-порт 53, так как они небольшие и быстрые, в то время как более крупные ответы могут использовать TCP.
Сначала откройте терминал в виртуальной машине LabEx, если вы еще этого не сделали. Все команды будут выполняться в каталоге по умолчанию
~/project. Именно здесь мы сохраним наши файлы с захваченным трафиком.Запустите Wireshark из терминала с помощью следующей команды:
wireshark &
Символ & запускает Wireshark в фоновом режиме, позволяя вам продолжать использовать терминал, пока Wireshark остается открытым. Это полезно, когда вам нужно выполнять другие команды во время анализа сети.
В главном интерфейсе Wireshark:
- Выберите активный сетевой интерфейс (обычно
eth1). Это сообщает Wireshark, какое сетевое подключение нужно отслеживать. - В поле фильтра захвата введите:
udp port 53. Этот фильтр гарантирует, что Wireshark будет захватывать только DNS-трафик, уменьшая количество лишней информации от другой сетевой активности. - Нажмите значок акулы для начала захвата пакетов. Вы увидите, как интерфейс начнет отображать сетевую активность.
- Выберите активный сетевой интерфейс (обычно
Чтобы сгенерировать некоторый DNS-трафик для тестирования, откройте другой терминал и выполните команду:
nslookup example.com
Эта команда просит вашу систему найти IP-адрес для "example.com", создавая DNS-трафик, который мы хотим захватить. Можно представить это как тестовый звонок, чтобы проверить, работает ли наш мониторинг.
В Wireshark вы должны увидеть захваченные DNS-пакеты. Они будут отображаться в виде строк в главном окне, обычно показывая запрос и ответ. Остановите захват, нажав красную квадратную кнопку, когда увидите достаточно трафика.
Сохраните файл с захваченным трафиком для дальнейшего анализа:
- Перейдите в меню Файл → Сохранить как
- Сохраните его как
dns_capture.pcapngв каталоге~/project. Этот формат файла сохраняет все исходные данные пакетов для подробного исследования.
Основные моменты, которые необходимо понять:
-f "udp port 53"- это фильтр захвата, который записывает только DNS-трафик, аналогично тому, как специальный микрофон может слышать только DNS-разговоры.- DNS в основном использует UDP-порт 53, так как он эффективен для небольших запросов, в то время как TCP (Transmission Control Protocol, Протокол передачи управления) используется для более крупных ответов, которые требуют надежной доставки.
- Файл с захваченным трафиком содержит исходные сетевые пакеты в их первоначальной форме, которые мы проанализируем на последующих этапах, чтобы понять, что именно происходит при разрешении DNS.
Фильтрация запросов с помощью -Y "dns.qry.name"
На этом этапе вы научитесь фильтровать DNS-запросы в Wireshark с использованием фильтров отображения. DNS (Domain Name System, Система доменных имен) похожа на телефонную книгу интернета, преобразующую человекочитаемые доменные имена в машинночитаемые IP-адреса. При устранении неполадок в сети анализ DNS-трафика может дать важные подсказки.
Мы сосредоточимся на поле dns.qry.name, которое конкретно показывает доменные имена, запрашиваемые в DNS-запросах. Это особенно полезно, когда вам нужно проанализировать трафик, связанный с определенными веб-сайтами или сервисами, из захвата, который мы создали на предыдущем этапе.
- Сначала откроем файл с захваченным трафиком, который мы сохранили ранее, в Wireshark. Символ
&в конце запускает команду в фоновом режиме, чтобы вы могли продолжать использовать терминал:
wireshark ~/project/dns_capture.pcapng &
- В строке фильтра отображения в Wireshark (пустое поле сразу под панелью инструментов) введите следующий точный фильтр, чтобы увидеть только DNS-запросы для "example.com":
dns.qry.name == "example.com"
Этот фильтр строгое равенства (==) покажет только пакеты, в которых запрашиваемый домен точно совпадает с "example.com".
- Чтобы увидеть все DNS-запросы, независимо от запрашиваемого домена, просто используйте само имя поля:
dns.qry.name
Это отобразит все пакеты, содержащие имена DNS-запросов, что поможет вам понять, какие домены запрашиваются в вашей сети.
- Чтобы получить более полное представление, показывающее как DNS-запросы (запросы), так и ответы, используйте этот фильтр, который проверяет флаг ответа DNS:
dns.flags.response == 0 || dns.flags.response == 1
Здесь dns.flags.response == 0 показывает запросы (запросы), а dns.flags.response == 1 показывает ответы.
- Иногда вам может понадобиться найти все запросы, связанные с определенной организацией или сервисом. Попробуйте отфильтровать частичные совпадения доменов, используя оператор "contains":
dns.qry.name contains "example"
Это будет соответствовать любому домену, содержащему "example", например "example.com", "test.example.org" или "example.net".
Основные моменты, которые необходимо понять:
-Y- это опция фильтра отображения в Wireshark (эквивалентна вводу в строку фильтра)dns.qry.name- это конкретное поле в DNS-пакетах, которое содержит запрашиваемое доменное имя- Фильтры отображения помогают вам сосредоточиться на конкретных шаблонах трафика, скрывая не связанные пакеты
- Фильтры могут использовать различные операторы сравнения:
==для точных совпадений!=для исключенияcontainsдля частичных совпадений
- Протокол DNS включает флаги для различения между запросами (
response == 0) и ответами (response == 1)
Анализ временных параметров с помощью -z dns,tree
DNS (Domain Name System, Система доменных имен) похожа на телефонную книгу интернета, преобразующая человекочитаемые доменные имена в машинночитаемые IP-адреса. При устранении неполадок в сети анализ времени ответа DNS может выявить узкие места в производительности. На этом этапе мы воспользуемся встроенной функцией статистики в Wireshark с опцией -z dns,tree для измерения того, насколько быстро DNS-серверы отвечают на запросы.
- Перед началом убедитесь, что Wireshark не запущен. Мы будем анализировать заранее захваченный файл DNS-трафика из терминала. Символ
&в конце позволяет продолжать использовать терминал, пока Wireshark работает:
wireshark -z dns,tree ~/project/dns_capture.pcapng &
Откроется новое окно с надписью "DNS Statistics" (Статистика DNS), которое отобразит три основных части информации в древовидной структуре:
- Все DNS-запросы и соответствующие им ответы
- Время, затраченное на получение ответа для каждого запроса
- Частоту запросов для каждого домена
Рассмотрим колонки статистики более внимательно:
- "Count" (Количество) показывает, сколько раз ваша система запрашивала каждый домен
- "Average" (Среднее) отображает типичное время ответа для каждого домена
- "Min" (Минимальное) и "Max" (Максимальное) показывают наилучшее и наихудшее время ответа
Чтобы увидеть более интересные данные в нашем анализе, сгенерируем новые DNS-запросы. Откройте новое окно терминала и выполните эти распространенные команды запроса:
nslookup google.com
nslookup labex.io
- После выполнения этих команд вернитесь в окно "DNS Statistics" и нажмите "Reload" (Перезагрузить), чтобы обновить статистику с учетом новых запросов, которые вы только что сгенерировали.
Основные концепции, которые необходимо запомнить:
- Команда
-z dns,treeактивирует специализированный режим анализа DNS в Wireshark - Измерения времени ответа помогают определить медленные DNS-серверы или задержки в сети
- Древовидное представление группирует связанные запросы для более удобного анализа
- Всегда перезагружайте файл с захваченным трафиком, чтобы увидеть последние статистические данные после новой DNS-активности
Показать результаты с помощью -V
На этом этапе мы узнаем, как подробно изучать DNS-пакеты с помощью подробного режима Wireshark с опцией -V. При устранении неполадок в DNS просмотр всех деталей протокола является важным для понимания того, что именно происходит в сетевом трафике.
- Перед началом убедитесь, что все окна Wireshark закрыты, чтобы избежать путаницы. Затем выполните эту команду, чтобы открыть файл с захваченным трафиком с полными деталями протокола:
wireshark -V -r ~/project/dns_capture.pcapng &
Флаг -V сообщает Wireshark отображать подробный вывод, показывая всю доступную информацию о протоколе, а не только базовую сводку пакета.
В интерфейсе Wireshark обратите внимание на среднюю панель с названием "Packet Details" (Подробности пакета). Вот как можно изучить информацию о DNS:
- Нажмите стрелку рядом с "Domain Name System" (Система доменных имен), чтобы развернуть его
- Вы увидите полную структуру DNS-сообщения, включая:
- Является ли это запросом или ответом
- Уникальные идентификаторы транзакций, которые связывают запросы с ответами
- Флаги статуса, указывающие на успех или ошибки
- Все обмениваемые записи ресурсов
При рассмотрении DNS-запроса (обычно отправляемого от клиента к серверу) обратите особое внимание на:
- Тип запроса: Это показывает, какого типа запись запрашивается (A для IPv4, AAAA для IPv6, MX для почтовых серверов)
- Класс запроса: Почти всегда "IN" для интернет-класса
- Идентификатор транзакции: Случайное число, которое помогает связать этот запрос с его ответом
Для DNS-ответных пакетов (от сервера к клиенту) проверьте эти важные поля:
- Код ответа: "0" означает, что ошибок не произошло
- Количество ответов: Сколько записей было возвращено
- Значения TTL: Как долго эти DNS-ответы могут быть кэшированы
- Фактические данные: Например, IP-адреса при запросе записей A
Чтобы сохранить этот подробный анализ для последующего изучения или обмена с коллегами, выполните эту команду:
tshark -V -r ~/project/dns_capture.pcapng > ~/project/dns_analysis.txt
Это создаст текстовый файл, содержащий весь подробный вывод из вашего захвата.
Основные концепции, которые необходимо запомнить:
- Опция
-Vпоказывает полный разбор протокола каждого пакета - Вы можете увидеть каждый уровень стека протокола DNS
- Такая детализация необходима при диагностике сложных проблем с DNS
- Комбинируйте с фильтрами (например,
dns), чтобы сосредоточиться на конкретных пакетах, сохраняя при этом полные детали
Резюме
В этом практическом занятии вы узнали, как устранять неполадки с DNS-запросами с помощью утилиты Tshark в Wireshark. В ходе упражнения показано, как захватывать DNS-трафик с использованием фильтра по UDP-порту 53 и анализировать запросы с помощью целевых фильтров отображения, таких как dns.qry.name.
Вы практиковались в генерации тестового трафика с помощью nslookup и сохранении захваченного трафика для анализа, что дало вам представление о поведении протокола DNS и мощных возможностях фильтрации в Wireshark для выделения запросов конкретных доменов. Эти навыки являются важными для устранения неполадок в сети и проведения исследований, связанных с DNS.


