PXE-сервер — ограничение широковещательного порта по требованию загрузочного клиента

PXE-сервер — ограничение широковещательного порта по требованию загрузочного клиента

Я хотел бы настроить свой PXE-сервер так, чтобы он присваивал правильный IP-адрес только клиентам, запрашивающим сетевую загрузку.

Поэтому я настроил свой сетевой адаптер с двумя IP-адресами в разных диапазонах. 192.168.1.19 — это общая сеть, которая вещает в диапазоне /24.

Для загрузки сервера PXE я пытаюсь использовать другой набор IP-адресов, чтобы отделить его от остальной конфигурации сети. Для этого сервер имеет второй IP-адрес 192.168.0.19, транслируемый на /24 только для 2 диапазонов IP-адресов. (макс. 2 компьютера используют загрузку PXE вместе)

# cat /etc/network/interfaces
iface enp5s0 inet static
address 192.168.1.19
netmask 255.255.255.0
gateway 192.168.1.1

iface enp5s0:1 inet static
address 192.168.0.19
netmask 255.255.255.0

Суть в том, что только компьютеры, запрашивающие загрузку, должны иметь один из этих 2 IP-адресов. Хотя он арендует его и не освобождает даже после перезагрузки. Мне приходится вручную сбрасывать сеть на клиенте. Даже тогда он иногда получает тот же IP-адрес. Он узкий, потому что мой маршрутизатор настроен на 192.168.1.1. Я предположил, что он должен отдавать приоритет тому же диапазону.

Если сетевая загрузка отключена на клиенте, он должен получить IP из общего сетевого диапазона для доступа к файлам и другим службам локальной сети. Если она включена, он должен получить IP только для конфигурации загрузки PXE и ​​освободить его после завершения.

Второй тест, чтобы заставить это работать:

Я тестировал, чтобы эта конфигурация работала сdnsmasqВместо этого. Здесь вы найдетемои текущие сетевые настройкии другие подробности:

root@lubuton:~# service dnsmasq restart
root@lubuton:~# service dnsmasq status
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-06-19 09:30:18 CEST; 8s ago
    Process: 75253 ExecStartPre=/etc/init.d/dnsmasq checkconfig (code=exited, status=0/SUCCESS)
    Process: 75261 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
    Process: 75270 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
   Main PID: 75269 (dnsmasq)
      Tasks: 1 (limit: 18871)
     Memory: 652.0K
        CPU: 38ms
     CGroup: /system.slice/dnsmasq.service
             └─75269 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d08458e88040>

Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.31 -- 192.168.2.40, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.21 -- 192.168.2.30, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.11 -- 192.168.2.20, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.2 -- 192.168.2.10, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, sockets bound exclusively to interface enp5s0
Jun 19 09:30:18 lubuton dnsmasq-tftp[75269]: TFTP root is /srv/tftp
Jun 19 09:30:18 lubuton dnsmasq[75269]: reading /etc/resolv.conf
Jun 19 09:30:18 lubuton dnsmasq[75269]: using nameserver 127.0.0.53#53
Jun 19 09:30:18 lubuton dnsmasq[75269]: read /etc/hosts - 7 addresses
Jun 19 09:30:18 lubuton systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
lines 1-23/23 (END)
root@lubuton:~# service tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server
     Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
     Active: active (running) since Sun 2022-06-19 03:27:58 CEST; 6h ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 1 (limit: 18871)
     Memory: 392.0K
        CPU: 6ms
     CGroup: /system.slice/tftpd-hpa.service
             └─17162 /usr/sbin/in.tftpd --listen --user tftp --address 192.168.2.1:69 --secure --create /srv/tftp

Jun 19 03:27:58 lubuton systemd[1]: Starting LSB: HPA's tftp server...
Jun 19 03:27:58 lubuton tftpd-hpa[17154]:  * Starting HPA's tftpd in.tftpd
Jun 19 03:27:58 lubuton tftpd-hpa[17154]:    ...done.
Jun 19 03:27:58 lubuton systemd[1]: Started LSB: HPA's tftp server.

Сторона клиента:PXE-E53: No bootfilename recieved

Вот моя конфигурация сети по умолчанию. Это то, что /etc/dnsmasq.d/pxe.confя использую для настройки PXE-сервера:

interface=enp5s0,lo
bind-interfaces
log-dhcp
dhcp-host=pxe.home.lan,192.168.2.1
dhcp-range=enp7s4f0,192.168.2.2,192.168.2.10
dhcp-range=enp7s4f1,192.168.2.11,192.168.2.20
dhcp-range=enp8s6f0,192.168.2.21,192.168.2.30
dhcp-range=enp8s6f1,192.168.2.31,192.168.2.40
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,bootx64.efi,pxelinux.0
enable-tftp
tftp-root=/srv/tftp

Думаю, я чего-то не понимаю в требованиях сети PXE к диапазонам IP-адресов и подсети.

Суть в том, что я бы использовал этот PXE, чтобы помочь людям восстановить/исправить/установить/переустановить их операционную систему.

Моя домашняя сеть на 192.168.1.0/24 должна оставаться частной. Моя сеть PXE должна иметь интернет из этой последней сети, общий и предоставлять доступ клиентам, подключенным ко всем остальным интерфейсам, кроме enp5s0, подключенного к маршрутизатору ISP; к службе PXE bootp.

Если я правильно понимаю, PXE может работать только в диапазонах WAN IP?

Я забыл упомянуть:

  • Я хотел бы, чтобы все компьютеры моей сети оставались на IP-адресах локальной сети, чтобы безопасность Samba основывалась не на ограничениях пользователей, а на ограничениях локальной сети.

  • Я могу автоматически предлагать IP-адреса в том же диапазоне, что и enp5s0, поскольку это конфликтует с арендой IP-адресов маршрутизатора. Поэтому я пытаюсь установить его на 192.168.2.0/24.

Возможно ли это или проблема в этом?

Моя последняя конфигурация в pxe.conf разделяет Интернет, выдает IP-адреса клиентам при загрузке, но файлы не отправляются.

interface=enp5s0,lo
bind-interfaces
log-dhcp
dhcp-host=pxe.home.lan,192.168.2.1
dhcp-range=192.168.2.2,192.168.2.40
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,bootx64.efi,pxelinux.0
enable-tftp
tftp-root=/srv/tftp

решение1

Я не думаю, что ваш план будет работать так, как вы хотите. ОС, которая загружается с помощью PXE, обычно выполняет собственную настройку сети DHCP. Пакеты клиента DHCP из второй настройки сети, вероятно, не будут включать опции PXE.

Однако, безусловно, возможно обнаружить пакеты DHCP-клиента с параметрами PXE. Это распространенный подход, поэтому параметры ответа PXE могут быть предоставлены динамически. Что можно сделать, зависит от используемой службы DHCP.

Это пример конфигурации для isc-dhcp-serverслужбы DHCP. Он предложит клиентам PXE другой пул. Он не предлагает отдельные подсети, как вы хотите, но его можно адаптировать.

class "pxeclient" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    filename "pxelinux.0";
}

subnet 192.168.1.0 netmask 255.255.255.0
{
    option routers 192.168.1.1;
    next-server 192.168.1.1;
    max-lease-time 3600;

    pool {
        range 192.168.1.100 192.168.1.109;
        allow members of "pxeclient";
        }

    pool {
        range 192.168.1.110 192.168.1.119;
        allow unknown-clients;
        }
}

Другой распространенный DHCP-сервис — это dnsmasq. Это пример конфигурации, которая делает то же самое, что и выше.

log-dhcp
dhcp-option=3,192.168.1.1
dhcp-match=set:pxe,60,PXEClient
dhcp-boot=tag:pxe,pxelinux.0,server,192.168.1.1
dhcp-range=tag:pxe,192.168.1.100,192.168.1.109,255.255.255.0,1h
dhcp-range=tag:!pxe,192.168.1.110,192.168.1.119,255.255.255.0,1h

Другие интересные темы включают в себя

  • Варианты ответа PXE на основе архитектуры клиента PXE (например, BIOS или UEFI)
  • proxyDHCP сервис ( dnsmasqподдерживает эту функцию)

Полезные ссылки

Связанный контент