Как я настраивал Ubuntu Server в качестве шлюза с PXE. Часть 2
Как я настраивал Ubuntu Server в качестве шлюза с PXE. Настройка DHCP
В прошлый раз я обозначил мотивы, почему решил заняться делом, вынесенным в заглавие текста, а также рассказал, как настроил netplan. Настала очередь обучить сервер выдавать IP-адреса клиентам по протоколу DHCP.
Для выдачи IP нужно установить службу isc-dhcpd-server:
sudo apt install isc-dhcp-server
Затем службу нужно настроить для работы в собственной сети. Для настройки определен конфигурационный файл /etc/dhcp/dhcpd.conf. Отредактировал его следующим образом:
option domain-name "twilights";
option domain-name-servers 8.8.8.8;
option ip-forwarding on;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option domain-name-servers 8.8.8.8;
option domain-name "twilights";
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
filename "pxelinux.0";
# option root-path /netboot/tftp;
}
#host goshanoob {
# hardware ethernet bc:5f:06:69;
# filename "pxelinux.0";
# fixed-address 192.168.0.22;
# server-name "toccata.example.com";
#}
option domain-name-servers 8.8.8.8;
option ip-forwarding on;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option domain-name-servers 8.8.8.8;
option domain-name "twilights";
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
filename "pxelinux.0";
# option root-path /netboot/tftp;
}
#host goshanoob {
# hardware ethernet bc:5f:06:69;
# filename "pxelinux.0";
# fixed-address 192.168.0.22;
# server-name "toccata.example.com";
#}
Решеткой предваряются закомментированные строки, которые, возможно, еще пригодятся.
Как я понял, domain-name определяет имя моего домена, name-servers - сервер, который будет разрешать доменные имена по протоколу DNS. Не знаю, влияет ли инструкция ip-forwarding в данный момент на что-то, но, судя по названию, она определяет, будут ли маршрутизироваться пакеты через мою сеть. Опция lease-time задает время аренды адреса.
Для своей подсети 192.168.0.0 я выделил 254 доступных адреса. Они будут выдаваться, начиная с 192.168.0.2, потому что 192.168.0.1 - шлюз, мой текущий сервер, который я настраиваю. Важна опция filename "pxelinux.0" - без нее служба не стартанет (либо ничего не будет выдано - нужно проверить бы).
Также здесь предусмотрена возможность резервировать для отдельных MAC-адресов IP-адреса.
Теперь важно указать, для какого сетевого интерфейса перечислены данные настройки. Такая информация указывается в файле /etc/default/isc-dhcp-server:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="enp1s0"
INTERFACESv6=""
Теперь enp1s0 слушает запросы DHCP изнутри сети.
После настройки нужно перезапустить службу, а заодно проверить статус:
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcpd-server
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-04-12 10:45:14 +05; 3 days ago
Docs: man:dhcpd(8)
Main PID: 1054 (dhcpd)
Tasks: 4 (limit: 2270)
Memory: 10.2M
CGroup: /system.slice/isc-dhcp-server.service
└─1054 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf enp1s0
Apr 15 11:28:29 twilight dhcpd[1054]: DHCPACK on 192.168.0.15 to 18:f0:ef:e2 via enp1s0
Apr 15 11:37:14 twilight dhcpd[1054]: DHCPREQUEST for 192.168.0.15 from 18:f0:ef:e2 via enp1s0
Apr 15 11:37:15 twilight dhcpd[1054]: DHCPACK on 192.168.0.15 to 18:f0:ef:e2 via enp1s0
Apr 15 11:45:13 twilight dhcpd[1054]: DHCPDISCOVER from 18:f0:ef:e2 via enp1s0
Apr 15 11:45:14 twilight dhcpd[1054]: DHCPOFFER on 192.168.0.15 to 18:f0:ef:e2 via enp1s0
Apr 15 11:45:14 twilight dhcpd[1054]: DHCPREQUEST for 192.168.0.15 (192.168.0.1) from 18:f0:ef:e2 via enp1s0
Apr 15 11:45:14 twilight dhcpd[1054]: DHCPACK on 192.168.0.15 to 18:f0:ef:e2 via enp1s0
Apr 15 11:45:18 twilight dhcpd[1054]: reuse_lease: lease age 4 (secs) under 25% threshold, reply with unaltered, existi>
Apr 15 11:45:18 twilight dhcpd[1054]: DHCPREQUEST for 192.168.0.15 (192.168.0.1) from 18:f0:ef:e2 via enp1s0
Apr 15 11:45:18 twilight dhcpd[1054]: DHCPACK on 192.168.0.15 to 18:f0:ef:e2 via enp1s0
Статус, кроме прочего, сообщил, что сервер активно обменивается DHCP-сообщениями с одним из устройств в сети (для статьи MAC-адрес я частично затер). Полный лог сервера удобно автоматически обновлять в консоль командой:
tail -f -n 30 /var/log/syslog
-n 30 - количество первоначально выведенных строк.
Отлично! Теперь я подключаю машину к сетевой карте enp1s0 сервера и наблюдаю, какой адрес был ей выдан. Список выданных адресов можно посмотреть в файле:
cat /var/lib/dhcp/dhcpd.leases
authoring-byte-order little-endian;
lease 192.168.0.2 {
starts 1 2021/04/05 05:48:51;
ends 1 2021/04/05 05:58:51;
tstp 1 2021/04/05 05:58:51;
cltt 1 2021/04/05 05:48:51;
binding state free;
hardware ethernet 20:cf:75:17;
uid "\001 \3170u\027E";
set vendor-class-identifier = "MSFT 5.0";
}
. . .
Следующим моим шагом была настройка iptables, чтобы разрешить компьютерам в сети выходить в интернет. Но об этом в другой раз...
ToDo:
- привести список точных описаний опций файла /etc/dhcp/dhcpd.conf;
- попробовать получить IP без параметра filename, узнать альтернативные filename.
Источники информации:
1. https://habr.com/ru/post/504868/ - Домашний интернет шлюз
2. https://habr.com/ru/company/serverclub/blog/250549/ - Загрузочный сервер
3. https://howitmake.ru/blog/ubuntu/140.html - Настройка PXE Boot
Комментарии
Отправить комментарий