Нет пинга на dns

Обновлено: 06.07.2024

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

Для операционных систем семейства Linux написано множество утилит, помогающих в диагностике и мониторинге. Познакомимся с наиболее часто используемыми из них.

Диагностика сетевой связности (ping, arp, traceroute)

В данной статье мы будем опираться на использование протокола IP версии 4. Согласно стандартам, определяющим работу этого протокола, каждое устройство, подключенное к сети, должно иметь как минимум IP-адрес и маску подсети — параметры, которые позволяют уникально идентифицировать устройство в пределах определенной сети. В такой конфигурации устройство может обмениваться сетевыми пакетами с другими устройствами в пределах той же самой логической сети. Если к этому набору параметров добавить адрес шлюза по умолчанию — наш сервер сможет связываться с хостами, находящимися за пределами локального адресного пространства.

В случае каких-либо сетевых проблем в первую очередь проверяем, не сбились ли настройки сетевого интерфейса. Например, команды ip addr или ifconfig выведут IP-адрес и маску сети:

Проверки настроек сетевого интерфейса

Скриншот №1. Проверки настроек сетевого интерфейса

В выводе команды виден перечень сетевых интерфейсов, распознанных операционной системой. Интерфейс lo — это псевдоинтерфейс (loopback). Он не используется в реальных взаимодействиях с удаленными хостами, а вот интерфейс с именем ens192 — то, что нам нужно (именование сетевых интерфейсов различается в разных ветках и версиях ОС Linux). IP-адрес и маска сети, назначенные этому интерфейсу, указаны в поле inet — /24 после адреса обозначают 24-битную маску 255.255.255.0.

Теперь проверим, указан ли шлюз по умолчанию. Команды ip route или route покажут имеющиеся маршруты:

Проверка маршрута

Скриншот №2. Проверка маршрута

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

Синтаксис команды ping IP/имя опции:

Синтаксис команды

Скриншот №3. Синтаксис команды

В данном случае видим, что на оба сетевых пакета, отправленных на адрес нашего шлюза по умолчанию, получены ответы, потерь нет. Это значит, что на уровне локальной сети со связностью все в порядке. Помимо количества полученных/потерянных сетевых пакетов мы можем увидеть время, которое было затрачено на прохождение запроса и ответа – параметр RTT (Round Trip Time). Этот параметр может быть очень важен при диагностике проблем, связанных с нестабильностью связи и скоростью соединения.

Часто используемые параметры:

  • ping –c количество — указать количество пакетов, которое будет отправлено адресату (по умолчанию пакеты отправляются до тех пор, пока пользователь не прервет выполнение команды. Этот режим можно использовать, чтобы проверить стабильность сетевого соединения. Если параметр RTT будет сильно изменяться в ходе проверки, значит где-то на протяжении маршрута есть проблема);
  • ping –s количество — указать размер пакета в байтах. По умолчанию проверка производится малыми пакетами. Чтобы проверить работу сетевых устройств с пакетами большего размера, можно использовать этот параметр;
  • ping –I интерфейс — указать сетевой интерфейс, с которого будет отправлен запрос (актуально при наличии нескольких сетевых интерфейсов и необходимости проверить прохождение пакетов по конкретному сетевому маршруту).

В случае, если при использовании команды ping пакеты от шлюза (или другого хоста, находящегося в одной локальной сети с сервером-отправителем) в ответ не приходят, стоит проверить сетевую связность на уровне Ethernet. Здесь для коммуникации между устройствами используются так называемые MAC-адреса сетевых интерфейсов. За разрешение Ethernet-адресов отвечает протокол ARP (Address Resolution Protocol) и с помощью одноименной утилиты мы можем проверить корректность работы на этом уровне. Запустим команду arp –n и проверим результат:

Команда arp –n

Скриншот №4. Команда arp –n

Команда выведет список IP-адресов (так как был использован аргумент –n), и соответствующие им MAC-адреса хостов, находящиеся в одной сети с нашим сервером. Если в этом списке есть IP, который мы пытаемся пинговать, и соответствующий ему MAC, значит сеть работает и, возможно, ICMP-пакеты, которые использует команда ping, просто блокируются файрволом (либо со стороны отправителя, либо со стороны получателя). Подробнее об управлении правилами файрвола рассказано здесь и здесь.

Часто используемые параметры:

  • arp –n — вывод содержимого локального arp-кэша в числовом формате. Без этой опции будет предпринята попытка определить символические имена хостов;
  • arp –d адрес — удаление указанного адреса из кэша. Это может быть полезно для проверки корректности разрешения адреса. Чтобы убедиться, что в настоящий момент времени адрес разрешается корректно, можно удалить его из кэша и снова запустить ping. Если все работает правильно, адрес снова появится в кэше.

Если все предыдущие шаги завершены корректно, проверяем работу маршрутизатора — запускаем ping до сервера за пределами нашей сети, например, 8.8.8.8 (DNS-сервис от Google). Если все работает корректно, получаем результат:

Проверка работы маршрутизатора

Скриншот №5. Проверка работы маршрутизатора

Утилита traceroute

Скриншот №6. Утилита traceroute

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

Часто используемые опции:

  • traceroute –n — вывод результата в числовом формате вместо символических имен промежуточных узлов;
  • traceroute –I — использование ICMP-протокола при отслеживании маршрута. По умолчанию используются UDP-датаграммы;
  • traceroute –s адрес— указать адрес источника для исходящего сетевого пакета;
  • traceroute –i интерфейс— указать сетевой интерфейс, с которого будут отправляться пакеты.

Диагностика разрешения имен (nslookup, dig)

Разобравшись с сетевой связностью и маршрутизацией приходим к следующему этапу — разрешение доменных имен. В большинстве случаев в работе с удаленными сервисами мы не используем IP-адреса, а указываем доменные имена удаленных ресурсов. За перевод символических имен в IP-адреса отвечает служба DNS — это сеть серверов, которые содержат актуальную информацию о соответствии имен и IP в пределах доверенных им доменных зон.

Способы выяснения какой DNS-сервер использует наш сервер различаются в зависимости от используемой версии и дистрибутива ОС Linux. Например, если ОС используется Network Manager для управления сетевыми интерфейсами (CentOS, RedHat и др.), может помочь вывод команды nmcli:

Команда nmcli

Скриншот №7. Команда nmcli

В настройках сетевого интерфейса, в разделе DNS configuration, мы увидим IP-адрес сервера. В Ubuntu 18.04 и выше, использующих Netplan, используем команду systemd-resolve --status:

Команда systemd-resolve --status

Скриншот №8. Команда systemd-resolve --status

Используемый сервер также будет указан в настройках интерфейса, в разделе DNS Servers. В более старых версиях Ubuntu потребуется проверить содержимое файлов /etc/resolve.conf и /etc/network/interfaces. Если сервер не указан, воспользуйтесь статьей для ОС Ubuntu 18.04 или CentOS, чтобы скорректировать настройки.

Проверить работу сервиса разрешения имен нам помогут утилиты nslookup или dig. Функционально они почти идентичны: G-вывод утилиты dig содержит больше диагностической информации и гибко регулируется, но это далеко не всегда нужно. Поэтому используйте ту утилиту, которая удобна в конкретной ситуации. Если эти команды недоступны, потребуется доставить пакеты на CentOS/RedHat:

yum install bind-utils

sudo apt install dnsutils

После успешной установки сделаем тестовые запросы:

Тестовые запросы

Скриншот №9. Тестовые запросы

Подтверждение корректной работы

Скриншот №10. Подтверждение корректной работы

Аналогичный запрос утилитой nslookup выдает более компактный вывод, но вся нужная сейчас информация в нем присутствует.

Отправка тестового запроса 1

Скриншот №11. Отправка тестового запроса 1

Отправка тестового запроса 2

Скриншот №12. Отправка тестового запроса 2

Если имена разрешаются публичным DNS-сервером корректно, а установленным по умолчанию в ОС нет, вероятно, есть проблема в работе этого DNS-сервера. Временным решением данной проблемы может быть использование публичного DNS-сервера в качестве сервера для разрешения имен в операционной системе. В том случае, если разрешение имен не работает ни через локальный, ни через публичный DNS сервер — стоит проверить не блокируют ли правила файрвола отправку на удаленный порт 53 TCP/UDP пакетов (именно на этом порту DNS-серверы принимают запросы).

Часто используемые параметры:

Как обычно, полный набор опций и параметров для указанных утилит можно найти во встроенной справке операционной системы, используя команду man.

Доброго! Есть DNS сервер на CentOS и много рабочих станций на windows и ubuntu.
На Win машинах запросы разрешаются,все пингуется.
На Ubuntu машинах запрос разрешается, ip выдается, но пинга нет, по ip все пингуется. DNS прописан в настройках сети, сеть настроена вручную.


если нет свзяи с ip надо смотреть роутинг. не прописан маршрут для этого адреса ??

Проверь что указано в /etc/nsswitch.conf, поставь winbind раньше DNS.

И ещё, возможно, виной всему встроенный в ubuntu свой DNS сервер, dnsmask, отключи его в конфигурационном файле NetworkManager.


Его отключил, не помогло


По IP пинг проходит

Покажи, что находится в

И что в /etc/nsswitch.conf


Вот файл, не нашел что поменять

passwd: compat
group: compat
shadow: compat
gshadow: files

hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files




passwd: compat
group: compat
shadow: compat
gshadow: files

hosts: winbind files mdns4_minimal [NOTFOUND=return] dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files


Привел файл вот к такому виду, ниже очень полезная ссылка на хабр,где все подробно пишут.
passwd: compat
group: compat
shadow: compat
gshadow: files

hosts: dns files mdns4_minimal [NOTFOUND=return]
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

dns и files лучше поменять местами. Мало ли потребуется вручную переписывать адреса сайтов в /etc/hosts.

В этой статье рассматривается устранение неполадок DNS-клиентов.

Проверка IP-конфигурации

Откройте окно командной строки от имени администратора на клиентском компьютере.

Выполните следующую команду:

Убедитесь, что у клиента есть допустимый IP-адрес, маска подсети и шлюз по умолчанию для сети, к которой он присоединен и используется.

Проверьте DNS-серверы, указанные в выходных данных, и убедитесь, что указанные IP-адреса указаны правильно.

Проверьте в выходных данных DNS-суффикс подключения и убедитесь, что он указан правильно.

Если у клиента нет допустимой конфигурации TCP/IP, используйте один из следующих методов.

Для динамически настроенных клиентов используйте ipconfig /renew команду, чтобы вручную обновить конфигурацию IP-адресов на DHCP-сервере.

Для статически настроенных клиентов измените свойства TCP/IP клиента, чтобы они использовали допустимые параметры конфигурации, или завершите настройку DNS для сети.

Проверка сетевого подключения

Проверка связи

Убедитесь, что клиент может связаться с предпочитаемым (или альтернативным) DNS-сервером, обратившись к предпочитаемому DNS-серверу по его IP-адресу.

Например, если клиент использует предпочитаемый DNS-сервер 10.0.0.1, выполните следующую команду в командной строке:

Если ни один настроенный DNS-сервер не отвечает на прямую проверку связи с IP-адресом, это означает, что источником проблемы является более вероятное сетевое подключение между клиентом и DNS-серверами. В этом случае выполните основные действия по устранению неполадок сети TCP/IP, чтобы устранить проблему. Помните, что для работы команды ping трафик ICMP должен быть разрешен через брандмауэр.

Тесты запросов DNS

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

Тестирование клиента

Например, если клиентский компьютер имеет имя КЛИЕНТ1, выполните следующую команду:

Если успешный ответ не возвращается, попробуйте выполнить следующую команду:

При выполнении этого теста необходимо включить конечную точку.

если Windows успешно найдет полное доменное имя, но не сможет найти его, проверьте конфигурацию dns-суффикса на вкладке dns расширенного протокола TCP/IP Параметры сетевого адаптера. Дополнительные сведения см. в разделе Настройка разрешения DNS.

Тестирование DNS-сервера

Например, если DNS-сервер называется DC1, выполните следующую команду:

Если предыдущие тесты были успешными, этот тест также должен быть успешным. Если проверка не прошла успешно, проверьте подключение к DNS-серверу.

Тестирование записи, в которой происходит сбой

Проверка общедоступного адреса в Интернете

Чтобы устранить эту проблему, очистите кэш, выполнив ipconfig /flushdns .

Следующий шаг

Если разрешение имен по-прежнему не выполняется, перейдите к разделу Устранение неполадок DNS-серверов .

Сайты не открываются, но Интернет есть. Проблема с DNS

16 октября 2016 ВК Tw Fb


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

  1. Откроем командную строку.
  2. Наберём в ней команду

no_dns_2

Что мы должны увидеть:

Решить эту проблему можно либо покопавшись в настройках роутера, либо в настройках сетевой карты Вашего ПК. Разнообразие роутеров не даёт создать единую инструкцию: за помощью в этом вопросе лучше обратиться к специалистам. А вот временно решить проблему Вы можете и сами.

Эти статьи будут Вам интересны

1С:Розница 2: 09h, Некорректное значение параметров команды

1С:Розница: Произошла ошибка 33h некорректные параметры в команде

13 августа 2017 ВК Tw Fb

После внезапного отключения питания на одном из ПК наших клиентов перестали печататься чеки, начала появляться ошибка "Произошла ошибка 33h некорректные параметры в команде". Конфигурация 1С:Предприятия - 1С:Розница 8. Магазин одежды и обуви (это переделанная Рарусом конфигурация 1С:Розница). Ниже приведём возможные решения данной проблемы.

FreeBSD 11: Обновление портов вручную и по расписанию

Порты - наше всё во FreeBSD. Почти всё ПО, которое нам может пригодится для решения любых задач уже есть в портах. Поэтому необходимо держать их в обновлённом состоянии. Добиваемся этого.

База знаний "Try 2 Fix" Beta

Все материалы свободны
к распространению с обязательным
указанием источника

Читайте также: