Question, if I have a router setup as DHCP server and I also give that router an IP helper address will it provide host in that subnet an IP address and also forward a request to the IP listed under the IP helper command? Scenario is host receive IP address from local pool on router but need PXE for host. If I point to server for PXE with its IP address under IP helper will they get boot file from that while still obtaining their IP address locally from router pool?
A DHCP client can only accept a single offer, having multiple ip helpers does not mean a DHCP client will receive missing DHCP attributes from a selection of DHCP servers.
Remove the PXE server IP from the ip helper. Instead specify option 60 in the DHCP pool to refer to the IP of the PXE server:
! ip dhcp pool FOO network x.x.x.x x.x.x.x option 60 ip <pxe_server> !
I should clarify I don't want PXE to provide leasing info, just boot info. I guess my question is in IOS using DHCP pool at local router and an IP helper on that local interface what will IOS do when a client sends a DHCP discover. Will IOS choose to provide it to the local pool, to the IP helper and forward it, or will it do both at the same time?
I'm currently facing a different behavior on a Cisco L3 switch: DHCP DISCOVER packets won't get forwarded to ip helper-address if a ip dhcp pool is present in its configuration.
Could you point to a specific Cisco official documentation regarding this topic?
I think this is 'normal' behaviour. The local DHCP server (the one configured on your L3 switch) will always be the first to react to the DHCPDISCOVER.
It will receive an offer from which ever dhcp server replies first, in this case most probably it would the local dhcp server, what you could try is a directed udp broadcast for the PXE.
access-list 100 permit udp host <helper address> any eq <pxe port>
ip forward-protocol udp <pxe port>
description interface to reach helper address
ip directed-broadcast 100
In the original discussion @Seb Rupik made an interesting suggestion about using option 60 to provide the address for PXE server. I wonder if this might work?
@Filippo Zangheri asks for a reference to Cisco documentation about this use of helper address. I do not have a specific reference to offer. I believe that in general the behavior of IOS has been to forward copies of boot requests to all configured helper addresses. We do not know what model of L3 switch this is and do not know the version of code it is running. It is possible that this particular switch does not do as I expect and forward boot requests if a dhcp pool has been configured on the switch. Perhaps some debugging might provide some insight. (perhaps debugging on dhcp activity, or perhaps debug ip packet using an access list to identify boot requests).
@paul driver makes an interesting suggestion about trying directed broadcast for PXE traffic. But since we know the address of the PXE server I am not sure why we need to send a directed broadcast. ip forward-protocol for the PXE port should trigger forwarding that packet to the PXE server.
But if we want to look at the directed broadcast possibility we should clarify that the ip forward-protocol is configured on the L3 switch where the client is connected while the access list 100 and the ip directed-broadcast 100 are configured on the L3 device where the PXE server is connected.