Pull to refresh

Модернизация сетевого окружения Windows

Reading time3 min
Views4.8K
В очередной раз делал контроллер домена из samba и не получилось сделать так, чтобы на компьютерах домена было нормальное сетевое окружение.

Немного погуглив, решений не то, чтобы не нашёл, но наткнулся на одну статью, которая меня очень вдохновила. К сожалению, реализовать содержимое статьи у себя в офисе я не смог, т.к. не веду офисные компьютеры в DNS (нет необходимости), зато есть isc-dhcpd, в котором есть всё, что необходимо. В итоге родился скрипт (ссылка раз и ссылка два), который делает следующее:
  1. сканирует сеть, указанную в переменной $network по порту 139 с таймаутом подключения 0.01 секунды, который позволяет за несколько секунд пробежаться по /24 сети из 255 адресов;
  2. если обнаруживает адрес, где порт открыт, то спрашивает информацию по этому адресу через omshell у isc-dhcpd;
  3. если информация есть, то добавляет её в самбовский browse.dat.
В итоге мы имеем:
  • отсутствие мусора в сетевом окружении: все компьютеры офисной сети в одной рабочей группе;
  • отсутствие тормозов при открытии сетевого окружения;
  • любая частота обновления списка компьютеров сетевого окружения.
Но есть и один минус: в сетевом окружении не будет видно описаний компьютеров: неоткуда их взять. Если у кого есть идеи, где взять описания компьютеров для сетевого окружения, то напишите, пожалуйста, в комментарии. Как вариант можно взять какую-нибудь книжку и вставлять при каждом новом запуске в описания компьютеров сетевого окружения случайные сочетания слов из неё. Будет бесполезно, но забавно.

Для того, чтобы всё это взлетело, в isc-dhcp нужно включить OMAPI. Для этого в конфиг нужно добавить вот такие строчки:
key keyname { algorithm hmac-md5; secret "keyself"; }
omapi-port 7911;
omapi-key keyname;

Сгенерировать сам ключ можно, например, с помощью генератора от named:
dnssec-keygen -a HMAC-MD5 -b 256 -n HOST keyname

После перезапуска dhcpd, этот демон должен слушать, кроме всего прочего, ещё и порт 7911 по протоколу tcp. Теперь на всякий случай проверим, как работает OMAPI:
omshell
> server 192.168.10.2
> port 7911
> key keyname keyself
> connect
obj: <null>
> new lease
obj: lease
> set ip-address=192.168.10.99
obj: lease
ip-address = c0:a8:0a:63
> open
obj: lease
ip-address = c0:a8:0a:63
state = 00:00:00:02
dhcp-client-identifier = 01:00:21:63:d1:b2:54
client-hostname = "rooot"
subnet = 00:00:00:03
pool = 00:00:00:04
hardware-address = 00:21:63:d1:b2:54
hardware-type = 00:00:00:01
ends = 4b:0f:c2:98
starts = 4b:0f:c1:6c
tstp = 00:00:00:00
tsfp = 00:00:00:00
atsfp = 00:00:00:00
cltt = 00:00:00:00
то, что помечено знаком ">" — мои команды, остальное — ответы omshell. Как видите, я получил запись информацию о своём компьютере.

Кроме того, вышеуказанный скрипт пишет в browse.dat данные в utf-8, а это значит что в smb.conf должно быть вот это:
display charset = utf-8
unix charset = utf-8
dos charset = cp866
Если в Вашем smb.conf первые две переменные имеют значение отлично от utf-8, то необходимо найти в тексе скрипта подстроку «utf-8» и поменять её на то, что используется у Вас.

И на последок краткое описание параметров из скрипта:
$network = '192.168.10.0/24' сеть, которую скрипт будет сканировать
$dhcp_server = '192.168.10.2' адрес dhcp сервера, к которому скрипт будет обращаться через omshell
$dhcp_server_timeout = '1' таймаут, который выставляется для ответов от dhcpd через omshell
$dhcp_key = 'maverick dhcp_key' ключ, который мы сгенерировали с помощью dnssec-keygen
$browser_file = '/var/db/samba/browse.dat' в этот самбовский файл скрипт будет складывать результирующий список компьютеров для сетевого окружения — то, ради чего всё затевалось
$browser_domain имя Вашего домена
$browser_head заголовок файла browse.dat. обычно должен включать в себя описание домена и его контроллера
Как настраиваться isc-dhcpd для раздачи адресов и samba в роли контроллера домена рассказывать не буду. На эту тему в сети более чем достаточно всяких how-to.
Tags:
Hubs:
+5
Comments6

Articles

Change theme settings