When DHCP clients are connected to RI X but the external server is reachable via RI Y, forward-only (statless) is recommended but not required. Stateful DHCP clients and server by default need to be reachable via the same RI(VRF or VR). Route leaking will not work in such cases as JDHCP is statful and the DHCP offer will be drop on ingress VR.
Either a external physical link maybe used to connect externally to RI to RI and use routing or a internal LT interface can be used. Below example would be for internal LT interface to be used.
Configuration I have used:
set chassis fpc 0 pic 0 tunnel-services bandwidth 10g ***enable LT interfaces
Internal LT for routing between RI wireless and network-services
set interfaces lt-0/0/0 mtu 9192
set interfaces lt-0/0/0 unit 1 encapsulation ethernet
set interfaces lt-0/0/0 unit 1 peer-unit 2
set interfaces lt-0/0/0 unit 1 family inet address 192.168.1.1/30
set interfaces lt-0/0/0 unit 2 encapsulation ethernet
set interfaces lt-0/0/0 unit 2 peer-unit 1
set interfaces lt-0/0/0 unit 2 family inet address 192.168.1.2/30
set routing-instances SERVER-FACINGinterface lt-0/0/0.2
set routing-instances CLIENT-FACING interface lt-0/0/0.1
Routing-instance client facing.
set routing-instances CLIENT-FACING routing-options static route 45.3.106.0/24 next-hop 192.168.1.2 ***route to external DHCP server via LT
.
set routing-instances CLIENT-FACING forwarding-options dhcp-relay server-group group-1 45.3.106.4
set routing-instances CLIENT-FACING forwarding-options dhcp-relay active-server-group group-1
set routing-instances CLIENT-FACING forwarding-options dhcp-relay group clients active-server-group group-1
set routing-instances CLIENT-FACING forwarding-options dhcp-relay group clients overrides always-write-giaddr
set routing-instances CLIENT-FACING forwarding-options dhcp-relay group clients interface ae0.2700
set routing-instances CLIENT-FACING forwarding-options dhcp-relay group clients interface ae3.2800
set routing-instances CLIENT-FACING interface ae0.2700
set routing-instances CLIENT-FACING interface ae1.3734
set routing-instances CLIENT-FACING interface ae2.3735
set routing-instances CLIENT-FACING interface ae3.2800
set routing-instances CLIENT-FACING interface lo0.2010
set routing-instances CLIENT-FACING route-distinguisher x.x.x.x
set routing-instances CLIENT-FACING vrf-import CLIENT-FACING-import
set routing-instances CLIENT-FACING vrf-export CLIENT-FACING-export
set routing-instances CLIENT-FACING vrf-target target:x.x.x.x.x.x
set routing-instances CLIENT-FACING vrf-table-label
Routing-instance SERVER-FACING:
set routing-instances SERVER-FACING routing-options static route 172.25.192.0/19 next-hop 192.168.1.1 **** route back to GIADDR of DHCP CLIENT
set routing-instances SERVER-FACING interface lt-0/0/0.2
Example:
Hostname: equinix-router-re0
Model: mx304
Junos: 23.4R2-S2.1
labroot@equinix-router-re0# run show subscribers extensive
Type: DHCP
IP Address: 172.25.192.2
Logical System: default
Routing Instance: CLIENT-FACING
Interface: ae3.2800
Interface type: Static
Underlying Interface: ae3.2800
MAC Address: 00:20:01:00:00:01
State: Active
DHCP Relay IP Address: 172.25.192.1
Radius Accounting ID: jnpr :3
Session ID: 3
VLAN Id: 2800
Login Time: 2024-09-18 12:01:48 EDT
DHCP Options: len 9
35 01 01 37 04 01 03 3a 3b
DHCP Header: len 44
01 01 06 00 43 98 02 b4 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 20 01 00 00 01 00 00 00 00 00 00
00 00 00 00
labroot@equinix-router-re0# run show dhcp relay binding routing-instance CLIENT-FACING detail
Client IP Address: 172.25.192.2
Hardware Address: 00:20:01:00:00:01
State: BOUND(RELAY_STATE_BOUND)
Lease Expires: 2024-09-19 12:01:48 EDT
Lease Expires in: 85680 seconds
Lease Start: 2024-09-18 12:01:48 EDT
Last Packet Received: 2024-09-18 12:01:48 EDT
Incoming Client Interface: ae3.2800
Interface tag name: None
Client Interface Vlan Id: 2800
Server Ip Address: 45.3.106.4
Server Interface: none
Bootp Relay Address: 172.25.192.1
Session Id: 3
Relay Id Length: 31
Relay Id: /0x00020000/0x00000583/0x01000000/0x32633a34
Relay Id: /0x633a3135/0x3a61353a/0x35623a63/0x630000
JDHCP logs:
ep 18 11:59:37.305003 [MSTR][DEBUG] jdhcpd_aiu_is_phone_home_configured: phcd_status: phcd_enabled: 1, sztp_active: 0,phcd_enabled: 0
Sep 18 12:01:48.414457 [MSTR][DEBUG] jdhcpd_packet_info_new: PACKET - Allocated new v4 packet 0x4cf7390
Sep 18 12:01:48.414591 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP from == 0.0.0.0, port == 68 ]--
Sep 18 12:01:48.414629 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP size == 251, op == 1 ]--
Sep 18 12:01:48.414681 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP flags == 0 ]--
Sep 18 12:01:48.414722 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP htype == 1, hlen == 6 ]--
Sep 18 12:01:48.414750 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP hops == 0, xid == 439802b4 ]--
Sep 18 12:01:48.414778 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP secs == 0, flags == 0000 ]--
Sep 18 12:01:48.414809 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP ciaddr == 0.0.0.0 ]--
Sep 18 12:01:48.414871 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP yiaddr == 0.0.0.0 ]--
Sep 18 12:01:48.414921 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP siaddr == 0.0.0.0 ]--
Sep 18 12:01:48.414999 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP giaddr == 0.0.0.0 ]--
Sep 18 12:01:48.415047 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP chaddr == 00 20 01 00 00 01 00 00 00 00 00 00 00 00 00 00 ]--
Sep 18 12:01:48.415069 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP sname == ]--
Sep 18 12:01:48.415089 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP file == ]--
Sep 18 12:01:48.415116 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 53, len 1, data DHCP-DISCOVER ]--
Sep 18 12:01:48.415127 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 55, len 4, data 01 03 3a 3b ]--
Sep 18 12:01:48.415142 [MSTR][INFO] [default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 255, len 0 ]—
DHCP OFFER received over LT-0/0/0:
Sep 18 12:01:48.562544 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP from == 45.3.106.4, port == 67 ]--
Sep 18 12:01:48.562570 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP size == 269, op == 2 ]--
Sep 18 12:01:48.562622 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP flags == 0 ]--
Sep 18 12:01:48.562675 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP htype == 1, hlen == 6 ]--
Sep 18 12:01:48.562710 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP hops == 0, xid == 439802b4 ]--
Sep 18 12:01:48.562747 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP secs == 0, flags == 0000 ]--
Sep 18 12:01:48.562776 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP ciaddr == 0.0.0.0 ]--
Sep 18 12:01:48.562808 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP yiaddr == 172.25.192.2 ]--
Sep 18 12:01:48.562841 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP siaddr == 0.0.0.0 ]--
Sep 18 12:01:48.562904 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP giaddr == 172.25.192.1 ]--
Sep 18 12:01:48.562948 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP chaddr == 00 20 01 00 00 01 00 00 00 00 00 00 00 00 00 00 ]--
Sep 18 12:01:48.562968 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP sname == ]--
Sep 18 12:01:48.562976 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP file == ]--
Sep 18 12:01:48.562984 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 53, len 1, data DHCP-OFFER ]--
Sep 18 12:01:48.563002 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 51, len 4, data 00 01 51 80 ]--
Sep 18 12:01:48.563016 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 1, len 4, data ff ff ff 00 ]--
Sep 18 12:01:48.563026 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 54, len 4, data 2d 03 6a 04 ]--
Sep 18 12:01:48.563046 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 3, len 4, data ac 19 c0 01 ]--
Sep 18 12:01:48.563065 [MSTR][INFO] [default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 255, len 0 ]—
Request:
Sep 18 12:01:48.563976 [MSTR][DEBUG] jdhcpd_packet_info_new: PACKET - Allocated new v4 packet 0x4cf7390
Sep 18 12:01:48.564029 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP from == 0.0.0.0, port == 68 ]--
Sep 18 12:01:48.564080 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP size == 265, op == 1 ]--
Sep 18 12:01:48.564160 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP flags == 0 ]--
Sep 18 12:01:48.564197 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP htype == 1, hlen == 6 ]--
Sep 18 12:01:48.564244 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP hops == 0, xid == 439802b4 ]--
Sep 18 12:01:48.564294 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP secs == 0, flags == 0000 ]--
Sep 18 12:01:48.564328 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP ciaddr == 0.0.0.0 ]--
Sep 18 12:01:48.564371 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP yiaddr == 0.0.0.0 ]--
Sep 18 12:01:48.564405 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP siaddr == 0.0.0.0 ]--
Sep 18 12:01:48.564440 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP giaddr == 0.0.0.0 ]--
Sep 18 12:01:48.564486 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP chaddr == 00 20 01 00 00 01 00 00 00 00 00 00 00 00 00 00 ]--
Sep 18 12:01:48.564523 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP sname == ]--
Sep 18 12:01:48.564598 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ DHCP/BOOTP file == ]--
Sep 18 12:01:48.564632 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 53, len 1, data DHCP-REQUEST ]--
Sep 18 12:01:48.564714 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 55, len 4, data 01 03 3a 3b ]--
Sep 18 12:01:48.564752 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 54, len 4, data 2d 03 6a 04 ]--
Sep 18 12:01:48.564799 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 50, len 4, data ac 19 c0 02 ]--
Sep 18 12:01:48.564854 [MSTR][INFO] [default:CLIENT-FACING][RLY][INET][ae3.2800] --[ OPTION code 255, len 0 ]—
ACK:
Sep 18 12:01:48.664246 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP from == 45.3.106.4, port == 67 ]--
Sep 18 12:01:48.664298 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP size == 269, op == 2 ]--
Sep 18 12:01:48.664387 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP flags == 0 ]--
Sep 18 12:01:48.664448 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP htype == 1, hlen == 6 ]--
Sep 18 12:01:48.664513 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP hops == 0, xid == 439802b4 ]--
Sep 18 12:01:48.664547 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP secs == 0, flags == 0000 ]--
Sep 18 12:01:48.664580 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP ciaddr == 0.0.0.0 ]--
Sep 18 12:01:48.664635 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP yiaddr == 172.25.192.2 ]--
Sep 18 12:01:48.664685 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP siaddr == 0.0.0.0 ]--
Sep 18 12:01:48.664717 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP giaddr == 172.25.192.1 ]--
Sep 18 12:01:48.664740 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP chaddr == 00 20 01 00 00 01 00 00 00 00 00 00 00 00 00 00 ]--
Sep 18 12:01:48.664751 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP sname == ]--
Sep 18 12:01:48.664770 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ DHCP/BOOTP file == ]--
Sep 18 12:01:48.664795 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 53, len 1, data DHCP-ACK ]--
Sep 18 12:01:48.664807 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 51, len 4, data 00 01 51 80 ]--
Sep 18 12:01:48.664825 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 1, len 4, data ff ff ff 00 ]--
Sep 18 12:01:48.664844 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 54, len 4, data 2d 03 6a 04 ]--
Sep 18 12:01:48.664871 [MSTR][DEBUG][default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 3, len 4, data ac 19 c0 01 ]--
Sep 18 12:01:48.664903 [MSTR][INFO] [default:CLIENT-FACING][RLY][INET][lt-0/0/0.1] --[ OPTION code 255, len 0 ]--