Description

DHCP client and DHCP server are in different VRFs but the VRFs share routes. We would like to configure this without using the forward-only option.

Symptoms

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.

Solution

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 lt-0/0/0.1

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 ]--

 

Modification History

2024-09-18 : Article Created