- Почему компьютер получает от роутера IP 10-0-0-x вместо 192-168-х-х?
- Клиенты получают неверные настройки (IP-адреса) по DHCP
- Симптомы
- Диагностика на стороне клиента
- Вариант 1. Текущий IP-адрес имеет вид 169.254.Х.Х
- Вариант 2. Текущий IP-адрес не из диапазона 169.254.0.0 – 169.254.255.255, но и не из того диапазона адресов, которые должен выдавать DHCP-сервер
- Вариант 3. Текущий IP-адрес корректный, но доступа к интернету и другим сетевым ресурсам по-прежнему нет
- Диагностика на стороне сервера
- Запущен ли DHCP как сервис?
- Приходят ли запросы от клиентов на DHCP-сервер?
- Нет ни запросов, ни ответов?
- Запрос(ы) есть, ответа(ов) нет?
Почему компьютер получает от роутера IP 10-0-0-x вместо 192-168-х-х?
Имеется роутер TP-Link TL-WR940N, к нему подключено около 30 компьютеров на Windows. На роутере работает DHCP сервер, на компах настроено автоматическое получение IP-адресов. Роутер работает круглосуточно, а компы на ночь выключаются. А когда утром компы включают, на некоторых из них не оказывается интернета, а IP вместо назначенного на роутере 192.168.х.х почему-то 10.0.0.х.
Я вручную ставлю на проблемных компах 192.168.х.х, как и должно быть — сеть появляется, а интернета нет. Затем снова переключаю на автоматическое получение IP — сеть и инет появляются.
Почему без такого передергивания сразу нет нормального подключения?
При повторном выключении-включении большинство компов получает нормальные IP и интернет, а некоторые случайные компы получают 10.0.0.х и в их панели управления надо вручную «передернуть», прописав так же конкретный свободный IP, а затем переключиться на автоматическое получение IP.
Как настройть этот роутер, чтобы на всех компах была сеть и интернет, без таких передергиваний?
В вашей сети кто-то подключает устройство, которое ведёт себя как DHCP-сервер. Это может быть другой роутер или VoIP-шлюз, подключенные в сеть LAN-портом, неправильно настроенная точка доступа WiFi и другие сетевые железки.
Что касается настройки — на роутере вы ничего не сделаете. Как, впрочем, и на компьютерах. Дело в том, что когда устройство отправляет в сеть DHCP-запрос и получает ответ сразу от нескольких DHCP-серверов — оно по стандарту может выбрать любой из пришедших ответов и продолжать процедуру настройки IP с выбранным сервером. Поэтому ни роутер, ни компьютер никак не смогут на эту ситуацию повлиять.
Как решить проблему? Если у вас за роутером есть управляемый коммутатор — вы можете найти проблемное устройство. Для этого вам нужно сначала на компьютере с неправильными настройками посмотреть IP-адрес шлюза (через ipconfig), затем узнать его MAC-адрес (через arp -a), после чего на коммутаторе выяснить, к какому порту подключен этот MAC. Далее отключаете этот порт — и, собственно, проблема решена. Продвинутые управляемые коммутаторы имеют возможность деактивировать некорректные DHCP-серверы — вы просто указываете в настройках порт с легитимным DHCP-сервером (к которому подключен роутер), после чего никакой другой DHCP-сервер не сможет отослать пакет в сеть.
Если у вас в сети нет управляемого коммутатора — это очень печально, потому что вам придётся проверять каждый порт на предмет того, что к нему подключено, пока не найдёте проблемное оборудование. Ещё один вариант решения проблемы, который может быть более быстрым — прописать вручную настройки IP (адрес, маску, шлюз и DNS-ы) на всех компьютерах.
Прописывание вручную IP и шлюза на компе привело к тому, что сеть появилась, а интернета нет. Позже оказалось, что в сети есть управляемый свитч как раз из подссети 10.х.х.х. Я его перевел в подсеть 192.168.х.х, где и находится роутер — и проблема решилась. Но поскольку я поначалу сканировал только подсеть 192.168.х.х и не нашел там ничего криминального, то и удивлялся странному поведению компов. — 5 лет назад
Если прописать правильно IP, маску, шлюз (адрес TP-Link) и DNS-ы — ничто не помешает оказаться за шлюзом, т.е. в интернете. По крайней мере мне так подсказывает пятилетний опыт работы у провайдера. И раз управляемый коммутатор так себя вёл — значит это коммутатор L3 и на нём настроен DHCP-сервер, который необходимо деактивировать или настроить на выдачу правильных настроек IP. — 5 лет назад
Клиенты получают неверные настройки (IP-адреса) по DHCP
Чтобы взаимодействовать с другими, каждому устройству в сети необходимо иметь четыре основные настройки на сетевом адаптере — IP-адрес, маску, шлюз по умолчанию и адреса DNS-серверов (хотя последнее на самом деле опционально). Есть два основных способа назначения сетевых настроек — статически (вручную) и динамически (автоматически по протоколу DHCP от DHCP-сервера).
Второй вариант чаще всего гораздо удобнее, ведь настройки не придётся прописывать руками. Но наверняка многим приходилось сталкиваться с ситуацией, когда клиентское устройство получает совершенно другой IP-адрес вместо корректных настроек от DHCP-сервера. И тогда очень важно понять, почему так происходит и как всё быстро исправить. В посте я расскажу об этом.
Симптомы
Обычно всё начинается с жалоб на неработающий интернет или отсутствие доступа к локальным сетевым ресурсам. Иногда достаточно провести диагностику только на стороне клиента, но может понадобиться полная диагностика и со стороны сервера в том числе. Начнём с первой опции.
Диагностика на стороне клиента
Чтобы понять, что происходит, первым делом, конечно, следует проверить, подключён ли клиент физически к проводной или беспроводной сети. Если да, то самое время приступать к проверке сетевых настроек на устройстве клиента с помощью утилит ipconfig /all (в командной строке Windows), ifconfig или ip addr (в терминале Linux).
Вывод команд покажет текущий IP-адрес и другие настройки на сетевом адаптере (или всех адаптерах, если их несколько). При этом, если на сетевом адаптере нет корректного IP-адреса, возможных вариантов его настроек может быть немного.
Вариант 1. Текущий IP-адрес имеет вид 169.254.Х.Х
Скорее всего, на клиентской машине при этом установлена ОС Windows. Это значит, что клиенту действительно не удалось получить сетевые настройки, потому что DHCP-сервер не отвечал, и адрес был сгенерирован службой APIPA (Automatic Private IP Addressing) из диапазона 169.254.0.0 – 169.254.255.255. Если клиент — Linux-машина, адрес может принимать вид 0.0.0.0, либо отсутствовать в принципе.
Пожалуй, самое очевидное действие в такой ситуации — попытаться снова получить IP-адрес, отправив повторно DHCP-запрос, а заодно убедиться, что на устройстве запущен DHCP-клиент. Это можно сделать несколькими способами:
- отключиться от сети на 10–30 секунд и подключиться снова;
- перезагрузить устройство;
- выполнить последовательно команды. В командной строке Windows: ipconfig /release, затем ipconfig /renew. В терминале Linux: dhclient -v -r, потом dhclient или dhcpcd -k, затем dhcpcd ().
При выводе каких-либо ошибок и/или предупреждений нужно в первую очередь их устранить — например если DHCP-клиент не запущен, сперва его необходимо включить. После этого нужно снова проверить настройки. Если результат остался прежним, проверьте работоспособность сетевого драйвера и стека протоколов TCP/IP в целом. Проще всего это сделать с помощью команды ping 127.0.0.1 (так называемая проверка внутренней обратной петли). Если в результате выполнения команды ответ от собственного сетевого адаптера получен, можно считать диагностику на стороне клиента завершённой и переходить к диагностике со стороны DHCP-сервера.
Вариант 2. Текущий IP-адрес не из диапазона 169.254.0.0 – 169.254.255.255, но и не из того диапазона адресов, которые должен выдавать DHCP-сервер
Как известно, чудес не бывает. Если настройки, которые получает клиент, не от доверенного DHCP-сервера в сети, значит, их раздаёт кто-то другой. Тот, кто случайно или специально подключил к сети DHCP-сервер со своей конфигурацией. Возможно, это обычный Wi-Fi-роутер, к которому кабель по ошибке подключили через один из LAN-портов. Тогда ваша задача — найти недоверенный DHCP-сервер и предотвратить такие попытки в будущем.
Здесь нужно вспомнить, как работает DHCP-протокол. Клиент отправляет широковещательный запрос (DHCPDISCOVER), который получат все DHCP-серверы в сети и отправят в ответ свои предложения IP-адреса (DHCPOFFER). При этом клиент примет первое полученное предложение (DHCPOFFER), скорее всего, от ближайшего DHCP-сервера, а остальные отклонит.
Очевидно, что предложение от доверенного DHCP-сервера приходит позже, скорее всего, потому, что он дальше от клиента. Для последующей диагностики на устройстве клиента нужно установить анализатор сетевого трафика (Wireshark или tcpdump), запустить его, отфильтровав трафик по типу протокола DHCP или портам 67–68, и посмотреть в DHCP-ответах IP и MAC адрес DHCP-сервера, который их отправляет:
Дальше дело за малым. Во-первых, можно воспользоваться сервисом macvendors.com или аналогичным и по MAC-адресу определить производителя оборудования этого устройства. У Wireshark есть такая функция. Во-вторых, если есть управляемые коммутаторы в сети, найти по MAC, в какой порт какого коммутатора подключено это устройство. После нейтрализации недоверенного DHCP-сервера клиенту, скорее всего, удастся получить верные настройки. Для предотвращения таких инцидентов в будущем рекомендуется внедрить методы защиты от атак на DHCP на сетевом оборудовании.
Вариант 3. Текущий IP-адрес корректный, но доступа к интернету и другим сетевым ресурсам по-прежнему нет
Если это так, то стоит вернуться к проверке не только самого IP-адреса, но и всех остальных настроек. И особенно к проверке маски, адреса шлюза по умолчанию и адресов DNS-серверов, так как именно через шлюз устройству предстоит связываться с другими сетями, а с помощью DNS-серверов — преобразовывать доменные имена в IP-адреса.
Следует помнить, что DHCP-сервер может раздавать настройки выборочно, а сам клиент может выборочно их применять. Например, только IP-адрес, маску и шлюз. Это скорее исключение, но в таком случае адреса DNS придётся прописать руками. Гораздо хуже, если настройки адресов DNS-серверов от DHCP-сервера игнорируются просто потому, что их переопределяет стороннее ПО или неверные статические настройки. Такое тоже бывает.
Диагностика на стороне сервера
Итак, диагностика на стороне клиента показала, что проблем не обнаружено. Независимо от реализации DHCP-сервера, теперь необходимо пошагово проверить ряд предположений, начиная с самых простых и очевидных.
Запущен ли DHCP как сервис?
В зависимости от ОС, дистрибутива и реализации DHCP-сервера, проверить это можно по-разному. Если сервис остановлен и есть ошибки в конфигурационных файлах, то запустить его не удастся. Это первая отправная точка. Если сервис запущен, можно переходить к следующему шагу.
Приходят ли запросы от клиентов на DHCP-сервер?
Чтобы определить это, нужно снова запустить анализатор сетевого трафика. На этот раз на сервере. После запуска на сервере tcpdump, dhcpdump или Wireshark клиенту, у которого проблемы с получением адреса, необходимо попытаться получить его снова любым способом, описанным в начале статьи. Если DHCP-сервер работает в штатном режиме, то должны быть и запросы, и ответы. Но всё может быть иначе.
Нет ни запросов, ни ответов?
Предположим, что у нас есть по крайней мере один клиент, которому не удаётся получить настройки, и запрос от него точно должен был прийти на сервер. Если этого не произошло, очевидно, что клиент либо сам не отправляет запрос, либо запрос не доходит до сервера по разным причинам. Может, он блокируется на промежуточном сетевом оборудовании или в сети некорректно работает ретрансляция DHCP-запросов dhcp_relay.
Чтобы это проверить, можно в первом случае вернуться к диагностике на стороне клиента и проследить с помощью анализатора сетевого трафика, что клиент отправляет DHCP-запрос. Во втором — проверить настройки на промежуточном сетевом оборудовании.
Запрос(ы) есть, ответа(ов) нет?
Самая простая и очевидная причина в этом случае — закончился пул свободных адресов. Это легко проверить на самом DHCP-сервере по списку выделенных IP-адресов (leases). Если причина действительно в этом — задумайтесь: возможно, пришло время для увеличения пула пригодных для использования IP-адресов на сервере. Чтобы решить проблему прямо сейчас, можно почистить список существующих адресов, выданных в аренду клиентам, уменьшить время аренды и перезапустить сервис DHCP. Но быстрые решения помогают не всегда, а причин может быть гораздо больше. В таком случае придётся детально просматривать логи, а также последние изменения в конфигурации на сервере.