[CentOS] UEFI and PXE
Steven Tardy
sjt5atra at gmail.com
Fri Apr 26 04:59:05 UTC 2019
On Thu, Apr 25, 2019 at 8:46 PM Chris Adams <linux at cmadams.net> wrote:
> Once upon a time, Steven Tardy <sjt5atra at gmail.com> said:
> > The “ICMP unreachable” should be a dead giveaway. . .
>
> You cut out the part of the email where the OP said that the UEFI system
> was ignoring the next-server part of the DHCP reply and trying to TFTP
> to the DHCP server instead of the TFTP server. Of course that got ICMP
> unreachable, but it isn't a firewall problem.
>
> To the OP: can you post a full tcpdump decode of the DHCP offer? I
> seem to remember having some issue with ISC DHCP in the past not getting
> the next server set correctly - maybe a packet will jog some memory (and
> I'll go try to grab the same from my dnsmasq DHCP for comparison).
>
Just set up ISC DHCP on fresh CentOS 7 install and followed the redhat
guide linked in this thread.
Did what I thought was correct and duplicated the OPs problem.
/me scratches head. . . off to `tcpdump -vv -nn -i ens192`. . . packets
never lie. . .
Vendor-Class Option 60, length 32:
"PXEClient:Arch:00007:UNDI:003000"
d'oh; I did _lower case_ a string in dhcpd.conf line on accident while
transcribing:
match if substring (option vendor-class-identifier, 0, 9) =
"pxeclient";
Changed it to follow redhat guide CAMELCase and poof,
match if substring (option vendor-class-identifier, 0, 9) =
"PXEClient";
PXEClient tried to reach out "next-server".
00:42:24.606544 IP 1.2.3.10.1165 > 1.2.3.2.69: 50 RRQ
"pxelinux/bootx64.efi" octet tsize 0 blksize 1468
If the OP still can't get this working, packet captures really do help. (;
[root at DHCPServer ~]# cat /etc/dhcp/dhcpd.conf
option arch code 93 = unsigned integer 16; #RFC 4578
subnet 1.2.3.0 netmask 255.255.255.0 {
option routers 1.2.3.254;
range 1.2.3.10 1.2.3.20;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) =
"PXEClient";
next-server 1.2.3.2;
if option arch = 00:06 {
filename = "pxelinux/bootia32.efi";
} else if option arch = 00:07 {
filename = "pxelinux/bootx64.efi";
} else {
filename = "pxelinux/pxelinux.0";
}
}
}
More information about the CentOS
mailing list