PXE サーバー - ブート クライアント要求時のブロードキャスト ポート制限

PXE サーバー - ブート クライアント要求時のブロードキャスト ポート制限

ネットワーク ブートを要求するクライアントに対してのみ、正しい IP アドレスを割り当てるように PXE サーバーを設定したいと思います。

そのため、私はネットワークアダプタを異なる範囲の2つのIPアドレスで構成しました。192.168.1.19は/24でブロードキャストする一般的なネットワークです。

PXE サーバーのブートには、ネットワーク構成の残りの部分から分離するために別の IP セットを使用しようとしています。そのため、サーバーには 2 つの IP 範囲のみに対して /24 でブロードキャストされる 2 番目の IP 192.168.0.19 があります。(PXE ブートを同時に使用するコンピューターは最大 2 台)

# 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 に設定されているため、範囲が狭いです。同じ範囲を優先する必要があると考えました。

クライアントでネットワーク ブートが無効になっている場合は、ファイル共有やその他の LAN サービスを取得するために、一般的なネットワーク範囲から IP を取得する必要があります。有効になっている場合は、PXE ブート構成用にのみ IP を取得し、完了後に解放する必要があります。

動作させるための 2 番目のテスト:

この構成が機能するようにテストしてきました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 ネットワークでは、この最後のネットワークからのインターネットを共有し、ISP ルーターに接続された enp5s0 を除く他のすべてのインターフェイスに接続されたクライアントと PXE bootp サービスにアクセスできるようにする必要があります。

私の理解が正しければ、PXE は WAN IP 範囲でのみ機能するのでしょうか?

言及するのを忘れていました:

  • Samba のセキュリティをユーザーではなく LAN 制限に基づいて設定するために、ネットワーク上のすべてのコンピューターを LAN IP 上に保持したいと思います。

  • これはルーターの 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 によって起動される OS は通常、独自の DHCP ネットワーク セットアップを実行します。2 番目のネットワーク セットアップからの DHCP クライアント パケットには、PXE オプションは含まれない可能性があります。

ただし、PXE オプションを使用して DHCP クライアント パケットを検出することは確かに可能です。これは、PXE 応答オプションを動的に提供できるようにするための一般的なアプローチです。何ができるかは、使用されている DHCP サービスによって異なります。

これは DHCP サービスのサンプル設定ですisc-dhcp-server。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この機能をサポート)

便利なリンク

関連情報