I crafted an sample "IP Helper Address" lab, and I found the "Source Address" of the diverted broadcast packets should be the
which enabled "IP Helper Address".
The demonstration output capture is this:
- When no "Helper" is enabled, all DHCP broadcasts (DISCOVERY) are just ignored.
- Enabling "Helper". Note about the IP address (2.1.1.10) of this LAN interface and the configured diversion destination address (1.1.1.1)
- From this time on, the debug output shows the DHCP broadcast's source address is changed from "0.0.0.0" to "2.1.1.10", and destination address is changed from "255.255.255.255" to "1.1.1.1". The packet is forwarded to DHCP server (R1).
- Then, DHCP server's response (OFFER) packet is sourced from "1.1.1.1" to destination "2.1.1.10", as expected.
- The "Helper" relays it to the client and changes the source address of the packet from "1.1.1.1" to its own address: "2.1.1.10", also the destination is changed from "2.1.1.10" to "255.255.255.255", as if the response were generated from itself.
R0#show ip int brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset up up
FastEthernet0/0.200 2.1.1.10 YES manual up up
FastEthernet0/1 unassigned YES unset administratively down down
Serial1/0 1.1.1.10 YES manual up up
Serial1/1 unassigned YES manual administratively down down
Serial1/2 unassigned YES unset administratively down down
Serial1/3 unassigned YES unset administratively down down
R0#
*Mar 1 00:42:43.599: IP: s=0.0.0.0 (FastEthernet0/0.200), d=255.255.255.255, len 604, rcvd 2
*Mar 1 00:42:47.111: IP: s=0.0.0.0 (FastEthernet0/0.200), d=255.255.255.255, len 604, rcvd 2
*Mar 1 00:42:51.159: IP: s=0.0.0.0 (FastEthernet0/0.200), d=255.255.255.255, len 604, rcvd 2
R0#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R0(config)#int f0/0.200
R0(config-subif)#ip helper-address 1.1.1.1
R0(config-subif)#end
R0#
*Mar 1 00:43:07.607: %SYS-5-CONFIG_I: Configured from console by console
*Mar 1 00:43:09.239: IP: s=0.0.0.0 (FastEthernet0/0.200), d=255.255.255.255, len 604, rcvd 2
*Mar 1 00:43:09.255: IP: tableid=0, s=2.1.1.10 (local), d=1.1.1.1 (Serial1/0), routed via FIB
*Mar 1 00:43:09.259: IP: s=2.1.1.10 (local), d=1.1.1.1 (Serial1/0), len 604, sending
*Mar 1 00:43:09.439: IP: tableid=0, s=1.1.1.1 (Serial1/0), d=2.1.1.10 (FastEthernet0/0.200), routed via RIB
*Mar 1 00:43:09.443: IP: s=1.1.1.1 (Serial1/0), d=2.1.1.10, len 328, rcvd 4
*Mar 1 00:43:09.459: IP: s=2.1.1.10 (local), d=255.255.255.255 (FastEthernet0/0.200), len 328, sending broad/multicast
*Mar 1 00:43:09.567: IP: s=0.0.0.0 (FastEthernet0/0.200), d=255.255.255.255, len 604, rcvd 2
*Mar 1 00:43:09.583: IP: tableid=0, s=2.1.1.10 (local), d=1.1.1.1 (Serial1/0), routed via FIB
*Mar 1 00:43:09.587: IP: s=2.1.1.10 (local), d=1.1.1.1 (Serial1/0), len 604, sending
*Mar 1 00:43:09.619: IP: tableid=0, s=1.1.1.1 (Serial1/0), d=2.1.1.10 (FastEthernet0/0.200), routed via RIB
*Mar 1 00:43:09.623: IP: s=1.1.1.1 (Serial1/0), d=2.1.1.10, len 328, rcvd 4
*Mar 1 00:43:09.635: IP: s=2.1.1.10 (local), d=255.255.255.255 (FastEthernet0/0.200), len 328, sending broad/multicast
R0#
R0#
I now have a conclusion: the "ip helper address" must have been WRONGLY described in this book: Wendell Odom, Rus Healy, Naren Mehta."CCIE Routing and Switching Exam Certification Guide, 3rd Edition", Page 128 and also Page 134!