DHCP server

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

DHCP server

Непрочитанное сообщение Olej » 23 апр 2023, 14:36

Понадобился мне автономный DHCP сервер ...

У нас уже есть тема с точно таким же названием DHCP server.
Но :-( :
1. Там обсуждение начато и заканчивается 2015-м годом :-o :-(
2. На то время были в моде совсем другие реализации DHCP сервер для Linux.

Поэтому оставим намерение что-то там продолжать...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

DHCP server

Непрочитанное сообщение Olej » 24 апр 2023, 23:08

Olej писал(а):
23 апр 2023, 14:36
Понадобился мне автономный DHCP сервер

Код: Выделить всё

olej@esprimop420:~$ aptitude search isc-dhcp-server
p   isc-dhcp-server                                   - ISC DHCP server for automatic IP address assignment         
p   isc-dhcp-server-ldap                              - DHCP server that uses LDAP as its backend                   

Код: Выделить всё

olej@esprimop420:~$ sudo apt install isc-dhcp-server
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Будут установлены следующие дополнительные пакеты:
  libirs-export161 libisccfg-export163 policycoreutils selinux-utils
Предлагаемые пакеты:
  isc-dhcp-server-ldap
Следующие НОВЫЕ пакеты будут установлены:
  isc-dhcp-server libirs-export161 libisccfg-export163 policycoreutils selinux-utils
Обновлено 0 пакетов, установлено 5 новых пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено.
Необходимо скачать 1.703 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 6.915 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://deb.debian.org/debian bullseye/main amd64 libisccfg-export163 amd64 1:9.11.19+dfsg-2.1 [272 kB]
Пол:2 http://deb.debian.org/debian bullseye/main amd64 libirs-export161 amd64 1:9.11.19+dfsg-2.1 [245 kB]
Пол:3 http://deb.debian.org/debian bullseye/main amd64 isc-dhcp-server amd64 4.4.1-2.3+deb11u1 [553 kB]
Пол:4 http://deb.debian.org/debian bullseye/main amd64 selinux-utils amd64 3.1-3 [142 kB]
Пол:5 http://deb.debian.org/debian bullseye/main amd64 policycoreutils amd64 3.1-3 [491 kB]
Получено 1.703 kB за 0с (3.944 kB/s)     
Предварительная настройка пакетов …
Выбор ранее не выбранного пакета libisccfg-export163.
(Чтение базы данных … на данный момент установлено 350833 файла и каталога.)
Подготовка к распаковке …/libisccfg-export163_1%3a9.11.19+dfsg-2.1_amd64.deb …
Распаковывается libisccfg-export163 (1:9.11.19+dfsg-2.1) …
Выбор ранее не выбранного пакета libirs-export161.
Подготовка к распаковке …/libirs-export161_1%3a9.11.19+dfsg-2.1_amd64.deb …
Распаковывается libirs-export161 (1:9.11.19+dfsg-2.1) …
Выбор ранее не выбранного пакета isc-dhcp-server.
Подготовка к распаковке …/isc-dhcp-server_4.4.1-2.3+deb11u1_amd64.deb …
Распаковывается isc-dhcp-server (4.4.1-2.3+deb11u1) …
Выбор ранее не выбранного пакета selinux-utils.
Подготовка к распаковке …/selinux-utils_3.1-3_amd64.deb …
Распаковывается selinux-utils (3.1-3) …
Выбор ранее не выбранного пакета policycoreutils.
Подготовка к распаковке …/policycoreutils_3.1-3_amd64.deb …
Распаковывается policycoreutils (3.1-3) …
Настраивается пакет selinux-utils (3.1-3) …
Настраивается пакет policycoreutils (3.1-3) …
Настраивается пакет libisccfg-export163 (1:9.11.19+dfsg-2.1) …
Настраивается пакет libirs-export161 (1:9.11.19+dfsg-2.1) …
Настраивается пакет isc-dhcp-server (4.4.1-2.3+deb11u1) …
Generating /etc/default/isc-dhcp-server...
invoke-rc.d: policy-rc.d denied execution of start.
Обрабатываются триггеры для libc-bin (2.31-13+deb11u5) …
Обрабатываются триггеры для man-db (2.9.4-2) …

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

DHCP server

Непрочитанное сообщение Olej » 24 апр 2023, 23:11

Конфигурации:

Код: Выделить всё

olej@esprimop420:~$ ip l sh 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 90:1b:0e:2b:fe:3a brd ff:ff:ff:ff:ff:ff

Код: Выделить всё

root@esprimop420:/etc/default# tail -n3 /etc/default/isc-dhcp-server 
#	Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="enp3s0"
#INTERFACESv6="enp3s0"

Код: Выделить всё

root@esprimop420:/etc# ls -l /etc/dhcp/dhcpd*.conf 
-rw-r--r-- 1 root root 3331 окт  4  2022 /etc/dhcp/dhcpd6.conf
-rw-r--r-- 1 root root 3496 окт  4  2022 /etc/dhcp/dhcpd.conf

Код: Выделить всё

olej@esprimop420:~$ grep -v ^# /etc/dhcp/dhcpd.conf | grep -v ^$
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.3;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.1.3,8.8.4.4,1.1.1.1;
    range 192.168.1.25 192.168.1.35;
    range 192.168.1.240 192.168.1.250;
}
Проверка конфигураций на корректность:

Код: Выделить всё

root@esprimop420:/etc/dhcp# which dhcpd
/usr/sbin/dhcpd

Код: Выделить всё

root@esprimop420:/etc/dhcp# dhcpd -t -cf /etc/dhcp/dhcpd.conf
Internet Systems Consortium DHCP Server 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

DHCP server

Непрочитанное сообщение Olej » 24 апр 2023, 23:13

Olej писал(а):
24 апр 2023, 23:11
Проверка конфигураций на корректность
Запуск:

Код: Выделить всё

olej@esprimop420:~$ sudo systemctl start isc-dhcp-server

Код: Выделить всё

olej@esprimop420:~$ sudo systemctl status isc-dhcp-server
● isc-dhcp-server.service - LSB: DHCP server
     Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
     Active: active (running) since Sun 2023-04-23 13:33:10 EEST; 17s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 14925 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
      Tasks: 4 (limit: 14232)
     Memory: 4.4M
        CPU: 42ms
     CGroup: /system.slice/isc-dhcp-server.service
             └─14941 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf enp3s0

апр 23 13:33:08 esprimop420 systemd[1]: Starting LSB: DHCP server...
апр 23 13:33:08 esprimop420 isc-dhcp-server[14925]: Launching IPv4 server only.
апр 23 13:33:08 esprimop420 dhcpd[14941]: Wrote 0 leases to leases file.
апр 23 13:33:08 esprimop420 dhcpd[14941]: Server starting service.
апр 23 13:33:10 esprimop420 isc-dhcp-server[14925]: Starting ISC DHCPv4 server: dhcpd.
апр 23 13:33:10 esprimop420 systemd[1]: Started LSB: DHCP server.

Код: Выделить всё

olej@esprimop420:~$ ps -A | grep dhcpd
  14941 ?        00:00:00 dhcpd
Рабочий DHCP сервер.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

DHCP server

Непрочитанное сообщение Olej » 12 дек 2023, 15:49

Любопытная статья про DHCP: Что ты такое, dhclient?...
Её вполне стоит ... пробежать по диагонали (читать всё не обязательно).
И если пропустить и отбросить в сторону все традиционные понты:
... мы тут в Яндексе придумали провести Тренировки по DevOps.
Но там есть некоторые очень любопытные заключения найденные экспериментально...
Это - (внимание!) про традиционный IPv4:
А всё очень просто. DHCP работает в тот момент, когда сети на хосте ещё нет. Хост не только не может нормально матчить dst-ip в свои адреса, чтобы отправить пакеты в сетевой стек, но даже броадкастный дестинейшен (широковещательный IP-адрес 255.255.255.255) не обработает, потому что нет IP-адреса.
...
В итоге, чтобы заработал скромный dhclient, он должен реализовать слой обработки Ethernet! Хуже того, он должен поддержать ещё и Token Ring (проклятое!) и FDDI (легаси!) — соответствующие файлы хедеров есть в репозитории.
А вот - про IPv6:

Код: Выделить всё

[b]DHCPv6[/b]

DHCPv6, может, для кого-то и странный зверёк, но он есть, работает и используется (я лично DHCP Relay на стоечных коммутаторах в дата-центрах настраивал).

Так вот, друзья, для него это всё не нужно. НЕ НУЖНО! BPF, своя реализация Ethernet Framing, UDP/IP-заголовки самому крафтить. И его спокойно можно ограничить iptable /nftables.

Ведь в чём состоит основной конфликт сегодняшней истории? IP-адреса на интерфейсе нет — сетевой стек отбрасывает пакет. Как только он появляется как результат работы DHCP, dhclient может использовать стандартные механизмы Линукса, что он и делает для продления аренды IP-адреса через юникастовые сообщения, которые уже можно заблокировать.

А в IPv6 на интерфейсе всегда есть адрес — Link-Local из сети FE80::/12 . Сеть там всегда инициализирована, и сетевой стек не отбросит пакеты. А, ну ещё там броадкастов нет!
Насколько всё принципиально по-другому :!:

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей