This article describes how to establish in SRX a hub-spoke VPN with a spoke VPN peer that does not have a tunnel interface.
Does SRX support a hub-spoke VPN with a spoke VPN peer that does not have a tunnel interface? Normally, Hub-spoke VPN needs all the VPN peers to have tunnel interfaces; the hub device then uses NHTB to match VPN peers and the next hop. However, certain vendor's VPN devices may not support tunnel interfaces. Is it possible for SRX to establish a hub-spoke VPN with them? Topology : 200.200.200.1 st0.0 192.168.200.254/24 |--------------VPN gateway1-------subnet1(10.1.1.0/24) SRX----------------------------- 200.200.200.254 |--------------VPN gateway2-------subnet2(10.1.2.0/24) 200.200.200.2 SRX needs to establish the hub-spoke VPN with VPN gateway1 and gateway2; VPN gateway1 and gateway2 are non-Juniper devices that do not support the tunnel interface. SRX is the hub and the others are spokes. Subnet1 needs to communicate with subnet2, which is passing through SRX, via IPSec VPN.
200.200.200.1 st0.0 192.168.200.254/24 |--------------VPN gateway1-------subnet1(10.1.1.0/24) SRX----------------------------- 200.200.200.254 |--------------VPN gateway2-------subnet2(10.1.2.0/24) 200.200.200.2
VPN gateway1 and gateway2 do not support the tunnel interface; SRX is unable to use NHTB to match VPN peers and the next hop.
SRX supports this kind of scenario. As the NHTB matching is local, it is used by SRX for locally searching for the next hop and peer VPNs matching. You just need to use the nonexistent peer tunnel address. For the above topology, from SRX's view, assume that VPN peers have tunnel interfaces and addresses. Here are the IPsec-related configurations in SRX:
root@SRX240# show security ike policy p1 { proposal-set basic; pre-shared-key ascii-text "$ ABC123 "; ## SECRET-DATA } gateway gateway1 { ike-policy p1; address 200.200.200.1; external-interface reth0; } gateway gateway2 { ike-policy p1; address 200.200.200.2; external-interface reth0; } root@SRX240# show security ipsec policy p1 { proposal-set basic; } vpn gateway1 { bind-interface st0.0; ike { gateway gateway1; ipsec-policy p1; } } vpn gateway2 { bind-interface st0.0; ike { gateway gateway2; ipsec-policy p1; } root@SRX240# show interfaces st0 unit 0 { multipoint; family inet { next-hop-tunnel 192.168.200.1 ipsec-vpn gateway1; < gateway1 does not have this tunnel interface and address next-hop-tunnel 192.168.200.2 ipsec-vpn gateway2; < gateway2 does not have this tunnel interface and address address 192.168.200.254/24; } } root@SRX240-d# show routing-options static { route 10.1.1.0/24 next-hop 192.168.200.1 route 10.1.2.0/24 next-hop 193.168.200.2; < the 'virtual' peer tunnel address should be the same subnet with SRX's local tunnel address or the address should be reachable; so that SRX can load it to the routing table. }
root@SRX240# show security ike policy p1 { proposal-set basic; pre-shared-key ascii-text "$
"; ## SECRET-DATA } gateway gateway1 { ike-policy p1; address 200.200.200.1; external-interface reth0; } gateway gateway2 { ike-policy p1; address 200.200.200.2; external-interface reth0; } root@SRX240# show security ipsec policy p1 { proposal-set basic; } vpn gateway1 { bind-interface st0.0; ike { gateway gateway1; ipsec-policy p1; } } vpn gateway2 { bind-interface st0.0; ike { gateway gateway2; ipsec-policy p1; } root@SRX240# show interfaces st0 unit 0 { multipoint; family inet { next-hop-tunnel 192.168.200.1 ipsec-vpn gateway1; < gateway1 does not have this tunnel interface and address next-hop-tunnel 192.168.200.2 ipsec-vpn gateway2; < gateway2 does not have this tunnel interface and address address 192.168.200.254/24; } } root@SRX240-d# show routing-options static { route 10.1.1.0/24 next-hop 192.168.200.1 route 10.1.2.0/24 next-hop 193.168.200.2; < the 'virtual' peer tunnel address should be the same subnet with SRX's local tunnel address or the address should be reachable; so that SRX can load it to the routing table. }
root@SRX240# run show security ipsec next-hop-tunnels
Next-hop gateway interface IPSec VPN name Flag 192.168.200.1 st0.0 gateway1 Static 192.168.200.2 st0.0 gateway2 Static
root@SRX240# run show route inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.1.1.0/24 *[Static/5] 03:14:14 > to 192.168.200.1 via st0.0 10.1.2.0/24 *[Static/5] 04:51:13 > to 193.168.200.2 via st0.0
2020-02-26: minor non-technical edits.