Материал просмотрен 3,507 раз(а)

Привет всем! Поводом для написания нижерасположенной статьи стало решение мной одной неприятной ситуации, которая произошла в сети. Вдруг у кого-то будет такая же беда – надеюсь, поможет.

Предыстория.

В сети я присваиваю узлам 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:

Windows 7 повторяющиеся IP

Windows 7 повторяющиеся IP

Так, я не понял! Я же назначил прямой IP, вручную! Какой ещё может быть 169.254.???

Windows игнорирует IP назначенные вручную

Windows игнорирует IP назначенные вручную

Дифференциальный диагноз.

Итак, будем искать, откуда исходит проблема.

  1. Открыл журнал событий системы. Там есть ошибка “…повторяющиеся IP адреса…” и дан MAC-адрес узла. Должно быть, кто-то решил самовольно подключить к сети какое-то устройство, которое заняло мой адрес! Будем выслеживать.
    1. Открыл таблицу apr -a, ничего с таким MAC-адресом не обнаружено ни на шлюзе, ни на компе.
    2. Попытка пропинговать этот IP ничего не дала.
    3. Запустил на шлюзе arp-scan на обоих интерфейсах. На внутреннем в этой подсети нет нужного мне MAC-адреса. А вот на внешнем он обнаружился! Причем на всех IP-адресах из сети 192.168.1.0/24. Но как такое может быть? Пробил первые три байта MAC-адреса, указывают на железку Alkatel и Cisco (нашелся там ещё один MAC, тоже много адресов занял).
    4. Так как это активное оборудование, решил, что кто-то перенастроил железяки и они заняли все IP. Странно, что-то не вяжется.
  2. Вытащил сетевой шнурок из своего компьютера, подключил его к ноутбуку с Windows XP на борту, дал IP адрес 192.168.1.9 и…. все заработало! Работает прекрасно, словно и нет никакого дублирования IP адресов. Неужели что-то у меня с сетевой картой?
  3. Поставил дискретную карточку, проблема не исчезла. Всё то же самое. Стоит назначить себе любой другой адрес (внешний IP, или даже 192.168.0.0/24) – всё работает!! А вот на подсеть 192.168.1.0/24, какой бы адрес я не взял – пишет, что дублирование.
  4. Загрузился с LiveCD Frenzy, это FreeBSD, поднял сетевой интерфейс с этим IP (192.168.1.9), всё работает! Значит дело точно не в карте, а где-то в операционке Windows 7. Причем сразу в 4-х операционках одна проблема.
  5. Сменил свой MAC-адрес, отключил VLAN и QoS – проблема осталась.
  6. Система почему-то упрямо игнорировала попытки присвоить IP из этой подсети, выдавая адрес автонастройки (169.254…), но когда давал любой другой – то присваивала его без проблем.
  7. Решил провести поиск DHCP-серверов в сети. Вдруг кто-то по ошибке запустил его или какая-то железяка стала раздавать адреса из моей же подсети и происходит какая-то нелепая коллизия? Никаких DHCP прослушивание трафика не выявило. Копаем дальше. (кстати, искал DHCP с помощью RogueChecker и Wireshark);
  8. Полный ipconfig /all выглядит так:
    ipconfig

    ipconfig

    Ну почему он говорит, что IP повторяющийся? Ведь другие системы с ним работают нормально? И как такое произошло, что ещё 3 машины с Windows 7 получили такую же ошибку?

  9. Решил накинуть Service Pack 1 на систему, вдруг поможет чем-то? Качать пришлось долго, но это особо не помогло.
  10. Переустановка winsock, winsock2, протокола IP, сброс параметров через netsh – ничего не дали.

Решение.

Решение пришло неожиданно.

Решил проверить, вдруг какая-то служба поднимает виртуальный интерфейс на моем компе, совпадающий с IP с тем, который я даю? Ну то есть, зависит ли ругательство “повторяющийся IP” от того, подключен кабель сетевой или нет.

Выдернул кабель, назначил себе IP 192.168.1.9. Думаю, если сейчас ругнется, то на кабель вообще плевать, что-то где-то мешает на локальной системе. А если ругнется, когда подключу кабель – тогда что-то взаимодействует с сетью.

Но система не ругнулась. Более того – заработала! Проверка на других компьютерах алгоритма:

  1. выдернуть кабель
  2. назначить IP
  3. вставить кабель

оказалась успешна! Причем, нужно было физически изымать кабель, просто отключение интерфейса ничего не давало.

И изъятие кабеля с заранее введенным IP, равно как и подключение кабеля с последующим вводом IP тоже не давали результатов! То есть важно было сделать именно(!) в такой(!) последовательности!

Может кому-то поможет тоже.