Привет всем! Поводом для написания нижерасположенной статьи стало решение мной одной неприятной ситуации, которая произошла в сети. Вдруг у кого-то будет такая же беда – надеюсь, поможет.
Предыстория.
В сети я присваиваю узлам IP-адреса из диапазона 192.168.1.0/24, есть выделенный шлюз, который NAT-ит в Internet. На моем компьютере адрес 192.168.1.9, на двух соседних (тестовые) соответственно *.8 и *.7. На одном из них занимался разработкой на Ruby, второй был нужен для PC-3000. И вот, прихожу как-то с обеда, отключают электричество. Мой комп *.9 на UPS, остальные два – без, тут же вырубаются.
Симптомы.
Электричество включили через пару минут. Запускаю компы, вдруг проблема – не коннектятся к сети. Не пингуется внешка (8.8.8.8), пытаюсь пропинговать до шлюза… Тоже беда. Пытаюсь пропинговать свой комп *.9 – не идут пакеты. Смотрю ipconfig:
Так, я не понял! Я же назначил прямой IP, вручную! Какой ещё может быть 169.254.???
Дифференциальный диагноз.
Итак, будем искать, откуда исходит проблема.
- Открыл журнал событий системы. Там есть ошибка “…повторяющиеся IP адреса…” и дан MAC-адрес узла. Должно быть, кто-то решил самовольно подключить к сети какое-то устройство, которое заняло мой адрес! Будем выслеживать.
- Открыл таблицу apr -a, ничего с таким MAC-адресом не обнаружено ни на шлюзе, ни на компе.
- Попытка пропинговать этот IP ничего не дала.
- Запустил на шлюзе arp-scan на обоих интерфейсах. На внутреннем в этой подсети нет нужного мне MAC-адреса. А вот на внешнем он обнаружился! Причем на всех IP-адресах из сети 192.168.1.0/24. Но как такое может быть? Пробил первые три байта MAC-адреса, указывают на железку Alkatel и Cisco (нашелся там ещё один MAC, тоже много адресов занял).
- Так как это активное оборудование, решил, что кто-то перенастроил железяки и они заняли все IP. Странно, что-то не вяжется.
- Вытащил сетевой шнурок из своего компьютера, подключил его к ноутбуку с Windows XP на борту, дал IP адрес 192.168.1.9 и…. все заработало! Работает прекрасно, словно и нет никакого дублирования IP адресов. Неужели что-то у меня с сетевой картой?
- Поставил дискретную карточку, проблема не исчезла. Всё то же самое. Стоит назначить себе любой другой адрес (внешний IP, или даже 192.168.0.0/24) – всё работает!! А вот на подсеть 192.168.1.0/24, какой бы адрес я не взял – пишет, что дублирование.
- Загрузился с LiveCD Frenzy, это FreeBSD, поднял сетевой интерфейс с этим IP (192.168.1.9), всё работает! Значит дело точно не в карте, а где-то в операционке Windows 7. Причем сразу в 4-х операционках одна проблема.
- Сменил свой MAC-адрес, отключил VLAN и QoS – проблема осталась.
- Система почему-то упрямо игнорировала попытки присвоить IP из этой подсети, выдавая адрес автонастройки (169.254…), но когда давал любой другой – то присваивала его без проблем.
- Решил провести поиск DHCP-серверов в сети. Вдруг кто-то по ошибке запустил его или какая-то железяка стала раздавать адреса из моей же подсети и происходит какая-то нелепая коллизия? Никаких DHCP прослушивание трафика не выявило. Копаем дальше. (кстати, искал DHCP с помощью RogueChecker и Wireshark);
- Полный ipconfig /all выглядит так:
Ну почему он говорит, что IP повторяющийся? Ведь другие системы с ним работают нормально? И как такое произошло, что ещё 3 машины с Windows 7 получили такую же ошибку?
- Решил накинуть Service Pack 1 на систему, вдруг поможет чем-то? Качать пришлось долго, но это особо не помогло.
- Переустановка winsock, winsock2, протокола IP, сброс параметров через netsh – ничего не дали.
Решение.
Решение пришло неожиданно.
Решил проверить, вдруг какая-то служба поднимает виртуальный интерфейс на моем компе, совпадающий с IP с тем, который я даю? Ну то есть, зависит ли ругательство “повторяющийся IP” от того, подключен кабель сетевой или нет.
Выдернул кабель, назначил себе IP 192.168.1.9. Думаю, если сейчас ругнется, то на кабель вообще плевать, что-то где-то мешает на локальной системе. А если ругнется, когда подключу кабель – тогда что-то взаимодействует с сетью.
Но система не ругнулась. Более того – заработала! Проверка на других компьютерах алгоритма:
- выдернуть кабель
- назначить IP
- вставить кабель
оказалась успешна! Причем, нужно было физически изымать кабель, просто отключение интерфейса ничего не давало.
И изъятие кабеля с заранее введенным IP, равно как и подключение кабеля с последующим вводом IP тоже не давали результатов! То есть важно было сделать именно(!) в такой(!) последовательности!
Может кому-то поможет тоже.
Еще бы понять точно, в чем был баг. Однозначно дело в винде, на какая именно. На вирус как-то тоже непохоже. Может, кто в комментах напишет реальный источник проблемы
Попахивает именно глюком, потому что произошел массово.. Если удастся повторить его искусственно, будет забавно.
Вообще ситуация интересная. Мне кажется, проблема могла быть в arp кэше коммутатора. Коммутатор выключался во время выключения света?
Да были подобные мысли! Но коммутатор неуправляемый, + я менял свой MAC-адрес. + ко всему заходил же с Frenzy, всё работало классно, ведь адаптер был тот же, и мак адрес, соответственно, тоже..