Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.
Миграция статической сети
Прилагаю работоспособный набросок скрипта, который разбирает /var/lib/arpwatch/arp.dat и создаёт из него фрагменты /etc/dhcp/dhcpd.conf и прямой зоны (не смущайтесь названием, уставший был :) BIND (реверсную осмысленно генерировать mkrdns, хотя несложно доработать и скрипт).
Предполагаемый сценарий использования:
[исторически] статическая [виндовая] сеть
включенный в неё маршрутизатор или ноутбук с Linux, arpwatch и данным скриптиком
в первом случае хосты со своими имеющимися MAC/IP придут сами
во втором случае — периодическое сканирование нужных подсетей nmap -sP (ping sweep) для получения откликов
изучение писем arpwatch с целью анализа наличия уже существующих проблем...
изучение, модификация и запуск скриптика
рассмотрение и применение созданных им файлов
Сценарий, при котором он был создан:
исторически статическая виндовая сеть
достаточно спешный переезд на ddns+dhcp с хранением информации в LDAP [...]
обнаружение дубликатов имён хостов на машинах, а также неотмеченных в привязке MAC/IP интерфейсов
имеющиеся на данное время объективные проблемы с обеспечением доступности OpenLDAP в ALT Linux
откат на хранение в обычных файлах
При этом с целью уменьшения вероятности пересечений по IP с так или иначе оставшимися на локально прибитом IP машинами при каждом переезде осуществлялся сдвиг подсети (192.168.0.0 -> 192.168.[234].0 -> 192.168.10.0), чем и объясняется несколько неочевидная логика в конце скрипта. Её назначение таково: в .10 оставить последний октет IP-адреса соответствующим тому, что был в .0 (поскольку в [234] ряд систем успел «слямзить» по несколько адресов, но при этом отметиться в логе arpwatch _с_ занесённым в DDNS именем хоста, которое обычно было более «качественным», чем внесённые в DNS изначально ломом и awk), но при этом hostname взять последний, считая по таймстампам. В общем, довольно специфический случай, но соответствующая обработка выполняется во второй части скрипта и может быть легко выкинута.
TODO
рефакторинг (оно уже не умещается на экран :)
добавление проверки уникальности IP/hostname, не только MAC (hostname проверит dhcpd при старте, но лучше-то сразу)
обобщение обработки снятой информации, изменение логики по умолчанию для более часто встречающихся случаев
поддержка различных режимов (и управление из командной строки)
использование nmblookup -A для получения имён по IP при изначальном отсутствии DNS