Почему при включённом dhcp после перезагрузки, пк пытается принять занятый ip-адрес?
Устроился на работу эникеем-сисадмином, без опыта. Предыдущий сотрудник уволился за полгода до моего прихода, не оставив контактов. Парк оборудования включает в себя: windows server 2012, 22 пк, 16 МФУ и пару устройств по мелочи. Сетевое оборудование - помимо сервера, работающего в режиме фтп-хранилища - два свитча l2 уровня, два маршрутизатора, 4 роутера и 4 усилка вайфай. Меняя все пароли и проверяя бэкапы на сервере, обнаружил, что предыдущий сотрудник настроил четыре жестких диска сервера в raid0 и решил (по неопытности), сделать ручной бэк и переустановить систему. Делал по какой-то инструкции из интернета и вроде все получилось. Но через примерно месяц начались проблемы с сетью. На пк пользователей начали конфликтовать айпи. Сразу оговорюсь - проблема была только на пк, мфу со статикой работают до сих пор стабильно. Начал разбираться, выяснил, что включил на сервере службу DHCP и вообще узнал про конфликт при включённом DHCP на разных устройствах. Пробежал по всем роутерам, оставил службу включенной только на одном роутере. В моменте это помогло, но где-то еще через месяц проблема начала повторяться, причем, судя по всему, только на машинах, которые не подключены напрямую к главному свитчу. То есть, например, мой пк и еще около 5 вообще не испытывают проблем с получением айпи. На остальных, при перезагрузке пк айпи сбрасывается и пытается перебором снова взять допустимый адрес, попутно перекидывая адреса с моего 192 на 169. На роутере поставил пул резервацию для статики с 200 по 250, для МФУ, с 1 до 10 для роутеров и сервера, остальное для dhcp. И каждый раз минут по 20 пользователи тратят на получение адресов. В теории, петлю я обнаружил и перенастроил, отключив службу везде кроме одного роутера. Но в командной строке при команде /renew продолжает писать про конфликт айпи. Что я делаю не так?
Для правильного вопроса надо знать половину ответа
перекидывая адреса с моего 192 на 169
169.254.0.0/16 - сеть автоконфигурации, устройство берёт себе адрес из этой сети если не прописана статика и оно не может получить его по DHCP.
Но в командной строке при команде /renew продолжает писать про конфликт айпи.
Перед /renew надо делать /release
Необходимо убедиться, что DHCP раздаётся только с одного сервера, этот сервер в одном broadcast-домене с остальными устройствами и на свитчах не включена блокировка DHCP (если они это умеют). Затем проверить конфигурацию сервера и убедиться, что пул адресов достаточен для всех устройств.
Да, про автоконфиг я понимаю, а вот про reset не знал, я писал release чтобы освободить адрес.
DHCP, как написал, отключил на всех роутерах с веб-интерфейсом и на самом сервере. Оставил только на одном роутере от Ростелекома, ZTE. Насчет свитчей еще не разобрался как они функционируют, не могу зайти в их интерфейс, хотя по логике, он должен быть, раз модели l2 уровня.
Про пул адресов - у меня стоит диапазон 70-200 что должно быть достаточно для двадцати с небольшим машин и около 50 непостоянных подключений по вайфай. Тоже проверял это. (
А, ну тогда да, делал. Но опять же, это не работает с конфликтом адресов, если я правильно все понял. Получается, схема такая - пользователь включает утром пк - с некоторым шансом (зависит от того, попадет он на незанятый адрес по нижнему пределу айпи) все ок, DHCP выдает адрес и пк автоматически попадает в сеть. И соответственно, с каждым новым сотрудником включающим пк, шанс попасть на занятый адрес возрастает и пк начинает перебор айпи. Причем доходит до верхнего предела и начинает заново перебирать, бывает. Но по карте arp -a и по списку устройств в IP scanner, и в интерфейсе роутера я вижу, что адреса свободны. Время lease в веб интерфейс ставил от одного часа до суток - одинаковый результат
Sevoran, ПК не перебирает IP. DHCP работает по другому.
Discover - Компьютер шлёт в сеть broadcast-пакет "мне нужен адрес".
Offer - Каждый DHCP-сервер, получивший этот пакет, выбирает IP-адрес либо из завязанных на MAC, либо свободный из пула и шлёт компьютеру своё предложение.
Request - Компьютер выбирает из предложенных адресов любой (обычно от того, кто ответил первым) и отправляет серверу запрос на занятие этого адрес.
ACK - Сервер отмечает у себя, что адрес зарезервирован и шлёт компьютеру подтверждение.
При этом сервер может с помощью arp-запроса предварительно проверять, что такой адрес никто не захватил статически. А может и не проверять.
Запустите на компьютере wireshark и посмотрите, что отправляется с компьютера и что ему отвечают.
Спасибо, попробую Wireshark завтра.
По поводу замечания - я понимаю о чем вы, но у меня такое ощущение, что на моменте получения запроса, dhcp сервер не выбирает свободный адрес, а шлет по очереди доступные из пула. То есть, в моменте включения пк, идет запрос от пк на получение адреса, а сервер говорит - бери *.70. Не? Тогда бери *.71 и тд, пока не попадет на свободный адрес. Говорю это потому, что при просмотре ipconfig /all я вижу следующее - условно, получает адрес *.70(Основной). Обновляю /all - получает адрес *.70(повторяющийся). Обновляю - получает адрес 169.*(основной). Обновляю - получает адрес *.71(основной). Ну и тд.
Sevoran, Возможно, у вас какие-то проблемы с DHCP-сервером. Он должен резервировать (lease) у себя выданные адреса с привязкой к MAC на заданное время и при повторном обращении в течение этого времени выдавать тот же адрес. Соответственно, выданные адреса он знает и другому он их предлагать не должен до истечения срока аренды или до явного освобождения их устройством.
Rsa97, думаю, что действительно проблемы, вот и пытаюсь понять какие.)
Для резервации ведь не нужно вручную указывать мак, верно? То есть, если условный пк1 имеет настройку "Автоматически получать ip-адрес", он получил сегодня адрес *.100 и lease стоит на 72 часа, то завтра при включении он должен получить тот же *.100? Я по маку сделал привязку только для одной машины и вне пула dhcp.
Sevoran, Всё верно. Если не настроена привязка к MAC, то всё определяется lease time. Только надо учитывать, что на сервере обычно указывается минимальное и максимальное время аренды, а клиент запрашивает желаемое им время.
Но всё-таки послушайте через wireshark, может второй сервер обнаружится.
Rsa97, "клиент запрашивает желаемое им время" - вот это не совсем понял. На сервере у меня доступно только максимальное время, если ничего не путаю, но там в одном меню все настройки dhcp-сервера, вроде бы. А что значит "Запрашивает желаемое время"?
По второму серверу - опять же, может быть, конечно, проверю обязательно еще раз, но при ipconfig /all разве не должны отображаться разные сервера в таком случае? В моем случае, когда подбирает адрес из моего днс-а, всегда отображает только один корректный адрес роутера
Sevoran, Клиент, например, запрашивает "выдели мне адрес на сутки". Сервер проверяет минимальное и максимальное время аренды и устанавливает время с учётом своих ограничений, например 6 часов.
Некоторые реализации серверов всегда ставят одно и то же время, где-то только максимум ограничивается, где-то и минимум и максимум.
при ipconfig /all разве не должны отображаться разные сервера в таком случае?
Могут отвечать два сервера, просто один всегда быстрее, с него и берёт. Тут лучше просто убедиться, что такого не происходит, чем потом ловить странные глюки.
Rsa97, а как клиент может запросить стандартными средствами айпи на время? Я думал, что айпишник, если не указано со стороны сервера иного, получается до разрыва соединения по какой-либо причине, например - выключение пк.
Да, конечно лучше убедиться. Я так, теорию пытаюсь понять
Sevoran, Выключение компьютера или разрыв соединения, сами по себе, не отменяют аренду. Для этого клиент должен явно послать команду на освобождение адреса или должно истечь время аренды.
При этом активный клиент периодически запрашивает продление аренды.
у меня примерно такая же история была — главный роутер раздаёт, а часть машин всё равно 169 получает. Оказалось промежуточные роутеры в NAT-режиме работали, делали отдельные подсети, броадкаст DHCP туда не проходит. Перевёл в режим точки доступа (кабель в LAN-порт, не в WAN, NAT выключить) — заработало.
Нет-нет, я не сразу, конечно, но дошел до этого тоже, выключил на двух управляемых роутерах и nat и dhcp. Ну и да, перезагрузил их через 10 минут выключения
1. ipconfig /all
Показывает, какой dhcp сервер выдал ip адрес.
2. Пингануть dhcp сервер и по arp -a посмотреть Mac - адрес dhcp сервера.
По пункту 1,2 определяется, что нет нескольких dhcp серверов и нет повтора ip адресов у дубля dhcp.
3. Если конфликт для адреса 192, то это проблема выдачи ip. Если конфликт для адреса 169, то это означает что dhcp сервер не отвечает, а комп сам пытается найти свободный ip.
SunTechnik, По первым двум - делал, мак и айпи корректные, собственно, на паранойе проверял все маки пк, чтоб не прошляпить что-нибудь странное. Но нет, даже левых маков не было ни разу, все бились с оборудованием (ну то есть, е6, 7е и тд, все стандартно, левого не было). Единственное, что в /all был не адрес dns сервера, кроме моего, 192, были 217 и 212, но я так понял - это от ростела днсы. Не углублялся в этот момент, если честно. По третьему пункту - да, тревожит меня именно 192, на 169 все равно.
... 22 пк, 16 МФУ и пару устройств по мелочи ...
...мой пк и еще около 5 вообще не испытывают проблем с получением айпи. На остальных, при перезагрузке пк айпи сбрасывается и пытается перебором снова взять допустимый адрес, ....
...И каждый раз минут по 20 пользователи тратят на получение адресов...
Ищите 2й DHCP, чудес не бывает, Wireshark в помощь
А учитывая то Вы работаете и от качества Вашей работы страдают Ваши сотрудники, а проблему в моменте решить не выходит - потрать 2 часа пропиши статику. А на 1-2 проблемных оставь DHCP и изучай Wireshark что в сети происходит. Как проблема будет локализована и устранена - еще 2 часа вернуть DHCP
Про 2 часа это минут по 5 на комп, для неспешного админа :)