DhcpBind/StaticMigration

Материал из ALT Linux Wiki
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.
Merge-arrow.svg
Необходимо перенести содержимое этой статьи в статью DDNS
Вы можете помочь проекту, объединив их.


Миграция статической сети

Прилагаю работоспособный file:arp2dnsdhcp.rb, который разбирает /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