Приведу пример установки isc-dhcp-server в Ubuntu Server.
Команда установки:
1 | sudo apt-get install isc-dhcp-server |
Откроем первый файл конфигурации:
1 | sudo nano /etc/default/isc-dhcp-server |
Укажем в нем имя инетерфейса с которого будут раздаваться IP-адреса (например eth0):
1 | INTERFACES="eth0" |
Предположим что этому интерфейсу прописан статический адрес в /etc/network/interfaces:
1 2 3 4 | auto eth0 iface eth0 inet static address 192.168.5.1 netmask 255.255.255.0 |
Сделаем резервную копию второго файла конфигурации:
1 | sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup |
Создадим новый:
1 | sudo nano /etc/dhcp/dhcpd.conf |
И внесем в него например следующие параметры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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;» (до закрытия кавычки «}»):
1 2 3 4 | host test { hardware ethernet 00:01:02:aa:bb:cc; fixed-address 192.168.5.101; } |
Несколько хостов удобнее указывать по одной строке:
1 2 | 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 сервер можно командами:
1 2 3 | sudo service isc-dhcp-server status sudo /etc/init.d/isc-dhcp-server status sudo netstat -tulpn | grep :67 |
Перезапустим сервер чтобы изменения в файлах конфигурации вступили в силу:
1 2 | sudo service isc-dhcp-server restart sudo /etc/init.d/isc-dhcp-server restart |
Посмотреть выданные IP можно командой:
1 | sudo less /var/lib/dhcp/dhcpd.leases |
Логи пишутся в syslog (log-facility local7), чтобы отделить их, откроем файл конфигурации syslog в текстовом редакторе:
1 | sudo nano /etc/rsyslog.d/50-default.conf |
И в конце добавим:
1 | local7.* /var/log/dhcp-server.log |
После этого они буду писаться и в /var/log/syslog и в /var/log/dhcp-server.log
Проверим запущен ли DHCP сервер:
1 | sudo netstat -tulpn | grep :67 |
Пример ловли пакетов для анализа проблем через tcpdump:
1 2 | sudo tcpdump port 67 or port 68 -e -n sudo tcpdump ether host e0:cb:4e:c3:7c:44 |
В реальном времени можно смотреть логи так:
1 2 3 | 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