PXE boot broken. dhcp doesn't send option 66 & 67

Post Reply
attrezz
Member
Posts: 3
Joined: 29 May 2012 14:30

PXE boot broken. dhcp doesn't send option 66 & 67

Post by attrezz »

I'm using an omniswitch to hand out dhcp to all of our client pcs.

How would I go about seeing up pxe boot to forward that portion of the protocol to another server entirely?

In linux you would use something like this in dhcp.conf:

next-server X.X.X.X;
filename "pxelinux.0";

I assume I need to configure something in dhcpd.conf on the omniswitcha and maybe iphelper too but I'm not sure. would option dhcp-tftp-server and option dhcp-bootfile-name do what I'm trying to do?
Last edited by attrezz on 08 Oct 2013 08:44, edited 1 time in total.
attrezz
Member
Posts: 3
Joined: 29 May 2012 14:30

Re: PXE boot from server

Post by attrezz »

so dhcp-bootfile-name is correct this is option 67
and dhcp-tftp-server is option 66 BUT when I pxe boot from gPXE I get "tftp://10.10.103.252/pxelinux.0"

WHAT THE HECK!? why isn't it going where I told you to go? I double checked and gPXE respects option 66 so it should be pointing to a different server. My related config is below.

subnet 10.10.96.0 netmask 255.255.248.0 {
dynamic-dhcp range 10.10.96.0 10.10.103.100 {
option subnet-mask 255.255.248.0;
option routers 10.10.103.254;
option domain-name "pantherenergy.local";
option domain-name-servers 192.168.1.229;
option netbios-name-servers 192.168.1.229;
option min-lease-time 3600;
option dhcp-lease-time 86400;
option max-lease-time 172800;
option dhcp-tftp-server "10.10.103.248";
option dhcp-bootfile-name "pxelinux.0";
}
}
gdifiore
Member
Posts: 6
Joined: 26 Feb 2013 13:08

Re: PXE boot from server

Post by gdifiore »

I have never run the dhcp server on the omniswitch and done pxe boot but typically you want to add and ip helper that points to your PXE boot server. If you have multiple vlans it is a good idea to run:
ip helper per-vlan only
and then setup your ip helper for just the vlan where your clients live. You also want to enable ip helper pxe-support.

Hope this helps.
attrezz
Member
Posts: 3
Joined: 29 May 2012 14:30

Re: PXE boot from server

Post by attrezz »

Thanks gdiforce! I did take those steps (and lots others through the last few days) while trying to troubleshoot and I think I have the problem narrowed down.

Here's the relevant section of dhcpd.conf
subnet 10.10.96.0 netmask 255.255.248.0 {
dynamic-dhcp range 10.10.96.0 10.10.103.100 {
option subnet-mask 255.255.248.0;
option routers 10.10.103.254;
option domain-name "pantherenergy.local";
option domain-name-servers 192.168.1.229;
option netbios-name-servers 192.168.1.229;
option min-lease-time 3600;
option dhcp-lease-time 86400;
option max-lease-time 172800;
option dhcp-option-overload 2;
option dhcp-tftp-server "10.10.103.248";
option dhcp-bootfile-name "pxelinux.0";
}
}
The default in the dhcpd.pcy file is to ALWAYS send all options in the offer regardless of whether or not they're specifically requested.

And the relevant output of show ip helper. 252 is the switch and 248 is the tftp pxe server though I've done all kinds of things to iphelper. In this case it doesn't matter what I do to ip helper, all of the relevant clients/servers are on the same subnet so ip helper doesn't do anything. It would if they were on different subnets.
Ip helper :
Forward Delay(seconds) = 3,
Max number of hops = 4,
Relay Agent Information = Disabled,
DHCP Snooping Status = Disabled
DHCP Snooping Bypass Opt82-Check = Disabled,
DHCP Snooping Opt82 Format = Base MAC,
DHCP Snooping Opt82 String = e8:e7:32:1a:4b:c0,
DHCP Snooping Binding DB Status = Disabled,
PXE support = Enabled,
Forward option = per-vlan only
Bootup Option Disable
Forwarding Address :
Vlan Number 2
Forwarding Address :
10.10.103.248
10.10.103.252
When dhcp option 66 and 67 are defined they alter the values "sname and fname" but do not append the requested option codes as option 66 and 67 in the dhcp offer.

First let me show you what's happening right now in dhcpdump. Immediately below is the Request from the PXE client (gPXE). You can see in the option I've highlighted options 66 and 67 are explicitly requested by the client.
---------------------------------------------------------------------------

TIME: 2013-10-07 09:42:50.656
IP: 0.0.0.0 (8:0:27:ab:84:56) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 27ab8456
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 08:00:27:ab:84:56:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 3 (DHCPREQUEST)
OPTION: 57 ( 2) Maximum DHCP message size 1472
OPTION: 93 ( 2) Client System 0000 ..
OPTION: 94 ( 3) Client NDI 010201 ...
OPTION: 60 ( 32) Vendor class identifier PXEClient:Arch:00000:UNDI:002001
OPTION: 77 ( 4) User-class Identification 67505845 gPXE
OPTION: 55 ( 13) Parameter Request List 1 (Subnet mask)
3 (Routers)
6 (DNS server)
7 (Log server)
12 (Host name)
15 (Domainname)
17 (Root path)
43 (Vendor specific info)
60 (Vendor class identifier)
66 (TFTP server name)
67 (Bootfile name)

175 (???)
203 (???)

OPTION: 175 ( 48) ??? b105018086100e18 ........
0101230101220101 ..#.."..
1901012001012101 ... ..!.
0110010212010113 ........
0101110101eb0301 ........
0000170101150101 ........
OPTION: 61 ( 7) Client-identifier 01:08:00:27:ab:84:56
OPTION: 97 ( 17) UUID/GUID 00f9f51420a3de42 .... ..B
cdb0138f8d6283f6 .....b..
b9 .
OPTION: 54 ( 4) Server identifier 10.10.103.252
OPTION: 50 ( 4) Request IP address 10.10.96.8
---------------------------------------------------------------------------
But here we see the offer packet does not contain the requested options. Even though the configuration also clearly defines them and option 52 overload is clearly defined that should force them to be included in the offer. Instead the values are placed in sname and fname. This is correct, but only half correct. The offer packet should also include the options defined as well.
---------------------------------------------------------------------------

TIME: 2013-10-07 09:42:50.676
IP: 10.10.103.252 (e8:e7:32:1a:4b:c0) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 27ab8456
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 10.10.96.8
SIADDR: 10.10.103.252
GIADDR: 0.0.0.0
CHADDR: 08:00:27:ab:84:56:00:00:00:00:00:00:00:00:00:00
SNAME: 10.10.103.248.
FNAME: pxelinux.0.
OPTION: 53 ( 1) DHCP message type 5 (DHCPACK)
OPTION: 54 ( 4) Server identifier 10.10.103.252
OPTION: 1 ( 4) Subnet mask 255.255.248.0
OPTION: 3 ( 4) Routers 10.10.103.254
OPTION: 6 ( 4) DNS server 192.168.1.229
OPTION: 15 ( 19) Domainname pantherenergy.local
OPTION: 44 ( 4) NetBIOS name server 192.168.1.229
OPTION: 51 ( 4) IP address leasetime 86400 (24h)
OPTION: 52 ( 1) Option overload 2 (sname field holds options)
---------------------------------------------------------------------------
The output of the offer should look like this:
---------------------------------------------------------------------------

TIME: 2013-10-07 09:42:50.676
IP: 10.10.103.252 (e8:e7:32:1a:4b:c0) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 27ab8456
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 10.10.96.8
SIADDR: 10.10.103.252
GIADDR: 0.0.0.0
CHADDR: 08:00:27:ab:84:56:00:00:00:00:00:00:00:00:00:00
SNAME: 10.10.103.248.
FNAME: pxelinux.0.
OPTION: 53 ( 1) DHCP message type 5 (DHCPACK)
OPTION: 54 ( 4) Server identifier 10.10.103.252
OPTION: 1 ( 4) Subnet mask 255.255.248.0
OPTION: 3 ( 4) Routers 10.10.103.254
OPTION: 6 ( 4) DNS server 192.168.1.229
OPTION: 15 ( 19) Domainname pantherenergy.local
OPTION: 44 ( 4) NetBIOS name server 192.168.1.229
OPTION: 51 ( 4) IP address leasetime 86400 (24h)
OPTION: 52 ( 1) Option overload 3 (sname and fname field hold options)
OPTION: 66 ( 11) TFTP server name 10.10.103.248
OPTION: 67 ( 7) Bootfile name pxelinux.0

---------------------------------------------------------------------------
As it is currently no PXE device I've tried is booting. I assume there are some devices that will boot this but it can't be the norm as every device I've tried (I've tried five different PXE boot clients) won't boot from this configuration. Here's the output of gPXE:
net0: 08:00:27:ab:84:56 on PCI00:03.0 (open)
[Link:up, TX:0 TXE:0 RX:0 RXE:0]
DHCP (net0 08:00:27:ab:84:56).... ok
net0: 10.10.96.8/255.255.248.0 gw 10.10.103.254
Booting from filename "pxelinux.0"
tftp://10.10.103.252/pxelinux.0........... Conneciton timed out.
It seems obvious to me that although I defined option 66 and 67 they're not passed along in the offer. Instead sname and fname are filled with those values but most pxe clients either don't pay attention to these values by themselves or simply ignore them all together.
Post Reply

Return to “OmniSwitch 9000 / 9000E”