Перейти до основного вмісту

Условные операторы для DHCP в CentOS 5/6

Иногда нужно чтобы сервер DHCP назначал разные адреса для разных устройств и выдавал различные параметры настройки устройств.Например, для телефонных аппаратов Cisco и для бездисковых тонких клиентов сервер должен назначать различные адреса и файлы загрузки.

Для этого можно воспользоваться операторами условий в файле /etc/dhcpd.conf.
Есть несколько возможностей определения типов устройств, которые обращаются к серверу, например для телефоных аппаратов Cisco могут быть параметры
option host-name
option vendor-class-identifier

в таком виде
substring(option host-name,0,3)="SEP"
substring(option vendor-class-identifier,0,5)="Cisco"

А если использовать MAC-адрес, то нужно использовать параметр
hardware
но его результат нужно преобразовать в текстовый вид с помощью binary-to-ascii в виде
binary-to-ascii(16,8,":",substring(hardware,0,4)) = "1:0:4:13"
binary-to-ascii (16, 8, ":", substring (hardware, 1, 3)) = "0:05:69"

Важно обратить внимание, что hardware возвращает в качестве первого элемента тип сетевого интерфейса, поэтому если нужно только MAC-адрес, то substring должен выбирать строку не с 0 позиции, а с 1, а количество позиций равно количеству пар байтов адреса. Если первый байт равен 00, то в результате будет один 0.

Операторы обработки параметров описаны в
http://linux.die.net/man/5/dhcpd-eval
http://www.ipamworldwide.com/match-expressions.html


Например для указания различных файлов загрузки можно указать что-то типа
if (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:e0:69:95")
{ filename "/newTBoxes/pxelinux.0"; }
else { filename "pxelinux.0"; }
Или например для выдачи различных адресов и серверов TFTP для разных типов устройств
pool { range dynamic-bootp 192.168.1.150 192.168.1.199;
deny members of "phones";
allow members of "other";
next-server 192.168.1.251;
filename "tftpboot/pxelinux.0"; }

pool { range 192.168.1.120 192.168.1.129;
allow members of "phones";
deny members of "other";
next-server 192.168.1.250;
option tftp-server-name "http://192.168.1.250/phset.php?mac={mac}";
server-name "http://192.168.1.250";
filename "phset.php?mac={mac}";

Важно обратить внимание, что в примерах для одних типов устройств указано
deny members of "phones";
allow members of "other";
а для других
allow members of "phones";
deny members of "other"; 


Проверить какое значение получает сервер DHCP можно, если задать в /etc/dhcpd.conf, такие строки
log-facility local7; 
log (debug, binary-to-ascii (16, 8, ":", substring (hardware, 1, 3)));
log(info, concat("Client ",binary-to-ascii(16, 8, ":", substring(hardware, 0, 4))));

Результат можно прочитать в /var/log/boot или в /var/log/messages.

Другие примеры можно найти в
http://honglus.blogspot.com/2012/03/control-isc-dhcp-to-allocate-ip-address.html
http://www.andresd.ru/news/19/
http://www.ossramblings.com/serving-dhcp-based-mac-prefixes
http://apetec.com/linux/CentOS-DHCP-Setup.htm

Коментарі

Популярні дописи з цього блогу

Подключение Cisco 7911/7912 по SIP к Asterisk

Аппарат Cisco IP Phone 7911 по-умолчанию настроен на использование протокола SCCP. Можно в Asterisk указать использование модулей SCCP, но для единообразия удобнее использовать SIP. Для использования протокола SIP в аппарате Cisco 7911 нужно обновить программное обеспечение.  Код обновления для загрузки в аппарат нужно скачать с сервера Cisco: http://tools.cisco.com/support/downloads/pub/Redirect.x?mdfid=278875240 Самое последнее обновление (на данный момент версия 9.3) может не работать c Asterisk, с  версии 9.X Cisco переходит на использование только TCP для SIP соединений. Поэтому для использования UDP удобнее скачать обновление версии 8.5.2 или 8.5.4. Может понадобится  вначале   установить обновление 8.5.2, а затем 8.5.4. Например, для обновления с SCCP11.8-2-2SR-4S надо вначале установить 8.5.2 Обновление будет производится с сервера  TFTP, поэтому д ля начала нужно настроить сервер DHCP, TFTP. Причем в DHCP нужно настроить опцию 150, которая используется для указания аппа

Панель инструментов Remmina в полноэкранном режиме Ubuntu 12.04

Пакет Remmina 0.9.99 (протокол RDP) в системе Ubuntu 12.04 используется как клиент для доступа к терминальному серверу. Обнаружено странное поведение панели инструментов в полноэкранном режиме на терминальном сервере- панель инструментов исчезает и невозможно перейти в другое окно или закрыть сеанс. Для сворачивания окна можно использовать комбинацию клавиш CTRL+F9. Комбинации клавиш задаются в настройках Remmina, а CTRL нужно, чтобы комбинацию не перехватил терминальный сервер. В настройках Remmina есть параметр "Спрятать панель инструментов в полноэкранном режиме". Но иногда, даже если не указан этот параметр, меню не отображается. Можно, не закрывая терминальную сессию, изменить этот параметр на противоположный и после возврата в сессию, меню начнет появляться. В следующий раз перед открытием новых сессий в Remmina нужно правильно указать значение этого параметра. Размер иконок в панели инструментов можно изменить через основное меню Remmina

Изменение размера бумаги LibreOffice(OpenOffice)

Если при установке Ubuntu указать локаль «USA», то размер бумаги по-умолчанию установится «Letter». Если потом через «Система- Администрирование- Локализации» изменить локаль на «Украинский» («Русский»), изменится язык системы, формат даты, но размер бумаги по-умолчанию и единица измерения останутся прежними.  Совет нашел в http://www.nixp.ru/recipes/%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B8-%D0%B2-OpenOffice-org-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%28libpaper%29.html Нужно в терминале запустить sudo dpkg-reconfigure libpaper1 В открывшемся списке выбрать формат А4. Можно напрямую в файле конфигурации (/etc/papersize) указать размер А4. Проверить можно в LibreOffice(OpenOffice) через меню «Формат-Страница». Еще в LibreOffice(OpenOffice) нужно изменить единицу измерения через «Сервис- Параметры- LibreOffice Writer- Общие»