Приведу пример установки isc-dhcp-server в Ubuntu Server.
Команда установки:
sudo apt-get install isc-dhcp-server
Откроем первый файл конфигурации:
sudo nano /etc/default/isc-dhcp-server
Укажем в нем имя инетерфейса с которого будут раздаваться IP-адреса (например eth0):
INTERFACES="eth0"
Предположим что этому интерфейсу прописан статический адрес в /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.5.1
netmask 255.255.255.0
Сделаем резервную копию второго файла конфигурации:
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup
Создадим новый:
sudo nano /etc/dhcp/dhcpd.conf
И внесем в него например следующие параметры:
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
shared-network cable {
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.10 192.168.5.254;
option domain-name-servers 192.168.5.1, 8.8.4.4;
option domain-name "example.net";
option routers 192.168.5.1;
option time-servers 192.168.5.1;
option broadcast-address 192.168.5.255;
default-lease-time 600;
max-lease-time 7200;
}
}
Чтобы зарезервировать IP-адрес конкретному устройству добавим после «max-lease-time 7200;» (до закрытия кавычки «}»):
host test {
hardware ethernet 00:01:02:aa:bb:cc;
fixed-address 192.168.5.101;
}
Несколько хостов удобнее указывать по одной строке:
host test { hardware ethernet 00:01:02:aa:bb:cc; fixed-address 192.168.5.101; }
host test2 { hardware ethernet 00:01:aa:aa:bb:cc; fixed-address 192.168.5.104; }
Проверить запущен ли dhcp сервер можно командами:
sudo service isc-dhcp-server status
sudo /etc/init.d/isc-dhcp-server status
sudo netstat -tulpn | grep :67
Перезапустим сервер чтобы изменения в файлах конфигурации вступили в силу:
sudo service isc-dhcp-server restart
sudo /etc/init.d/isc-dhcp-server restart
Посмотреть выданные IP можно командой:
sudo less /var/lib/dhcp/dhcpd.leases
Логи пишутся в syslog (log-facility local7), чтобы отделить их, откроем файл конфигурации syslog в текстовом редакторе:
sudo nano /etc/rsyslog.d/50-default.conf
И в конце добавим:
local7.* /var/log/dhcp-server.log
После этого они буду писаться и в /var/log/syslog и в /var/log/dhcp-server.log
Проверим запущен ли DHCP сервер:
sudo netstat -tulpn | grep :67
Пример ловли пакетов для анализа проблем через tcpdump:
sudo tcpdump port 67 or port 68 -e -n
sudo tcpdump ether host e0:cb:4e:c3:7c:44
В реальном времени можно смотреть логи так:
tail -F /var/log/syslog | grep dhcpd
tail -F /var/log/syslog | grep 192.168.1.5
tail -F /var/log/syslog | grep e0:cb:4e:c3:7c:44
Смотрите также мои статьи:
- Что такое DHCP и как он работает?
- IPTables правила для DHCP
- Скрипт конфигурации DHCP
- Установка ISC DHCP для ABillS
- Настройка DHCP+TFTP для DOCSIS
- Утилита для захвата и анализа пакетов tcpdump