Estou tentando configurar uma configuração PXE, na qual meu Ubuntu Server 22.04.3 LTS atuaria como servidor TFTP + ProxyDHCP (o servidor DHCP atual deve permanecer intacto). Pesquisei muito no Google e tentei várias configurações diferentes, mas não obtive sucesso. Deixe-me mostrar o conteúdo atual do /etc/dnsmasq.conf:
#to disable DNS server
port=0
#enable TFTP server and set its root path
enable-tftp
tftp-root=/free/pxe
#enable ProxyDHCP server. The address 192.168.1.2 corresponds to the subnet in which the ProxyDHCP server will act (I read somewhere that any address inside the IP subnet is valid for this)
#The address 192.168.1.2 is that of my Ubuntu Server.
interface=enp2s0
dhcp-range=192.168.1.2,proxy
#boot configuration files for PXE clients
# boot config for BIOS systems
dhcp-match=set:bios-x86,option:client-arch,0
dhcp-boot=tag:bios-x86,firmware/ipxe.pxe
# boot config for UEFI systems
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-match=set:efi-x86_64,option:client-arch,9
dhcp-boot=tag:efi-x86_64,firmware/ipxe.efi
Atualmente, o servidor TFTP não está funcionando (tentei com meu Windows 10 como cliente TFTP) e, ao tentar inicializar PXE, aparece o erro "Nenhum nome de arquivo de inicialização recebido".
Posso fornecer mais informações, se solicitado.
Alguém pode me dizer como configurar corretamente o dnsmasq para corrigir a funcionalidade TFTP e ProxyDHCP?
Esta é a
dnsmasq
configuração que usei, modificada para corresponder ao que você forneceu. Eu coloquei isso/etc/dnsmasq.d/pxe.conf
Notas
dnsmasq 2.90-0ubuntu0.20.04.1
).dnsmasq
logs são muito úteis para depuração. Por exemplojournalctl -b -u dnsmasq.service
ipxe
funcionou com ProxyDHCP quando testei, mas não funcionou se o Secure Boot estava ativado.ipxe
você pode precisar carregar um arquivo de script em cadeia. Eu adicionei um exemplo comentado.ipxe
e cada uma tem suas próprias desvantagens. Por exemplo, a última vez que testeigrub
não suportava ProxyDHCP . No entanto, a versão Fedora do grub foi corrigida para suportar ProxyDHCP.Depois de analisar a postagem de Andrew, ler a documentação no wiki do archlinux e no man dnsmasq e me testar, cheguei à solução final que está funcionando tanto para BIOS PXE quanto para UEFI PXE. Conteúdo do
/etc/dnsmasq.d/pxe.conf
arquivo:A chave neste caso era usar
pxe-service
entradas em vez de entradasdhcp-match
edhcp-boot
. Certamente são adequados para outros casos, que podem diferir no sistema operacional ou em outras coisas. Não sei, mas sei que neste casopxe-service
as entradas funcionaram bem.Caso alguém precise saber disso, o
X86PC
valor eX86-64_EFI
é o tipo de sistema cliente, ou CSA conforme mencionado neste artigo man : man dnsmasq .Além disso, neste caso, não adicionei o endereço do servidor TFTP ao final da entrada pxe-service, porque o servidor TFTP é o mesmo host que o servidor ProxyDHCP e obviamente tem o mesmo endereço. Mas se for diferente, você deverá adicionar o endereço IP do servidor TFTP no final da instrução pxe-service, conforme descrito no artigo man.