
Иногда наша локальная сеть перестает разрешать имена хостов. Мы понятия не имеем, почему это происходит. Как мы можем диагностировать эти проблемы?
У нас есть два маршрутизатора. Один подключен к Интернету (через оптоволоконный модем). Другой настроен как беспроводной коммутатор. То есть он обслуживает Интернет через первый маршрутизатор, но находится в другой комнате и используется для Ethernet-подключений к компьютерам в этой комнате.
Проблема, похоже, связана с первым маршрутизатором (или чем-то еще). Я сомневаюсь, что это маршрутизатор-коммутатор или какая-то проблема с конфигурацией по всей сети. Это происходит потому, что мы обычно печатаем, http://home
чтобы попасть в конфигурацию маршрутизатора для подключенного к Интернету маршрутизатора, но это не работает. Однако мы можем ввести IP-адрес и попасть на страницу конфигурации. Это происходит независимо от того, подключены ли мы к исходному маршрутизатору или маршрутизатору-коммутатору.
Аналогично у нас есть веб-сервер в локальной сети, для доступа к которому мы обычно используем имя хоста компьютера, чего мы не можем сделать по сети (хотя IP-адрес, опять же, работает).
Аналогично пинг IP-адресов в сети работает, а вот имён хостов — нет.
Я не знаю, как мы это исправим, если вообще исправим. Обычно мы перезапускаем маршрутизаторы и т. п., и они возвращаются. Но на этот раз этого не произошло, поэтому я ищу немного больше информации о том, почему это может происходить.
решение1
Согласно предоставленной вами информации, вам следует начать с определения того, работает ли служба DNS маршрутизатора на самом деле или нет. Вы должны быть в состоянии определить это, посмотрев на конфигурацию маршрутизатора, чтобы увидеть, работает ли служба или нет, но если нет никаких индикаторов, которые могли бы вам помочь, вы можете прибегнуть к сканированию портов.
ПРОПУСТИТЕ ЭТОТ РАЗДЕЛ, ЕСЛИ ВАШ МАРШРУТИЗАТОР СООБЩИЛ ВАМ, ЧТО DNS АКТИВЕН:
Используйте такой инструмент, какнмап. Вы можете быстро загрузить его для своего сервера Linux, поскольку он включен в большинство репозиториев пакетов по умолчанию для ваших стандартных дистрибутивов Linux (Debian, Ubuntu, CentOS, Mint, Fedora, Redhat и т. д.). В зависимости от того, используете ли вы дистрибутив на основе Debian или RPM, синтаксис вашей команды может отличаться.
Для Дебиан:
- Искать
nmap
:sudo apt-cache search nmap
- Установить
nmap
:sudo apt-get install nmap
- Искать
Для RPM-пакетов (Fedora, Centos, RedHat и аналогичные):
dnf search nmap
dnf install nmap
(в более старых версиях раньше
dnf
:)yum search nmap
yum install nmap
Сканирование DNS
Предположим, что IP-адрес вашего маршрутизатора — 192.168.1.1
, и вам нужно выполнить сканирование UDP-сервиса ( -sU
) на порту 53 ( -p53
) с агрессивным разрешением ( -A
), чтобы выяснить, активен ли он и работает ли:
nmap -sU -p53 -A 192.168.1.1
При условии, что услуга вернетсяОТКРЫТО|НЕФИЛЬТРОВАННЫЙ, то вы золотой. Если он появляется какЗАКРЫТОзатем покопайтесь в конфигурациях еще немного и посмотрите, есть ли варианты, которые позволяют вам перенастроить DNS или просто перезагрузить маршрутизатор в надежде, что он вернется к жизни. Если все остальное не помогает, позвоните производителю и жалуйтесь изо всех сил. Иногда это работает :)
Настройка хоста Windows:
Возвращаясь к задаче: пока вы уверены, что DNS работает и функционирует правильно на маршрутизаторе, вы захотите попробовать заставить работать клиент Windows, так как это немного проще, и у вас есть GUI, на который можно положиться. Я рекомендую настроить резервный DNS на вашем маршрутизаторе, чтобы он мог опрашивать несколько DNS-серверов в случае сбоя одного из них.
Мои личные фавориты:
8.8.8.8
это Google 18.8.4.4
это Google 2208.67.220.220
это OpenDNS 1208.67.222.222
это OpenDNS 2
После этого следующим шагом вам следует проверить, сможете ли вы заставить систему Windows разрешать DNS на маршрутизаторе, вручную настроив его в сетевых параметрах TCP/IPv4.
- Щелкните правой кнопкой мыши значок сети в правом нижнем углу панели задач и перейдите к
Networking and Sharing Center
. - Щелкните свой сетевой интерфейс (должен быть
ethernet 1
или похожий) и перейдите вproperties
. - Щелкните
Internet Protocol Version 4 (TCP/IPv4)
и нажмитеproperties
еще раз, - Нажмите
User the following DNS server addresses
радиальную кнопку, - Введите IP маршрутизатора/DNS-сервера в качестве предпочитаемого DNS,
- Введите
8.8.8.8
(публичный DNS Google) в качестве альтернативного DNS для отката - Проверка
Validate Settings
при выходе - Нажмите
OK
«Применить» и дождитесь устранения неполадок/перезапуска сетевого интерфейса.
На этом этапе вы должны иметь возможность разрешать имена хостов DNS в системах Windows. Если это так, то вы знаете, что по какой-то причине служба DHCP вашего маршрутизатора не транслирует правильные настройки, и вам, возможно, придется либо обратиться к производителю, либо повозиться самостоятельно в надежде, что это вас куда-то приведет. Всегда обращайтесь к документации.
Если же, с другой стороны, это не работает, я бы заподозрил сами кабели или аппаратное обеспечение маршрутизатора. На этом этапе не осталось ничего, кроме как начать заменять физические устройства.
Настройка Linux-сервера:
(Возможно, вам придется выполнить эти команды от имени пользователя root
/ sudo
, если вы увидите какие-либо ошибки прав доступа.)
Если у вас мало опыта работы с Linux, это, скорее всего, будет для вас новым приключением, но не волнуйтесь.
Начните с проверки /etc/resolv.conf
файла:
cat /etc/resolv.conf
В этом файле настраиваются серверы имен, доменные имена и домены поиска. Обычно вы увидите:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
Есть две возможности, в зависимости от того, как выглядит ваша настройка. Одна из них заключается в том, что у вас установлен dnsmasq, и вы видите этот предупреждающий баннер, сообщающий вам, что не следует изменять resolv.conf. В этом случае у него будет loopback (127.0.0.1 или 127.0.1.1), как вы видите в моей конфигурации, что означает, что он запускает собственную службу DNS через dnsmasq. Если вы видите это, выполните следующее:
/etc/init.d/dnsmasq status
Если вы видите No such file or directory
, то dnsmasq не установлен, не проблема. Вы можете двигаться дальше без него, или мы можем быстро установить его с помощью
apt-get install dnsmasq
(или dnf install dnsmasq
).
Если вы решили не устанавливать/перезапускать dnsmasq, вы можете просто отредактировать /etc/resolv.conf
файл в вашем любимом текстовом редакторе (я предпочитаю nano
), включив в него следующие строки:
nameserver 192.168.1.1 8.8.8.8 8.8.4.4 # That's your router and two fallback DNS servers
Если вы видите, что статус dnsmasq — Active/Running, то он установлен и работает правильно. Если dnsmasq неактивен/мертв, то вам следует запустить его следующим образом:
/etc/init.d/dnsmasq start
dnsmasq обычно обрабатывает разрешение DNS, динамически изменяя /etc/resolv.conf
файл для вас. В случаях, когда ваш преобразователь не обрабатывает запросы должным образом или dnsmasq не настроен должным образом, я настоятельно рекомендую прочитатьего прекрасная документация.
/etc/dnsmasq.conf
Но на самом деле вам нужно убедиться, что для вашего . настроены только две настройки :
server=/yourlocaldomain/192.168.1.1
local=/yourlocaldomain/
Они устанавливают сервер на ваше локальное доменное имя и IP-адрес DNS-сервера, а также local=/yourlocaldomain/
предотвращают попытки dnsmasq разрешить его на вышестоящих серверах имен, когда ваш домен находится в полном доменном имени хоста, который вы пытаетесь разрешить.
Например, если вы не установите этот параметр и попытаетесь разрешить
emailserver.localdomain
, dnsmasq спросит Google Public DNS, где emailserver.localdomain
находится... и, конечно же, ответит: «Понятия не имею!»
Установка этого параметра заставит dnsmasq выдать сообщение: « emailserver.**localdomain**
... Я должен спросить, 192.168.1.1
где это находится». - и 192.168.1.1
ваш маршрутизатор сможет ответить соответствующим образом, отправив правильный DNS-ответ и IP-адрес emailserver.localdomain
.
Надеюсь, это объяснение и длинное решение помогут вам. Я постарался учесть все сценарии, которые только мог придумать, но дайте мне знать, если я что-то упустил или что-то не работает.
решение2
Если в локальной сети не так много компьютеров и/или она не зависит от внутренних маршрутов DNS, задайте параметры DNS в конфигурации pv4 следующим образом:
8.8.8.8
и
8.8.4.4
Это позволит передать работу по разрешению DNS серверам Google.