Translations of this page:

Dhcphosts

Модуль управления DHCP сервером.
Особая благодарность dreamer_538
Модуль автоматически создаёт конфигурационный файл для DHCP сервера и вносит в него всех пользователей системы, в которых активизирован сервис DHCP. Система не учитывает баланс пользователя, только дату окончания аккаунта или сервиса и активность пользователя.

Возможности

  • Автоматическое создание конфигурационного файла ISC DHCP
  • Привязка IP к MAC
  • Передача пользователям дополнительных маршрутов
  • Система гостевого входа
  • Option 82
  • static arp, ipguard (FreeBSD), ipsentinel (Linux)
  • Управление DHCP на удалённом сервере
  • Мониторинг выданных адресов
  • Использование нескольких серверов доступа
  • Гостевой вход

Установка

Создать таблицы в базе.

# mysql -D abills < db/Dhcphosts.sql

Подключение модуля. abills/libexec/config.pl

@MODULES = (
          'Dhcphosts'
          );

Настройка

(В качестве примера используется машина под управлением FreeBSD)

Собираем ICS DHCP сервер

# cd /usr/ports/net/isc-dhcp3-server/
# make
# make install

Для старта при загрузке системы приписываем в /etc/rc.conf

dhcpd_enable="YES"                          
dhcpd_ifaces="em1"   # интерфейс, на котором будет работать сервер

Для отделения логов DHCP сервера от других сообщений системы добавить в /etc/syslog.conf

!dhcpd
*.* /var/log/dhcpd.log
# touch /var/log/dhcpd.log
# killall -1 syslogd

/etc/newsyslog.conf

/var/log/dhcpd.log 600 5 100 * JC

Сообщения

Jan 19 17:12:28 null dhcpd: DHCPDISCOVER from 00:07:e9:19:72:1b via fxp0: network ne3: no free leases

Пользователь не может авторизироваться, так как его MAC не в базе.

Jan 19 18:08:19 null dhcpd: DHCPDISCOVER from 00:07:e9:19:72:1b via fxp0
Jan 19 18:08:19 null dhcpd: DHCPOFFER on 10.128.10.10 to 00:07:e9:19:72:1b via fxp0
Jan 19 18:08:19 null dhcpd: DHCPREQUEST for 10.128.10.10 (10.128.0.1) from 00:07:e9:19:72:1b via fxp0
Jan 19 18:08:19 null dhcpd: DHCPACK on 10.128.10.10 to 00:07:e9:19:72:1b via fxp0

Пользователь успешно подключился

Ведение лога в базе данных
правим /etc/syslog.conf

!dhcpd
*.*   |/usr/abills/libexec/dhcp_log2db.pl
# cd /usr/abills/libexec/
# ln -s ../Abills/modules/Dhcphosts/dhcp_log2db.pl
# killall -1 syslogd

sudo

sudo будет использоваться для переконфигурации сервера.

# cd /usr/ports/security/sudo && make && make install && make clean

Прописываем возможность запуска сервиса системой. /usr/local/etc/sudoers

# Для FreeBSD: 
#Allow dhcpd operation without password for webserver user
www   ALL = NOPASSWD: /usr/local/etc/rc.d/isc-dhcpd

Option 82

При использовании Options 82 в настройках NAS нужно:

  • Тип сервера доступа

other

  • указать MAC адрес коммутатора. MAC адрес указывается в RADIUS парах опцией

Called-Station-Id='00:21:5a:50:4e:a3';

При использовании данной опции закоментируйте в шаблоне dhcphosts_dhcp_conf_subnet.tpl

 #deny unknown-clients;
 #authoritative;

редактор шаблонов (/ System configuration/ Misc/ Template/)

Команды для настройки коммутатора L2 (DES-3526/DES-3550):

http://www.dlink.co.il/ru/faq/62/228.html #Маршрутизатор по умолчанию

create iproute default 30.51.8.11  
# адрес DHCP сервера
config dhcp_relay add ipif System 10.51.8.1 
config dhcp_relay option_82 state enable 
enable dhcp_relay

Если все правильно настроено в логе DHCP сервера Вы должны видеть следующие сообщения: /var/log/dhcpd.log

Oct 19 18:26:36 billing dhcpd: DHCPDISCOVER from 00:13:77:34:5f:a8 via vlan3
Oct 19 18:26:37 billing dhcpd: DHCPOFFER on 172.23.1.55 to 00:13:77:34:5f:a8 (Druid) via vlan3
Oct 19 18:26:40 billing dhcpd: Lease for 172.23.1.55 is connected to interface 0/3 (add 1 to port number!), VLAN  on switch 1:32
Oct 19 18:26:40 billing dhcpd: Lease for 172.23.1.55 raw option-82 info is CID: 0.3 AID: ac.17.1.32
Oct 19 18:26:40 billing dhcpd: DHCPDISCOVER from 00:13:77:34:5f:a8 (Druid) via vlan3

IP guard

Дополнительное расширение для модуля Dhcphosts позволяет управлять самостоятельным присвоением IP-адресов пользователями. Сиcтема автоматически формирует список IP/MAC-адресов, с которых и которым можно работать в сети. Все остальные пользователи при подключении к сети получают сообщение, что их сетевой адрес уже используется другим устройством.

config.pl

$conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC»; Формат пар для FreeBSD ipguard
MAC - контролировать только MAC
MAC/IP контролировать MAC и IP-связки
$conf{DHCPHOSTS_IPGUARD_DENY_TPL}=»»; Формат записи запрещено для файла конфигурационного ipguard.
Переменные
%IP% - IP адрес
%MAC% - MAC адрес
%LOGIN% - Логин
%DEPOSIT% - Депозит. Появляется только при влючённой опции $conf{DHCPHOSTS_DEPOSITCHECK}
%UID% - ID-пользователя
%EXPIRE% - Дате истечения аккаунта

Примеры:
Linux ipsentinel:
$conf{DHCPHOSTS_IPGUARD_DENY_TPL}='%IP% %MAC% # %LOGIN%; %STATUS%; %DEPOSIT%';
FreeBSD ipguard:
$conf{DHCPHOSTS_IPGUARD_DENY_TPL}=»»;
$conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}=»»; Формат записи разрешено для файла конфигурационного ipguard.
Примеры:
Linux ipsentinel:
$conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}='%IP%@!%MAC% # %LOGIN%; %STATUS%; %DEPOSIT%';
FreeBSD ipguard:
$conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}='%MAC% %IP% # %LOGIN%; %STATUS%; %DEPOSIT%';

Для внесение статических записей / System configuration/ DHCP Networks/ IP guard/ Static/. Правила, тут объявленные, появляются в конце списка общих правил.

FreeBSD

Для ОС FreeBSD программа IP Guard. На базе этой программы и производится контроль.

# cd /usr/ports/security/ipguard && make && make install && make clean
# cp  /usr/local/etc/rc.d/ipguard.sh.sample /usr/local/etc/rc.d/ipguard.sh
# chmod +x /usr/local/etc/rc.d/ipguard.sh

вносим изменения в файлы /usr/local/etc/rc.d/ipguard.sh

iface=fxp1
daemon_flags="-n 2 -u 60 -x -f /usr/abills/var/ipguard"

Запускаем

# /usr/local/etc/rc.d/ipguard.sh start

Для просмотра MAC/IP-пар, которые попали в список разрешённых, нужно открыть меню системы

/ System configuration/ DHCP Networks/ IP guard/

Вид для $conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC»;

00:07:e9:19:72:1b 0.0.0.0 # Login: aa1
00:07:e9:19:72:12 0.0.0.0 # Login: aa1
00:07:e9:19:72:22 0.0.0.0 # Login: aa1

Вид для $conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC/IP»;

00:07:e9:19:72:1b 10.128.10.10 # Login: aa1
00:07:e9:19:72:12 10.128.10.11 # Login: aa1
00:07:e9:19:72:22 10.128.10.15 # Login: aa1

Linux

Для ОС Linux программа ipsentinel

Вид:

10.128.0.109@!00:00:00:00:11:00 # aa1 ACCEPT
10.11.11.12@!00:00:00:ee:aa:01 # aa1 ACCEPT
10.0.0.10 00:16:36:a1:6d:75 # aa1 DENY

ARP Static

Занесение статических записей в ARP таблицу

abills/libexec/config.pl

$conf{DHCPHOSTS_IPGUARD_FORMAT}="MAC/IP";
$conf{DHCPHOSTS_RECONFIGURE}="/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart; ".
 '/bin/cat /usr/abills/var/ipguard | /usr/bin/awk \'$1 !~ /#/ { print $2 " " $1 } \' > /usr/abills/var/arp_static ;'.
 ' /usr/local/bin/sudo /usr/sbin/arp -ad ;'.
 ' /usr/local/bin/sudo /usr/sbin/arp -f /usr/abills/var/arp_static ';

/usr/local/etc/sudoers

www   ALL = NOPASSWD: /usr/sbin/arp

Пример управления удалённым сервером доступа

  • Создание dhcp конфигурационного файла на удалённом NAS.
  • Переконфигурация DHPC-сервера.
  • Создание статической ARP таблицы
$conf{DHCPHOSTS_RECONFIGURE}='/usr/bin/scp -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin '.
  '/usr/local/etc/dhcpd.conf '.
  'abills_admin\@10.10.20.16:/usr/local/etc/dhcpd.conf; '.
'/usr/bin/scp -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin /usr/abills/var/ipguard '.
  'abills_admin\@10.10.20.16:/usr/abills/var/ipguard; '.
'/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin abills_admin\@10.10.20.16 "/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart;' .
'/bin/cat /usr/abills/var/ipguard | /usr/bin/awk \'\$1 !~ /#/ { print \$2 \" \" \$1 }\' > /usr/abills/var/arp_static ;'.
' /usr/local/bin/sudo /usr/sbin/arp -ad ;'.
' /usr/local/bin/sudo /usr/sbin/arp -f /usr/abills/var/arp_static "';

Гостевой аккаунт

Гостевой аккаунт предполагает возможность зарегистрированным и авторизированным (имеющим право пользоваться сетью с учётом их депозита или других параметров) пользователям пользоваться сетью и получать свои статические IP-адреса, в тоже время незарегистрированные и неавторизированные пользователи попадают в гостевую сеть. В последующем нужно настроить гостевую сеть с ограниченным доступом (доступ только к пользовательскому порталу и т.д. ).

Для включения формы заполнения данных пользователем внесите в конфигурационный файл следующие опции.

$conf{DV_IP_DISCOVERY}=«1:129.168.0.0/24;NET_ID:ADDRESS_RANGE»; Регистрация IP/MAC адреса клиента для последующей выдачи статического адреса данному клиенту в сети. Система автоматически ищет следующий свободный адрес и присваивает его клиенту прописывая в таблице адресов DHCP.

NET_ID - в какую сеть регистрировать клиента.

ADDRESS_RANGE - диапазон адресов куда должен попадать незарегистрированный клиент. Если не указать эту опцию все клиенты попадают в общую сеть указанную в первом параметре. Шаблоны сравнения указываются через точку с запятой.
Настройка

/ System configuration/ DHCP Networks/ Создаются две сети для гостевого и для зарегистрированного доступа. В первой сети для гостевого доступа нужно указать рендж выдаваемых IP-адресов.

IP Range: Указываем IP, которые должны выдаваться в гостевом режиме

Dhcphosts. DHCP Guest Account

Для авторизированной сети этот параметр оставить пустым.

Dhcphosts. DHCP Auth Account

Шаблон описания зарегистрированного пользователя dhcphosts_dhcp_conf_host.tpl

# dhcphosts_dhcp_conf_host.tpl
# Login: %LOGIN%
host %HOSTNAME% {
  hardware ethernet %MAC%;
  fixed-address %IP%;
  option routers %ROUTERS%;
  %BOOT_FILE%
  option routers 10.100.20.1;
}

10.100.20.1 - шлюз для зарегистрированных/авторизированных пользователей

leases2db.pl

При использовании DHCP сервера на сервере отдельном от биллинга целесобразно использовать для синхронизации с биллингом и мониторинга - агент экспорта leases2db.pl, который занимается експортом данных из dhcpd.leases в базу данных биллинга.
Проверка и экспорт данных осуществляется через промежуток времени указанны при старте (по умолчанию каждые 20 секунд) при условии что за этот промежуток времени был изменён файл dhcpd.leases.
leases2db.pl должен быть запущен на сервер с DHCP сервером. Агент работает как демон и автоматически проверяет при старте присутствие дублирующих процессов.
Установка:

# cd /usr/abills/libexec/
# ln -s ../Abills/modules/Dhcphosts/leases2db.pl

Для старта используется команда

# /usr/abills/libexec/leases2db.pl -d LEASES=/var/db/dhcpd.leases

Стоп /usr/abills/libexec/leases2db.pl

# /usr/abills/libexec/leases2db.pl stop

Параметры:

-d Запустить как демон
-h помощь в использовании программы
LEASES=… путь к dhcpd.leases файлу
UPDATE_TIME=… Время обновления
DEBUG=… Режим отладки
NAS_ID= ИД сервера доступа (по умолчанию 0)

Для включения в мониторинге просмотра данной информации нужно указать опцию $conf{DHCPHOSTS_LEASES}='db';

ABillS

Файл конфигурации abills/libexec/config.pl

$conf{DHCPHOSTS_DEPOSITCHECK}=0.00; Указывается сумма на счёту при которой выдавать IP адрес пользователям.
$conf{DHCPHOSTS_EXT_DEPOSITCHECK}=0.00; Указывается сумма на дополнительном счёту при которой выдавать IP адрес пользователям. Данный параметр имеет больший приоритет чем $conf{DHCPHOSTS_DEPOSITCHECK}
$conf{DHCPHOSTS_CONFIG}=»/usr/local/etc/dhcpd.conf»; Файл конфигурации для DHCP-сервера.
По умолчанию /usr/local/etc/dhcpd.conf.
Обязательно поставьте на файл права, с которыми работает WEB-сервер.
$conf{DHCPHOSTS_RECONFIGURE}=»/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart»; Команда для перезапуска DHCP-сервера. Так, как для запуска сетевого сервиса нужны права суперпользователя (по умолчанию root), система перезапускает демон, используя sudo.
$conf{DHCPHOSTS_LEASES}=»/var/db/dhcpd/dhcpd.leases»; Расположение dhcpd.leases файла для мониторинга выдачи IP адресов. В данный файл не попадают статически прописанные на MAC адрес адреса.

Сети

/ System configuration/ DHCP Networks/
Заведение сетей для DHCP-сервера. Есть возможность задавать статические маршруты, просматривать конфигурационный файл и перезагружать DHCP-сервер.

Network name: Название сети
Network address: Сетевой адрес.
(Например: 10.10.1.0)
NETMASK: Маска сети
Default router: Маршрут по умолчанию.
IP Range: Диапазон выдаваемых адресов.
Coordinator: Координатор сети
Phone: Номер телефона координатора сети
DNS: DNS (Domain Name Server). Сервер доменных имён
DOMAINNAME: Домен по умолчанию
Disable: Отключить сеть

Список клиентов

/ Customers/ Logins/ DHCP/

Управления пользователем

/ Customers/ Logins/ Information/ Services/ DHCP/

Заведение пользователя для выдачи адреса DHCP-сервером

Host name: Название хоста
Networks: Сеть
IP: IP-адрес, который выдавать клиенту
Auto: Авто присвоение следующего свободного адреса из сети клиенту. Адреса берутсья из поля IP Range сети.
MAC: MAC клиента
Expire: Время окончания действия правила
Disable: Блокировать
Comments: Комментарии
Option 82
Port Порт комутатора
VID Vlan ID
NAS Привязать к коммутатору

Мониторинг выданных адресов

/ Monitoring/ DHCP/

В мониторинге отображаются только адреса, выданные из пула адресов. Статические адреса, привязанные к MAC, в мониторинге не отображаются.

Ошибки ISC-DHCP

Ошибки которые отображаются в файле /var/log/dhcpd.log

  • Все сделал DHCP стартовал но не раздаёт адреса.

Скорее всего у Вас не одна из сетей не настроена слушать запросы на Ваших интерфейсах.

  • Пересечение адресов
/usr/local/etc/dhcpd.conf line 142: lease 10.133.3.26 is declared twice!
pool { range 10.133.3.26;
                        ^

Проверте не пересекаются ли у Вас ренжи (rage) выдаваемых адресов

dhcp_tools.pl

Набор дополнительных утилит для работы с DHCP

  • автоматическое занесения IP/MAC адресов пользователей в модуль Dhcphosts.

Работает в двух режимах:

  1. Занесение IP/MAC связок пользователей из файла.

Формат файла:

LOGIN[TAB]IP[TAB]MAC[TAB]PORTS[TAB]NAS_ID[TAB]OPTION_82[TAB]VID[TAB]HOSTNAME
  1. Режим ARP монитора система вытаскивает IP/MAC связки из arp таблицы сравнивает их с онлайн пользователями и заносит в базу
  • Перенос абонентов из одной сети в другую.
# dhcp_tools.pl ADDRESS_SHIFT="NEW_NETWORK_ID:SRC_NET:DST_NET" 
NEW_NETWORK_ID номер в какую сеть перенести абонентов
SRC_NET Поточная сеть абонентов. Маска сети /24 (255.255.255.0)
DST_NET Новая сеть абонентов. Маска сети /24 (255.255.255.0)

Аргументы программы

NETWORK ИД сети для ARG grab.
FILE Режим парсера файла
ADDRESS_SHIFT Перенос абонентов из одной сети в другую
DEBUG Режим отладки

Дополнительно

 
abills/docs/modules/dhcphosts/ru.txt · Последние изменения: 2010/03/02 17:03 От asmodeus
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki