как узнать через какой dns идут запросы
Как узнать DNS сервер который сейчас используется
Система доменных имен, которую мы называем DNS, является важным процессом, который сопоставляет доменные имена с их правильным IP-адресом. На самом деле это очень важная система, и с помощью DNS мы можем видеть разные веб-страницы в нашем веб-браузере.
Что такое DNS?
Давайте упростим задачу и попробуем понять, что такое DNS. Проще говоря, DNS – это база данных, состоящая из разных доменных имен и IP-адресов. Когда пользователь вводит доменные имена, такие как Google.com или Yahoo.com, DNS-серверы проверяют IP-адрес, с которым были связаны домены.
После сопоставления с IP-адресом он комментирует веб-сервер посещаемого сайта. Однако DNS-серверы не всегда были стабильными, особенно те, которые были назначены интернет-провайдерами. Это наиболее вероятная причина ошибок DNS, которые мы видим при просмотре разных веб-сайтов. В недавней статье мы писали про ТОП публичных 10 DNS серверов – если вы знаете что это такое можете перейти и почитать о них.
Что там по настройке DNS?
Что ж, если вы используете DNS-серверы по умолчанию вашего интернет-провайдера, то скорее всего, вы будете регулярно сталкиваться с ошибками, связанными с DNS. Некоторые из распространенных ошибок DNS включают в себя: сбой интернета, сервер DNS не отвечает, DNS_Probe_Finished_Nxdomain и т. Д.
Почти все проблемы, связанные с DNS, можно решить, выбрав собственный DNS. Существует множество общедоступных DNS-серверов, которые вы можете использовать, например, Google DNS, OpenDNS и т. д. Мы также поделились подробным руководством по переходу на Google DNS, которое вы также можете рассмотреть.
Однако перед переключением DNS-сервера всегда лучше записать текущий DNS-сервер. Итак, ниже мы описали несколько методов, которые помогут вам проверить DNS, который вы используете. Есть несколько способов проверить, какой DNS вы используете. Внимательно следуйте инструкциям, так как мы будем использовать CMD для поиска DNS.
Как проверить DNS в Windows
Теперь в командной строке вам нужно ввести следующую команду
ipconfig /all | findstr /R «DNS Servers»
Эта команда отобразит вам текущий DNS-сервер, который вы используете. Вы также можете использовать другой метод, чтобы узнать DNS-сервер в Windows. Для этого вам необходимо ввести следующую команду, указанную ниже.
nslookup google.com
Вы можете выбрать любой домен сайта вместо Google.com. Команда выведет список текущего DNS-сервера. Теперь вы знаете аж две команды CMD, и можете определить DNS на компьютере с Windows.
Как проверить DNS-сервер – Mac и Linux
Что ж, на компьютерах на базе Mac и Linux вам нужно ввести ту же команду CMD, чтобы узнать, какой DNS-сервер вы используете. Просто введите команду, указанную ниже, чтобы выполнить nslookup на любом веб-сайте.
nslookup google.com
Опять же, вы можете заменить Google.com любым веб-сайтом по вашему выбору. Итак, вот как вы можете проверить DNS-сервер на компьютере Mac и Linux.
Как проверить DNS-сервер на Android
Что касается проверки DNS-сервера на Android, у нас есть множество приложений для сканирования сети в Google Play Store. Вы можете использовать любое приложение сетевого сканера на Android, чтобы узнать, какой DNS-сервер использует ваш Android. Вы можете использовать такие приложения, как Network Info II, которые бесплатны и не показывают рекламы.
В Network Info II вам нужно посмотреть вкладку WiFi, а затем проверить записи DNS1 и DNS2. Это DNS-адреса, которые использует ваш телефон.
Как найти DNS-сервер на iOS
Что ж, как и Android, iOS также имеет множество приложений для сканирования сети для поиска DNS-сервера. Одно из популярных приложений для сканирования сети для iOS известно как Network Analyzer. Network Analyzer для iOS предоставляет много полезной информации о вашей сети Wi-Fi.
Итак, на iOS вы можете использовать Network Analyzer, а затем посмотреть IP-адрес DNS-сервера.
Как узнать DNS-сервер роутера
Ну, для тех, кто не знает, роутер использует DNS-сервер, назначенный интернет-провайдером. Однако это можно изменить, следуя рекомендациям, приведенным в этой статье. В случае, если вы хотите узнать, какой DNS-сервер использует ваш маршрутизатор, перейдите по IP-адресу роутера (192.168.1.1 или 192.168.0.1) и войдите в систему, указав имя пользователя и пароль.
Теперь вы увидите домашнюю страницу маршрутизатора. В зависимости от режима маршрутизатора вам необходимо проверить вкладку «Беспроводная сеть» или «Сеть». Там вы найдете параметры записи DNS 1 и DNS 2. Если вы хотите изменить DNS роутера, там вы можете указать новый адрес DNS.
Как узнать, какой DNS-сервер я использую?
Вы настроили новый DNS-сервер на своем компьютере и не знаете, работает он или нет. Что ж, есть способы это проверить. Вы можете сделать это изначально через командную строку или с помощью сторонних приложений.
Приоритет DNS
Прежде чем мы начнем, важно понять приоритет DNS.
Все мы знаем, что по умолчанию мы используем DNS-серверы, предоставленные нашим интернет-провайдером. Но что происходит, когда вы вводите DNS на своем локальном компьютере или маршрутизаторе? Какой DNS сейчас имеет приоритет?
Теперь вот что: если вы измените DNS-сервер на маршрутизаторе (скажем, Google DNS), то каждое устройство, подключенное к маршрутизатору, автоматически начнет использовать Google DNS в качестве DNS-сервера. Однако, помимо этого, если вы измените DNS-сервер на своем локальном компьютере, скажем, Cloudflare DNS, эти настройки переопределят настройки DNS маршрутизатора. Теперь только ваш компьютер будет использовать Cloudflare DNS в качестве DNS-сервера, в то время как остальные устройства по-прежнему будут использовать Google DNS.
Итак, если мы ранжируем приоритет DNS-серверов, он будет примерно таким:
Ниже приведено полное руководство по настройке DNS-сервера, или вы также можете быстро просмотреть видео
Самый простой способ — проверить онлайн
Самый быстрый способ проверить, какой DNS-сервер вы используете, — это использовать такие онлайн-сайты, как WhatsMyDNSserver. Просто зайдите на сайт и нажмите кнопку с надписью — «Какой у меня DNS-сервер?«. И он покажет ваш текущий DNS-сервер.
Но этот метод не безошибочный. Даже после смены DNS он все равно забирает старый DNS из кеша. Например, я изменил DNS своего компьютера с Google DNS на Cloudflare, но на сайте все еще написано, что я использовал Google DNS — даже после перезапуска Mac. Наконец, мне удалось решить эту проблему, повторно открыв сайт в окне в режиме инкогнито. Если у вас возникла аналогичная проблема, вы можете очистить кеш DNS или очистить DNS.
Другие поставщики DNS, такие как Cloudflare, также предоставляют раздел на своем веб-сайте, который может определить, используете ли вы Cloudflare DNS, вы можете получить доступ к этой веб-странице с этого ссылка на сайт.
Точно так же, если вы переключились на OpenDNS, вы можете проверить свой DNS-сервер из этого ссылка на сайт.
2. Какой DNS-сервер я использую — Windows 10/8/7
Есть несколько способов проверить DNS-сервер, который вы используете в Windows. Вот пара из них.
Способ 1
Чтобы проверить DNS-сервер, который вы используете в Windows, просто откройте командную строку. Для этого в Windows 10 нажмите Начало, тогда Все программы, тогда Аксессуары, и, наконец, о Командная строка. и выполните следующую команду.
ipconfig /all | findstr «DNS Servers»
Если вам интересно, все, что делает команда, это извлекает все значения конфигурации сети, а затем отфильтровывает из них строку «DNS-серверы».
Способ 2
Второй способ намного проще и имеет удобную команду. То есть просто выполните nslookup любого веб-адреса, и Windows покажет, какой DNS-сервер вы используете, как часть поиска. Чтобы выполнить nslookup, просто используйте команду ниже. Вы можете заменить «google.com» на любой желаемый веб-адрес. Фактически, вы даже можете заменить его своим собственным IP-адресом.
3. Какой DNS-сервер я использую — Linux
Чтобы проверить, какой DNS-сервер вы используете в Linux, просто откройте терминал и выполните nslookup для любого веб-сайта. Просто введите следующую команду. Вы также можете заменить google.com своим IP-адресом.
Если вам интересно, «nslookup» — это утилита командной строки, которая преобразует DNS-имя в IP-адрес, тем самым раскрывая DNS-сервер, используемый в процессе.
Читайте: Лучшие приложения для шифрования DNS-трафика
4. Какой DNS-сервер я использую — Mac
Точно так же в macOS откройте терминал и введите следующую команду.
Чтобы запустить терминал в macOS, нажмите CMD + ПРОБЕЛ, чтобы запустить Spotlight, а затем введите «терминал». и нажмите Enter. Кроме того, вы можете открыть папку «Приложения», затем открыть «Утилиты» и дважды щелкнуть «Терминал». Когда откроются окна терминала, скопируйте и вставьте следующую команду и нажмите Enter.
5. Какой DNS-сервер я использую — Android
На рынке есть несколько приложений для сканирования сетей Android, которые позволяют узнать, какой DNS вы используете. Я бы предложил Сетевая информация II. Приложение бесплатное, легкое, без рекламы.
Просто загрузите его из игрового магазина, откройте его и перейдите на вкладку WiFi. Там вы увидите записи DNS 1 и DNS 2. Это DNS-серверы, которые вы используете.
Читайте: измените настройки Android DNS с помощью этих 5 приложений DNS Changer
Кроме того, вы также можете попробовать Сетевые утилиты PingTools. В нем есть одни из лучших и полезных инструментов. Вы также получаете дополнительные утилиты, которые могут выполнять такие задачи, как сканирование UPnP, пробуждение LAN, сканирование портов и т. Д.
Чтобы узнать DNS-адрес, установите приложение из Play Store и откройте его. Теперь нажмите на значок «Маршрутизатор» или «Интернет», и он отобразит все сведения о сети. Здесь вы можете узнать, какой DNS вы используете, просмотрев записи DNS 1 и DNS 2.
6. Какой DNS-сервер я использую — iOS
Сетевой анализатор — бесплатное приложение для iOS, которое показывает полезную информацию о вашей сети. Существует премиум-версия этого приложения, которая стоит 3 доллара, но для нашей простой потребности достаточно облегченной версии (с поддержкой рекламы). Просто установите и откройте приложение, вы увидите, какой DNS вы используете, рядом с «IP-адресом DNS-сервера».
7. Какой DNS-сервер я использую — маршрутизатор
По умолчанию ваш маршрутизатор использует DNS-сервер, предоставленный вашим интернет-провайдером, но если вы подозреваете, что кто-то изменил его на вашем маршрутизаторе, вот как его найти. Просто откройте веб-браузер, введите IP-адрес маршрутизатора (обычно 192.168.1.1 или 192.168.0.1) и войдите в систему, указав имя пользователя и пароль. У большинства маршрутизаторов есть возврат учетных данных. Как только вы увидите веб-интерфейс маршрутизатора, в зависимости от модели маршрутизатора найдите записи DNS 1 и DNS 2. Обычно это параметр «Настройка сети» или «Состояние».
Если вы найдете здесь какой-либо сторонний DNS-IP, попробуйте поискать в Google или выполнить nslookup с IP-адресом, чтобы узнать, какой сервер с ним связан. Если вы все еще не уверены в службе DNS, рекомендуется изменить DNS на локальном компьютере. Это отменит настройку вашего маршрутизатора, и теперь вы можете спокойно наслаждаться просмотром веб-страниц.
Заключительные слова
Итак, это были некоторые из способов узнать, какой DNS-сервер вы используете. В зависимости от вашей операционной системы выберите наиболее эффективный способ. В случае каких-либо других вопросов или трудностей, дайте мне знать в комментариях ниже.
Способы определения предпочитаемого DNS-сервера и выбор альтернативного
DNS — аббревиатура, означающая Domain Name System. Это система, хранящая информацию о доменах. Ее наличие облегчает работу с интернетом. Потребителю проще посмотреть и запомнить название сайта, нежели IP-адрес. Предпочитаемый ДНС указывается вручную или автоматически в настройках интернет-подключения.
Как узнать, какой ДНС-сервер предоставляется провайдером
Поставщик услуг всегда имеет несколько серверов: первичный и альтернативный DNS. Они дублируют друг друга для распределения чрезмерной нагрузки.
Для компании собственный ДНС – предпочтительный, поэтому клиента автоматически подключают к нему.
Если читателю понадобилось узнать адрес DNS-сервера, к использованию предлагается несколько способов:
С помощью командной строки компьютера
Для разных версии ОС строка открывается несколькими способами:
В появившемся окне ввести cmd. После чего откроется окошко командной строки, где надо написать ipconfig/all. Приложение отобразит полную информацию, какой предпочитаемый сервер предоставлен рабочей станции.
Другие способы
Альтернативные серверы ДНС
К сожалению, локальные провайдеры не всегда гарантируют 100%-ную работоспособность ДНС-сервера. Чтобы не ждать, пока сервис восстановят, клиент может подстраховаться.
Существует множество альтернатив, подключившись к которым улучшаются стабильность, быстродействие и удобство подсоединения.
Потребитель, возможно, захочет сменить предпочитаемый ДНС по причине территориального ограничения доступа к информации, нестабильной работы сервера или для повышения уровня защиты своего ПК. Предлагается использовать следующие адреса DNS на замену предпочитаемому провайдером:
Выберите наиболее подходящий ДНС (предпочитаемый), настройка параметров подключения пользователя в тупик точно не поставит.
Заключение
Использовать альтернативу предпочитаемому DNS-серверу — самый простой способ увеличить скорость своего интернет-подключения, улучшить безопасность, стабильность, а также убрать недостатки, имеющиеся у аппаратуры провайдера. Именно от пользователя зависит удобство и комфорт применения интернета. Узнать DNS провайдера (предпочитаемый) также не составит труда, используя данную статью.
Какой у меня DNS-сервер? Узнайте 4 метода проверки IP-адреса
Все компьютеры, подключенные к Интернету, имеют IP-адрес, чтобы найти их через Интернет другими машинами.
Этот IP-адрес состоит из нескольких номеров для удобства в вычислительных целей.
192.0.2.1 – пример для IP-адреса.
Но эти IP-адреса не являются юзер-френдли для человека, а это означает, что людям нелегко или невозможно зппомнить IP-адреса всех важных для них машин.
Поэтому в качестве решения для этой цели была введена новая концепция под названием Domain Names.
«www.example.com» – пример имени домена.
Они просты и легко запоминаются, поскольку они являются словами с алфавитными символами.
Каждое имя домена сопоставляется с IP-адресом.
Служба DNS выполняет преобразование между этими доменными именами и IP-адресами.
DNS-сервер – это компьютерный сервер, который содержит базу данных общедоступных IP-адресов и связанных с ними доменных имен.
Когда вы вводите имя домена в свой веб-браузер, если ваш маршрутизатор не располагает достаточной информацией для преобразования имени домена в IP-адрес, он использует помощь DNS-сервера для выполнения этого преобразования, подключившись к одному из доступных DNS-серверов.
Чтобы найти IP-адрес DNS-сервера, который используется вашим маршрутизатором, можно использовать один из приведенных ниже методов.
Способ 1. Использование графического интерфейса маршрутизатора
Самый простой способ найти IP-адрес DNS-сервера вашего маршрутизатора – проверить его с помощью графического интерфейса маршрутизатора.
1. Сначала вам нужно узнать IP-адрес вашего маршрутизатора. (В большинстве случаев IP-адрес по умолчанию – 192.168.1.1)
Для машин Windows:
1.1. Если вы используете машину Windows, откройте командную строку, набрав «cmd» в строке поиска Windows.
1.2. Введите «ipconfig», чтобы просмотреть информацию о сети.
Там вы сможете увидеть данные адреса шлюза по умолчанию в разделе «Сведения о беспроводной локальной сети».
В этом случае это 192.168.1.1
Для Linux-машин:
1.3. Если вы используете машину Linux, откройте терминал.
например, на машине Ubuntu.
Терминал можно открыть, выполнив поиск на панели поиска.
Здесь есть 2 IP-адреса, а один с самой низкой метрикой выбран в качестве IP-адреса по умолчанию, который в этом случае равен 10.8.0.1
2. Затем введите этот IP-адрес в адресную строку вашего веб-браузера, и вам будет предложено ввести имя пользователя и пароль, чтобы получить доступ к веб-интерфейсу вашего маршрутизатора
3. Затем на вкладке «Статус» вы сможете просматривать информацию DNS вашего маршрутизатора
Способ 2. Использование команд Windows
2.1. Один из способов – использовать команду nslookup.
Эта команда предоставляет вам информацию о поиске DNS.
Чтобы просмотреть их, вы можете ввести в командной строке:
Первые 2 строки вывода предоставляют вам данные DNS-сервера.
2.2. Второй способ – использовать команду «ipconfig / all» в командной строке:
Как вы можете видеть, 192.168.8.1 является DNS-адресом в соответствии с указанным выше выводом.
Способ 3: Использование команд Linux
В дистрибутивах Linux данные DNS могут быть извлечены из команд «host» или «dig»
host: host command – это утилита, которая выполняет поиск DNS.
Поэтому данные DNS-сервера можно просмотреть, как показано ниже:
Согласно вышеприведенному выводу, 10.0.10.11 является IP-адресом DNS-сервера.
dig: dig – инструмент, который используется для запроса DNS-серверов имен для получения информации о адресах хостов, почтовых обменах, серверах имен и соответствующей информации.
Как показано выше, эта команда предоставляет вам IP-адрес DNS-сервера, который используется вашим маршрутизатором.
Однако в некоторых случаях вы можете определить IP-адреса DNS-серверов, которые необходимы вашему компьютеру для использования, а затем их также можно передать на ваш маршрутизатор.
Их можно определить в файле ‘/etc/resolv.conf’, а его содержимое можно посмотреть:
В соответствии с вышеизложенным приоритет присваивается 10.0.80.11, и только если он не может получить соответствующую информацию, данные передаются в 10.0.80.12 для выполнения DNS-запроса.
Способ 4. Возьмите дамп пакетов и просмотрите данные DNS.
Чтобы взять пакетный дамп текущего сетевого трафика, можно использовать команду tcpdump.
Tcpdump – это инструмент анализа сетевых пакетов, в котором используются пакеты захвата или фильтрации tcp / ip, которые передаются по сети.
Он широко используется пользователями Linux для устранения неполадок в сети.
Чтобы просмотреть сетевой трафик, выполните команду ниже в от рута отдельной вкладки в терминале
Затем на другой вкладке генерируйте трафик DNS с помощью команды host или dig, как показано ниже.
Затем вы сможете увидеть аналогичный вывод ниже, в выводе tcpdump
В приведенном выше примере вы можете четко увидеть мою машину (IP-адрес 192.168.64.140) с DNS-сервером (IP-адрес 192.168.64.2) о доменном имени www.google.com
5 thoughts on “ Какой у меня DNS-сервер? Узнайте 4 метода проверки IP-адреса ”
Нет интернета что-то случилось с настройками?
Нет, что-то случилось с твоим мозгом
*itisgood, зачем же так грубо отвечать, особенно представительнице слабого пола? Где же ваши манеры, ваше воспитание, ваше интеллигентность, ваше субординация и ваше культурность, невежда? Зачем вы поступаете, как быдло? Какая у вас с этого выгода? Если нормально себя вести перед людьми, то люди не будут смотреть на вас, как на идиота сбежавшего из психиатрической больницы, а наоборот – к вам потянутся, это же так здорово, чем быть быдлой, кем вы себя и продемонстрировали.
Инструмент для отслеживания DNS-запросов: dnspeep
Недавно я создала небольшой инструмент под названием dnspeep, который позволяет понять, какие DNS-запросы отправляет ваш компьютер и какие ответы он получает. Всего мой код занял 250 строк на Rust. В этой статье я расскажу о коде, объясню, для чего он нужен, почему в нём возникла необходимость, а также расскажу о некоторых проблемах, с которыми я столкнулась при его написании. И, конечно, вы сами сможете попробовать код в действии.
Что нужно для начала работы с кодом
Чтобы было удобнее работать с кодом, я подготовила несколько бинарных файлов.
Команды для Linux (x86):
Коду необходим доступ ко всем отправляемым компьютером пакетам DNS, поэтому его необходимо запускать от имени root. По этой же причине утилиту tcpdump также нужно запускать от имени root: код использует libpcap — ту же библиотеку, что и tcpdump. Если вам по какой-либо причине не захочется загружать бинарные файлы и запускать их от имени root, вы можете воспользоваться моим исходным кодом и создать на его основе собственный.
Что получается в результате
Каждая строка представляет собой DNS-запрос и соответствующий запросу ответ.
Эти запросы отражают мои визиты на сайт neopets.com в браузере, а запрос bolt.dropbox.com возник потому, что у меня запущен агент Dropbox, и, как я полагаю, время от времени он заходит на свой сайт для синхронизации.
Зачем создавать ещё один инструмент DNS?
Я считаю, что в таком инструменте есть смысл, так как с его помощью можно лучше представить, как работает DNS — без этого инструмента довольно сложно понять, как ведёт себя DNS на компьютере.
Ваш браузер (и другие компьютерные программы) постоянно отправляет DNS-запросы. Если знать, какие запросы отправляет компьютер и какие ответы он получает, можно получить более реальную картину «жизни» компьютера.
Написанный мною код я также использую как инструмент отладки. На вопросы типа: «А не связана ли моя проблема с DNS?» ответить иногда бывает довольно сложно. Пользователи, не зная всей информации, зачастую, чтобы найти проблему, используют метод проб и ошибок или просто строят догадки, хотя, казалось бы, стоит просто проанализировать ответы на получаемые компьютером DNS-запросы, и проблема будет решена.
Можно увидеть, какое программное обеспечение «тайно» выходит в Интернет
Мне нравится в этом инструменте, что он даёт представление о том, какие программы моего компьютера пользуются Интернетом! Например, я обнаружила, что какая-то утилита на моём компьютере время от времени по непонятной причине отправляет запросы на ping.manjaro.org, вероятно, чтобы проверить, подключён ли мой компьютер к Интернету.
Один мой приятель с помощью этого инструмента обнаружил, что на его компьютере было установлено корпоративное ПО для мониторинга, которое он просто забыл удалить, когда увольнялся с прошлого места работы.
Если вы раньше не работали с tcpdump, поначалу может быть непонятно, что делает эта утилита
Рассказывая людям об отправляемых с компьютера DNS-запросах, я почти всегда хочу добавить: «Всю информацию можно получить через tcpdump!» Что делает утилита tcpdump? Она осуществляет разбор пакетов DNS! Например, вот как выглядит DNS-запрос incoming.telemetry.mozilla.org.:
Сначала эта информация может показаться «тёмным лесом», но её при некоторых навыках можно научиться читать. Давайте для примера разберём такой запрос:
A? означает DNS-запрос типа A;
incoming.telemetry.mozilla.org. — это имя объекта, к которому осуществляется запрос;
56271 — это идентификатор DNS-запроса;
192.168.1.181.42281 — исходный IP/порт;
192.168.1.1.53 — IP/порт назначения;
(48) — длина DNS-пакета.
Ответ выглядит следующим образом:
3/0/0 — количество записей в ответе: 3 ответа, 0 полномочий, 0 дополнительно. Исходя из моего опыта, tcpdump выводит только количество ответов на запрос.
CNAME telemetry-incoming.r53-2.services.mozilla.com, CNAME prod.data-ingestion.prod.dataops.mozgcp.net. и A 35.244.247.133 — это те самые три ответа
56271 — идентификатор ответов, соответствующий идентификатору запроса. По этому идентификатору можно понять, что это ответ на запрос из предыдущей строки.
С таким форматом, конечно, работать довольно сложно, ведь человеку нужно просто посмотреть на трафик DNS, к чему все эти нагромождения? И вот ему приходится вручную сопоставлять запросы и ответы, к тому же не всегда находящиеся на соседних строках. Здесь в дело вступают компьютерные возможности!
Я решила написать небольшую программку — dnspeep, которая будет сама выполнять такое сопоставление, а также удалять определённую (на мой взгляд, лишнюю) информацию.
Проблемы, с которыми я столкнулась при написании кода
При написании кода я столкнулась с рядом проблем.
Мне пришлось несколько изменить библиотеку pcap, чтобы заставить её правильно работать с Tokio на Mac OS — вот эти изменения. Это была одна из тех ошибок, на поиск которой ушло много часов, а всё исправление уложилось в одну строку.
Разные дистрибутивы Linux, по всей видимости, используют разные версии libpcap.so, поэтому мне не удалось воспользоваться непосредственно бинарным файлом, динамически компонующим libpcap (у других пользователей возникала такая же проблема, например здесь). Поэтому компилировать библиотеки libpcap в инструмент на Linux мне пришлось статически. Я до сих пор не понимаю, как такое правильно организовать на Rust, но я добилась, чего хотела, и всё заработало — я скопировала файл libpcap.a в каталог target/release/deps, а затем просто запустила cargo build.
Используемая мною библиотека dns_parser поддерживает не все типы DNS-запросов, а только некоторые самые распространённые. Возможно, для разбора DNS-пакетов можно было использовать другую библиотеку, но я не нашла подходящей.
Поскольку интерфейс библиотеки pcap выдает набор «голых» байтов (в том числе для данных Ethernet-фреймов), мне пришлось написать код, который определял, сколько байтов нужно отсечь от начала строки, чтобы получить IP-заголовок пакета. Но я уверена, что в моей задаче ещё остались «подводные камни».
Кстати, вы даже не представляете, каких сложностей мне стоило подобрать название для своей утилиты — ведь инструментов для работы с DNS великое множество, и у каждого своё название (dnsspy! dnssnoop! dnssniff! dnswatch!) Сначала я хотела включить в название слово spy (шпион) или его синонимы, а затем остановилась на показавшемся мне забавным названии, которое — о чудо! — ещё никто не занял для собственного DNS-инструмента.
У моей утилиты есть один недостаток: она не сообщает, какой именно процесс отправил DNS-запрос, но выход есть — используйте инструмент dnssnoop. Этот инструмент работает с данными eBPF. Судя по описанию, он должен работать нормально, но я его ещё не пробовала.
В моём коде наверняка ещё много ошибок
Мне удалось его протестировать только на Linux и Mac, и я уже знаю как минимум об одной ошибке (из-за того, что поддерживаются не все DNS-запросы). Если найдёте ошибку, пожалуйста, сообщите мне!
Сами по себе ошибки не опасны — интерфейс libpcap доступен только для чтения, самое худшее, что может случиться, — он получит какие-то непонятные данные и выдаст ошибку или аварийно завершит работу.
Мне нравится составлять небольшие учебные материалы
В последнее время я получаю огромное удовольствие от написания небольших учебных материалов по DNS. Вот ссылки на мои предыдущие статьи:
Простой способ составления DNS-запросов;
Рассказывается, что происходит внутри компьютера при отправке DNS-запроса;
Ранее в своих постах я просто объясняла, как работают существующие инструменты (например dig или tcpdump), а если и писала собственные инструменты, то довольно редко. Но сейчас для меня очевидно, что выходные данные этих инструментов довольно туманны, их сложно понять, поэтому мне захотелось создать более дружественные варианты просмотра такой информации, чтобы не только гуру tcpdump, но любые другие пользователи могли понять, какие DNS-запросы отправляет их компьютер.
А если вы хотите не только понимать, что происходит с запросами и ответами DNS на вашем компьютере, но и писать собственные протоколы для своих приложений, обратите внимание на профессии C++ разработчик или Java-разработчик, позволяющие с нуля освоить эти языки или прокачать своё владение ими. Приходите — опытные менторы и эксперты своего дела с удовольствием поделяться с вами своими знаниями.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля: