Как удалённо настроить IP, используя только Data Link Layer?
На машинке Debian. Таких машинок в подсети может быть несколько, они отличаются только MAC-ом. Сетевой интерфейс может быть не настроен или настроен неправильно.
Нужен способ (желательно из-под Windows) сделать следующее:
1) «просканировать» подсеть и определить, какие маки соответствуют этим машинкам.
2) на выбранной машине с заданным MAC-ом задать IP, подсеть и шлюз (DHCP не годится: инженер должен прийти один раз с ноутбуком, настроить все машинки и уйти. После этого машины будут работать автономно, даже после перезагрузки).
Т.е. фактически нужна возможность удалённой конфигурации интерфейса с использованием только Data Link Layer.
Вполне допускается (без этого даже не обойтись), чтобы на машинках постоянно работал какой-нибудь сервис, слушающий сеть.
(вопрос от юзера gadub, у которого недостает кармы)
Если на сетевом интерфейсе на настроен адрес, но сам интерфейс включен, то адреса будут из диапазона APIPA, en.wikipedia.org/wiki/APIPA#IPv4
Соответственно нужно лишь просканировать 255 хостов из 254 сетей, итого 64770.
Самый простой вариант сканирования под win* — SoftPerfect Network Scanner www.softperfect.com/products/networkscanner/
Используйте DHCP на ноутбуке для начальной раздачи адресов и простой скрипт, который сам пропишет выданные адреса статически. Если у вас на всех этих машинах есть ssh с авторизацией по ключу и прописан нужный ключ, скрипт можно запустить и с ноутбука и он все сделает сам, а в худшем случае придется логиниться на каждую машину с ее паролем.
тут такое дело: «инженер» не обладает достаточной квалификацией для того, чтобы настроить и поддерживать DHCP-сервер на ноуте. можно только дать ему приложение с парой кнопочек, которое всё сделает за него
кроме того, чтобы заставить целевую машину воспользоваться dhcp-клиентом, надо либо 1) получить к ней доступ по ssh, что не получится сделать в случае ненастроенного IP, 2) или через serial console, что доверять «инженеру» не хочется, либо 3) физически перезагрузить машину, что сделать не получится, т.к. к ней нет физического доступа
Ставите на ноут убунту, клепаете скрипт, который вешается на большую кнопку. Инженер соединяет ком порт ноута с консолью машины 1 сериальным шнурком
По нажатию кнопки скрипт открывает сериальную консоль, логинится туда с плэйнтекст паролем (зашитом в скрипте, откуда его несложно извлечь), и запускает нужные команды, включающие в себя
— ifconfig, поиск маков и соотв им имен интерфейсов
— поиск соответствия найденных маков и искомых IP/netmask/gw в локальном файле
— прописывания этих значений в конфиги системы
— /etc/init.d/networking restart
— ping www.ru ;)
P.S.: Вышенаписанное возможно заработает и в винде под bash и cygwin. Там есть /dev/ttyS0 хотя их и не видит ls. Но скорость ком-порта из скрипта уже не настроишь
1) Чтобы сканировать сеть спокойно — выключите arp на сетевом интерфейсе. В этом случае вы, зная мак, сможете прописать именно его в arp-таблицу и работать только с ним.
2) Попробуйте послать бродкаст и послушайте ответы (tcpdump/wireshark)
3) Если сетевой интерфейс вообще не настроен (то есть ifconfig eth0 0.0.0.0) то методов попасть на него нет, т.к. весь софт по управлению хочет ip. С адресом.
4) Как это делать из-под виндов — откровенно не знаю. Особенно часть, связанную с выключением ARP. Лучше линукс.
И, кстати, DHCP под win* можно запустить и сторонний, т.е. запускаем батником (та самая «большая кнопка для инженера») DHCP сервер, потом в заранее известном диапазоне сканируем сеть. Вуаля.