管理者は、デフォルトのDHCPサーバーの設定なしで追加のオプション(PXEなど)を使用してDHCPクライアントに応答するためにDNSProxyを使用したいくつかのブログを読みました。
私のホームネットワークでは、OrbiルーターのネイティブDHCPサービスを維持し、何らかの方法でハッキングまたは変更を行わずに通常の操作を実行できるようにしたいと思います。
理想的には、PXE ブートに応答して、ネットワーク上の DNSMasq および TFTP サーバーを使用して Linux ホストを実行できます。 UbuntuとRocky Linuxでこれを試しましたが、dnsmasqが応答しない理由がわからないようです。
Orbiルータは192.168.1.254で、PXE/TFTP/DNSMasqボックスは192.168.1.17です。
これはdnsmasqの私の設定です。
$ cat /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d
port=0
log-dhcp
log-queries
interface=enp1s0,lo
# DHCP Proxy
dhcp-range=192.168.1.0,proxy,255.255.255.0
# PXE
dhcp-boot=pxelinux,,192.168.1.17
# TFTP Options
tftp-root=/var/lib/tftpboot
何を試しても、ノードを起動してもネットワークレスポンスからPXE起動/起動を取得できないようです。
ログには、DNSMasqがDHCP要求ブロードキャストパケットを傍受していることがわかります。なぜなら、要求が行われたときにメッセージを記録するからです(最後の行)。
$ sudo journalctl -efu dnsmasq
-- Logs begin at Mon 2021-07-12 22:25:44 EDT. --
Jul 12 22:48:28 localhost.localdomain systemd[1]: Started DNS caching server..
Jul 12 22:48:28 localhost.localdomain dnsmasq[5229]: started, version 2.79 DNS disabled
Jul 12 22:48:28 localhost.localdomain dnsmasq[5229]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN2 DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth DNSSEC loop-detect inotify
Jul 12 22:48:28 localhost.localdomain dnsmasq-dhcp[5229]: DHCP, proxy on subnet 192.168.1.0
Jul 12 22:48:35 localhost.localdomain dnsmasq-dhcp[5229]: 3411263825 available DHCP subnet: 192.168.1.0/255.255.255.0
基本的なデバッグを試みています... nmapを使用してdhcpをテストするために別のLinuxボックス(192.168.1.80)にログインしていますが、DNSMasqボックスから他のDHCPオプションを取得できないようです。
$ sudo nmap --script broadcast-dhcp-discover -e eth0
Starting Nmap 7.80 ( https://nmap.org ) at 2021-07-13 02:26 UTC
Pre-scan script results:
| broadcast-dhcp-discover:
| Response 1 of 1:
| IP Offered: 192.168.1.21
| DHCP Message Type: DHCPOFFER
| Server Identifier: 192.168.1.254
| IP Address Lease Time: 1d00h00m00s
| Subnet Mask: 255.255.255.0
| Router: 192.168.1.254
|_ Domain Name Server: 192.168.1.254
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.10 seconds
DNSMasqボックスでtcpdumpを実行すると、テストボックスでブロードキャストされたパケット(下の最初のパケット)とルーターの応答(2番目のパケット)が表示されますが、DNSMasqボックスのIPアドレスは表示されません。
$ sudo tcpdump -i enp1s0 port 67 or port 68 -e -n
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:26:49.849265 dc:a6:32:64:61:49 > Broadcast, ethertype IPv4 (0x0800), length 358: 192.168.1.80.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from de:ad:c0:de:ca:fe, length 316
22:26:50.138984 78:d2:94:50:e9:12 > Broadcast, ethertype IPv4 (0x0800), length 342: 192.168.1.254.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 300
何が間違っているのかわかりません。たぶんこれが私がやろうとしていることをする正しい方法ではないかもしれません。どんなアドバイスも本当にありがとうございます。
答え1
私の考えでは、あなたが言うことはあなたが利点を望んでいるということです。プロキシDHCP。代わりにpxe-service
のオプションを使用したいと思います。dnsmasq
dhcp-boot
dnsmasq
これは、ProxyDHCP を提供する投稿に基づく最小構成です。
log-dhcp
dhcp-range=192.168.1.0,proxy,255.255.255.0
dhcp-match=set:pxe,60,PXEClient
pxe-service=tag:pxe,X86PC,"PXE BIOS",pxelinux.0,192.168.1.17
よりダイナミックな応答のために、高度な設定を他のパラメータと一致させることができます。たとえば、クライアントのアーキテクチャに基づいてファイルを提供します。
リンク