Часто в организациях бывает несколько локальных сетей, получающих интернет через один общий шлюз, обычно работающий под управлением Linux. Каждая локальная сеть подключена к своему сетевому интерфейсу или "положена" в свой VLAN.
Иногда возникает потребность настроить DHCP-сервер для каждой из сетей. Мы уже описывали простую конфигурацию DHCP-сервера, однако она на всех интерфейсах раздаёт одни и те же настройки, в случае с несколькими разными сетями этот вариант не приемлем. Далее будет показано как можно сконфигурировать DHCP-сервер для обслуживания нескольких сетей, подключенных к разным интерфейсам.
Мы будем использовать описанную ранее схему сети, и попробуем добавить в неё DHCP-сервер, который будет выдавать корректные настройки для каждой из подсетей.
Для начала установим DHCP-сервер:
apt-get install -y dhcp3-server
Далее нужно открыть в текстовом редакторе файл "/etc/dhcp3/dhcpd.conf", убираем из него всё содержимое и начинаем писать новую конфигурацию. Для начала впишем базовые опции:
ddns-update-style none; max-lease-time 7200; authoritative; log-facility local7;
Далее для каждой сети нужно написать примерно вот такую секцию:
subnet 192.168.5.0 netmask 255.255.255.0 { # Имя интерфейса interface vlan5; # Имя домена option domain-name "net5.example.com"; # Адрес DNS-сервера option domain-name-servers 192.168.5.1; # Время жизни адреса default-lease-time 600; # Диапазон адресов в этой подсети range 192.168.5.101 192.168.5.110; # Маршрут по умолчанию option routers 192.168.5.1; }
Следующим шагом в файле "/etc/default/dhcp3-server" в строке "INTERFACES" нужно перечислить через пробел имена интерфейсов, на которых должен слушать DHCP-сервер и перезапустить его командой:
invoke-rc.d dhcp3-server restart
Однако в рассматриваемой конфигурации у нас четырнадцать подсетей и ручное написание конфигурации займёт достаточно много времени. Для упрощения решения этой задачи был написан скрипт:
#!/bin/sh # Имя файла конфигурации CONFFILENAME="/etc/dhcp3/dhcpd.conf" # Базовое имя домена DOMAIN="example.com" # Устанавливам DHCP-сервер apt-get install -y dhcp3-server # Записываем базовые опции в файл конфигурации echo "ddns-update-style none;" > ${CONFFILENAME} echo "max-lease-time 7200;" >> ${CONFFILENAME} echo "authoritative;" >> ${CONFFILENAME} echo "log-facility local7;" >> ${CONFFILENAME} IFACELIST="" # Перебираем VLAN'ы for vlanid in `seq 2 15`; do # Добавляем новый интерфейс к списку IFACELIST="${IFACELIST} vlan${vlanid}" # Для каждого VLAN генерируем свою секцию в файле конфигурации echo "subnet 192.168.${vlanid}.0 netmask 255.255.255.0 {" >> ${CONFFILENAME} echo " interface vlan${vlanid};" >> ${CONFFILENAME} echo " option domain-name \"net${vlanid}.${DOMAIN}\";" >> ${CONFFILENAME} echo " option domain-name-servers 192.168.${vlanid}.1;" >> ${CONFFILENAME} echo " default-lease-time 600;" >> ${CONFFILENAME} echo " range 192.168.${vlanid}.101 192.168.${vlanid}.110;" >> ${CONFFILENAME} echo " option routers 192.168.${vlanid}.1;" >> ${CONFFILENAME} echo "}" >> ${CONFFILENAME} done # Записываем в системный файл конфигурации список интерфейсов, на которых будет слушать DHCP-сервер echo "INTERFACES=\"${IFACELIST}\"" > /etc/default/dhcp3-server # Перезапускаем DHCP-сервер invoke-rc.d dhcp3-server restart
Для установки и настройки DHCP-сервера достаточно сохранить листинг под именем "./gen_dhcpd.conf.sh" и выполнить команду:
chmod +x ./gen_dhcpd.conf.sh && sudo ./gen_dhcpd.conf.sh
На этом всё. Приятной работы!
Anonymous 2013-04-01 12:18:05 (#)
так симпатичнее
и так тоже красиво