Site-To-Site

This scenario shows how to configure and connect two subnets with each other through a VPN tunnel and automatically configure the negotiated remote prefixes as routes. DUT0 acts as a responder and DUT1 as a initiator.

../../../../../../../_images/sitetosite3.svg

Test Site-To-Site With Basic Route Installation

Description

In this scenario, both devices install routes for the VPN traffic in the main table.

Scenario

Step 1: Run command protocols ip show route at DUT0 and check if output does not contain the following tokens:

K>* 10.3.0.0/24
Show output
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

IPv4 unicast VRF default:
L   10.215.168.20/32 is directly connected, eth0 inactive, weight 1, 00:52:13
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:14:45
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:14:45
L   30.0.0.1/32 is directly connected, eth0 inactive, weight 1, 00:01:00

Step 2: Set the following configuration in DUT0 :

set interfaces dummy dum0 address 10.1.0.1/24
set interfaces ethernet eth0 address 80.0.0.1/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf main
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX19ll/TZyiFW2hQ+hQbagBCk1Yo+F40/3aI=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type respond
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.1
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.2
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.1.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.3.0.0/24

Step 3: Set the following configuration in DUT1 :

set interfaces dummy dum0 address 10.3.0.1/24
set interfaces ethernet eth0 address 80.0.0.2/24
set protocols static route 0.0.0.0/0 next-hop 80.0.0.1
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf main
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX1++Uc1YK9cNRrtmhjcyfagFB6f3SnX2VD8=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type initiate
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.2
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.1
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.1.0.0/24

Step 4: Ping IP address 80.0.0.1 from DUT1:

admin@DUT1$ ping 80.0.0.1 count 1 size 56 timeout 1
Show output
PING 80.0.0.1 (80.0.0.1) 56(84) bytes of data.
64 bytes from 80.0.0.1: icmp_seq=1 ttl=64 time=0.207 ms

--- 80.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.207/0.207/0.207/0.000 ms

Step 5: Ping IP address 80.0.0.2 from DUT0:

admin@DUT0$ ping 80.0.0.2 count 1 size 56 timeout 1
Show output
PING 80.0.0.2 (80.0.0.2) 56(84) bytes of data.
64 bytes from 80.0.0.2: icmp_seq=1 ttl=64 time=0.208 ms

--- 80.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.208/0.208/0.208/0.000 ms

Step 6: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

peer-PEER-tunnel-\d+.+INSTALLED
Show output
vpn-peer-PEER: #1, ESTABLISHED, IKEv2, f0c7aa4bfc9e2a1d_i 3c35fd9a6a0e0565_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 0s ago, rekeying in 26474s
  peer-PEER-tunnel-1: #1, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 0s ago, rekeying in 3382s, expires in 3960s
    in  c146b437,      0 bytes,     0 packets
    out c7f42fff,      0 bytes,     0 packets
    local  10.1.0.0/24
    remote 10.3.0.0/24

Step 7: Run command protocols ip show route at DUT0 and check if output contains the following tokens:

K>* 10.3.0.0/24
Show output
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

IPv4 unicast VRF default:
C>* 10.1.0.0/24 is directly connected, dum0, weight 1, 00:00:05
K * 10.1.0.0/24 [0/0] is directly connected, dum0, weight 1, 00:00:05
L>* 10.1.0.1/32 is directly connected, dum0, weight 1, 00:00:05
K>* 10.3.0.0/24 [0/0] via 80.0.0.2, eth0, weight 1, 00:00:00
L   10.215.168.20/32 is directly connected, eth0 inactive, weight 1, 00:52:20
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:14:52
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:14:52
L   30.0.0.1/32 is directly connected, eth0 inactive, weight 1, 00:01:07
C>* 80.0.0.0/24 is directly connected, eth0, weight 1, 00:00:05
K * 80.0.0.0/24 [0/0] is directly connected, eth0, weight 1, 00:00:05
L>* 80.0.0.1/32 is directly connected, eth0, weight 1, 00:00:05

Step 8: Run command vpn ipsec clear sa at DUT1 and expect this output:

Show output
Deleting IPSec SAs... 100.0%
Closed tunnels: 1

Step 9: Run command vpn ipsec initiate peer PEER at DUT1 and expect this output:

Show output
Initiating IPSec SAs... 0.0%
Initiated tunnels: 1

Step 10: Ping IP address 10.1.0.1 from DUT1:

admin@DUT1$ ping 10.1.0.1 local-address 10.3.0.1 count 1 size 56 timeout 1
Show output
PING 10.1.0.1 (10.1.0.1) from 10.3.0.1 : 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.273 ms

--- 10.1.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.273/0.273/0.273/0.000 ms

Step 11: Initiate a tcp connection from DUT1 to DUT0 and try to send some messages between both endpoints

admin@DUT0$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 10.1.0.1 8080 tcp local-address 10.3.0.1

Step 12: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

[1-9]\d? packets
Show output
vpn-peer-PEER: #2, ESTABLISHED, IKEv2, 64da1d9053723c85_i c0ce2221a9347e20_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 2s ago, rekeying in 27124s
  peer-PEER-tunnel-1: #2, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 2s ago, rekeying in 3272s, expires in 3958s
    in  ced5b3ac,    712 bytes,    11 packets,     0s ago
    out c4bddbc4,    660 bytes,    10 packets,     0s ago
    local  10.1.0.0/24
    remote 10.3.0.0/24

Test Site-To-Site With VRF Route Installation

Description

In this scenario, DUT0 install reoutes in a separate VRF called LAN.

Scenario

Step 1: Run command protocols vrf LAN ip show route at DUT0 and check if output does not contain the following tokens:

K>* 10.3.0.0/24
Show output
% VRF LAN not found

Step 2: Set the following configuration in DUT0 :

set interfaces dummy dum0 address 10.1.0.1/24
set interfaces dummy dum0 vrf LAN
set interfaces ethernet eth0 address 80.0.0.1/24
set interfaces ethernet eth0 vrf WAN
set protocols vrf WAN static route 10.1.0.0/24 next-hop-vrf LAN
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf LAN
set system vrf WAN
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX18BJmnELB/xlyP5yJeSiwFy9PxkR/C9Mo8=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type respond
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.1
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.2
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes LAN
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.1.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.3.0.0/24

Step 3: Set the following configuration in DUT1 :

set interfaces dummy dum0 address 10.3.0.1/24
set interfaces ethernet eth0 address 80.0.0.2/24
set protocols static route 0.0.0.0/0 next-hop 80.0.0.1
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf main
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX18+bbt0sYTPmIy+iYmD7Y2QTaf/xF9BLoE=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type initiate
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.2
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.1
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.1.0.0/24

Step 4: Ping IP address 80.0.0.1 from DUT1:

admin@DUT1$ ping 80.0.0.1 count 1 size 56 timeout 1
Show output
PING 80.0.0.1 (80.0.0.1) 56(84) bytes of data.
64 bytes from 80.0.0.1: icmp_seq=1 ttl=64 time=0.241 ms

--- 80.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.241/0.241/0.241/0.000 ms

Step 5: Ping IP address 80.0.0.2 from DUT0:

admin@DUT0$ ping 80.0.0.2 vrf WAN count 1 size 56 timeout 1
Show output
ping: Warning: source address might be selected on device other than: WAN
PING 80.0.0.2 (80.0.0.2) from 80.0.0.1 WAN: 56(84) bytes of data.
64 bytes from 80.0.0.2: icmp_seq=1 ttl=64 time=0.228 ms

--- 80.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.228/0.228/0.228/0.000 ms

Step 6: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

peer-PEER-tunnel-\d+.+INSTALLED
Show output
vpn-peer-PEER: #1, ESTABLISHED, IKEv2, 752c6906e0df6df6_i 5a2dfa876afb4379_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 0s ago, rekeying in 21138s
  peer-PEER-tunnel-1: #1, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 0s ago, rekeying in 3278s, expires in 3960s
    in  c676fe45,      0 bytes,     0 packets
    out c8c6fe8c,      0 bytes,     0 packets
    local  10.1.0.0/24
    remote 10.3.0.0/24

Step 7: Run command protocols vrf LAN ip show route at DUT0 and check if output contains the following tokens:

K>* 10.3.0.0/24
Show output
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

IPv4 unicast VRF LAN:
K>* 0.0.0.0/0 [255/8192] unreachable (ICMP unreachable), weight 1, 00:00:05
C>* 10.1.0.0/24 is directly connected, dum0, weight 1, 00:00:05
L>* 10.1.0.1/32 is directly connected, dum0, weight 1, 00:00:05
K>* 10.3.0.0/24 [0/0] via 80.0.0.2, eth0 (vrf WAN), weight 1, 00:00:00

Step 8: Run command vpn ipsec clear sa at DUT1 and expect this output:

Show output
Deleting IPSec SAs... 100.0%
Closed tunnels: 1

Step 9: Run command vpn ipsec initiate peer PEER at DUT1 and expect this output:

Show output
Initiating IPSec SAs... 0.0%
Initiated tunnels: 1

Step 10: Ping IP address 10.1.0.1 from DUT1:

admin@DUT1$ ping 10.1.0.1 local-address 10.3.0.1 count 1 size 56 timeout 1
Show output
PING 10.1.0.1 (10.1.0.1) from 10.3.0.1 : 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.354 ms

--- 10.1.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.354/0.354/0.354/0.000 ms

Step 11: Initiate a tcp connection from DUT1 to DUT0 and try to send some messages between both endpoints

admin@DUT0$ monitor test connection server 8080 tcp vrf LAN
admin@DUT1$ monitor test connection client 10.1.0.1 8080 tcp local-address 10.3.0.1

Step 12: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

[1-9]\d? packets
Show output
vpn-peer-PEER: #2, ESTABLISHED, IKEv2, 44fc69686544dc42_i 4ec15d15ae8089f8_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 3s ago, rekeying in 20587s
  peer-PEER-tunnel-1: #2, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 3s ago, rekeying in 3421s, expires in 3957s
    in  c83530c9,    712 bytes,    11 packets,     0s ago
    out c9336f7f,    660 bytes,    10 packets,     0s ago
    local  10.1.0.0/24
    remote 10.3.0.0/24

Test Site-To-Site With Route Installation And Metrics

Description

In this scenario, DUT0 installs routes with differents metrics for both IPsec peers. The point is to check if the routes are installed correctly and most importantly, whenever the prioritized route is down, the backup route is used.

Scenario

Step 1: Run command protocols ip show route at DUT0 and check if output does not contain the following tokens:

K>* 10.3.0.0/24
Show output
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

IPv4 unicast VRF default:
L   10.215.168.20/32 is directly connected, eth0 inactive, weight 1, 00:52:44
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:15:16
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:15:16
L   30.0.0.1/32 is directly connected, eth0 inactive, weight 1, 00:01:31

Step 2: Set the following configuration in DUT0 :

set interfaces dummy dum0 address 10.1.0.1/24
set interfaces ethernet eth0 address 80.0.0.1/24
set interfaces ethernet eth1 address 90.0.0.1/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf main
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX1+54QxGhmeg17UuyoJ9BAbrWOA1pFvkf2M=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec logging log-types any log-level 2
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type respond
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.1
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.2
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.1.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 route-priority 10
set vpn ipsec site-to-site peer PEER1 auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER1 connection-type respond
set vpn ipsec site-to-site peer PEER1 default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER1 ike-group IKE-SA
set vpn ipsec site-to-site peer PEER1 local-address 90.0.0.1
set vpn ipsec site-to-site peer PEER1 remote-address 90.0.0.3
set vpn ipsec site-to-site peer PEER1 tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER1 tunnel 1 local prefix 10.1.0.0/24
set vpn ipsec site-to-site peer PEER1 tunnel 1 remote prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER1 tunnel 1 route-priority 100

Step 3: Set the following configuration in DUT1 :

set interfaces dummy dum0 address 10.3.0.1/24
set interfaces ethernet eth0 address 80.0.0.2/24
set protocols static route 0.0.0.0/0 next-hop 80.0.0.1
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system vrf main
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX1+mfQr6cb+8Uef04OzYaeO1ZBLrp+ijF2c=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type initiate
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 80.0.0.2
set vpn ipsec site-to-site peer PEER remote-address 80.0.0.1
set vpn ipsec site-to-site peer PEER tunnel 1 install-routes main
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.1.0.0/24

Step 4: Set the following configuration in DUT2 :

set interfaces dummy dum0 address 10.3.0.1/24
set interfaces ethernet eth1 address 90.0.0.3/24
set protocols static route 0.0.0.0/0 next-hop 90.0.0.1
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set vpn ipsec auth-profile AUTH-SA global-secrets ike-psk %any encrypted-secret U2FsdGVkX1+oDoqfxbiPEyLOigIFjj+5cxdzgd5Q47Y=
set vpn ipsec auth-profile AUTH-SA local auth ike-psk id %any
set vpn ipsec esp-group CHILD-SA mode tunnel
set vpn ipsec esp-group CHILD-SA proposal 1 encryption aes256gcm128
set vpn ipsec esp-group CHILD-SA proposal 1 pfs dh-group19
set vpn ipsec ike-group IKE-SA key-exchange ikev2
set vpn ipsec ike-group IKE-SA proposal 1 dh-group 19
set vpn ipsec ike-group IKE-SA proposal 1 encryption aes256gcm128
set vpn ipsec ike-group IKE-SA proposal 1 hash sha256
set vpn ipsec site-to-site peer PEER auth-profile AUTH-SA
set vpn ipsec site-to-site peer PEER connection-type initiate
set vpn ipsec site-to-site peer PEER default-esp-group CHILD-SA
set vpn ipsec site-to-site peer PEER ike-group IKE-SA
set vpn ipsec site-to-site peer PEER local-address 90.0.0.3
set vpn ipsec site-to-site peer PEER remote-address 90.0.0.1
set vpn ipsec site-to-site peer PEER tunnel 1 local prefix 10.3.0.0/24
set vpn ipsec site-to-site peer PEER tunnel 1 remote prefix 10.1.0.0/24

Step 5: Ping IP address 80.0.0.1 from DUT1:

admin@DUT1$ ping 80.0.0.1 count 1 size 56 timeout 1
Show output
PING 80.0.0.1 (80.0.0.1) 56(84) bytes of data.
64 bytes from 80.0.0.1: icmp_seq=1 ttl=64 time=0.249 ms

--- 80.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.249/0.249/0.249/0.000 ms

Step 6: Ping IP address 80.0.0.2 from DUT0:

admin@DUT0$ ping 80.0.0.2 count 1 size 56 timeout 1
Show output
PING 80.0.0.2 (80.0.0.2) 56(84) bytes of data.
64 bytes from 80.0.0.2: icmp_seq=1 ttl=64 time=0.253 ms

--- 80.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.253/0.253/0.253/0.000 ms

Step 7: Ping IP address 90.0.0.3 from DUT2:

admin@DUT2$ ping 90.0.0.3 count 1 size 56 timeout 1
Show output
PING 90.0.0.3 (90.0.0.3) 56(84) bytes of data.
64 bytes from 90.0.0.3: icmp_seq=1 ttl=64 time=0.027 ms

--- 90.0.0.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.027/0.027/0.027/0.000 ms

Step 8: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

peer-PEER-tunnel-\d+.+INSTALLED
Show output
vpn-peer-PEER1: #2, ESTABLISHED, IKEv2, 0c0d3adb3bd1041d_i 35760886d8b49e45_r*
  local  '90.0.0.1' @ 90.0.0.1[500]
  remote '90.0.0.3' @ 90.0.0.3[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 1s ago, rekeying in 25200s
  peer-PEER1-tunnel-1: #2, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 1s ago, rekeying in 3329s, expires in 3959s
    in  cf577430,      0 bytes,     0 packets
    out c20dfc69,      0 bytes,     0 packets
    local  10.1.0.0/24
    remote 10.3.0.0/24
vpn-peer-PEER: #1, ESTABLISHED, IKEv2, ab9db6b3d37e657e_i 6c7e559acdf46828_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 5s ago, rekeying in 28625s
  peer-PEER-tunnel-1: #1, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 5s ago, rekeying in 3487s, expires in 3955s
    in  ca48ab0e,      0 bytes,     0 packets
    out ce2a390d,      0 bytes,     0 packets
    local  10.1.0.0/24
    remote 10.3.0.0/24

Step 9: Run command protocols ip show route at DUT0 and check if output contains the following tokens:

K>* 10.3.0.0/24
Show output
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

IPv4 unicast VRF default:
C>* 10.1.0.0/24 is directly connected, dum0, weight 1, 00:00:10
K * 10.1.0.0/24 [0/0] is directly connected, dum0, weight 1, 00:00:10
L>* 10.1.0.1/32 is directly connected, dum0, weight 1, 00:00:10
K * 10.3.0.0/24 [0/100] via 90.0.0.3, eth1, weight 1, 00:00:01
K>* 10.3.0.0/24 [0/10] via 80.0.0.2, eth0, weight 1, 00:00:05
L   10.215.168.20/32 is directly connected, eth0 inactive, weight 1, 00:52:58
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:15:30
L   20.0.0.2/32 is directly connected, unknown inactive, weight 1, 00:15:30
L   30.0.0.1/32 is directly connected, eth0 inactive, weight 1, 00:01:45
C>* 80.0.0.0/24 is directly connected, eth0, weight 1, 00:00:10
K * 80.0.0.0/24 [0/0] is directly connected, eth0, weight 1, 00:00:10
L>* 80.0.0.1/32 is directly connected, eth0, weight 1, 00:00:10
C>* 90.0.0.0/24 is directly connected, eth1, weight 1, 00:00:10
K * 90.0.0.0/24 [0/0] is directly connected, eth1, weight 1, 00:00:10
L>* 90.0.0.1/32 is directly connected, eth1, weight 1, 00:00:10

Step 10: Run command show system route ip at DUT0 and check if output contains the following tokens:

10.3.0.0/24 via 90.0.0.3 dev eth1 proto static metric 100
10.3.0.0/24 via 80.0.0.2 dev eth0 proto static metric 10
Show output
10.1.0.0/24 dev dum0 proto kernel scope link src 10.1.0.1
10.3.0.0/24 via 80.0.0.2 dev eth0 proto static metric 10
10.3.0.0/24 via 90.0.0.3 dev eth1 proto static metric 100
80.0.0.0/24 dev eth0 proto kernel scope link src 80.0.0.1
90.0.0.0/24 dev eth1 proto kernel scope link src 90.0.0.1

Note

The tunnel with the lowest metric configured in the route-priority parameter should be the one used to route the traffic.

Step 11: Run command vpn ipsec clear sa at DUT1 and expect this output:

Show output
Deleting IPSec SAs... 100.0%
Closed tunnels: 1

Step 12: Run command vpn ipsec initiate peer PEER at DUT1 and expect this output:

Show output
Initiating IPSec SAs... 0.0%
Initiated tunnels: 1

Step 13: Ping IP address 10.1.0.1 from DUT1:

admin@DUT1$ ping 10.1.0.1 local-address 10.3.0.1 count 1 size 56 timeout 1
Show output
PING 10.1.0.1 (10.1.0.1) from 10.3.0.1 : 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.251 ms

--- 10.1.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.251/0.251/0.251/0.000 ms

Step 14: Initiate a tcp connection from DUT1 to DUT0 and try to send some messages between both endpoints

admin@DUT0$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 10.1.0.1 8080 tcp local-address 10.3.0.1

Step 15: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

[1-9]\d? packets
Show output
vpn-peer-PEER: #3, ESTABLISHED, IKEv2, ed7569f0178e3ebb_i fe796cacb1a14d69_r*
  local  '80.0.0.1' @ 80.0.0.1[500]
  remote '80.0.0.2' @ 80.0.0.2[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 3s ago, rekeying in 17032s
  peer-PEER-tunnel-1: #3, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 3s ago, rekeying in 3361s, expires in 3957s
    in  c34a4e20,    712 bytes,    11 packets,     1s ago
    out cf409d1b,    764 bytes,    12 packets,     1s ago
    local  10.1.0.0/24
    remote 10.3.0.0/24
vpn-peer-PEER1: #2, ESTABLISHED, IKEv2, 0c0d3adb3bd1041d_i 35760886d8b49e45_r*
  local  '90.0.0.1' @ 90.0.0.1[500]
  remote '90.0.0.3' @ 90.0.0.3[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 4s ago, rekeying in 25197s
  peer-PEER1-tunnel-1: #2, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 4s ago, rekeying in 3326s, expires in 3956s
    in  cf577430,      0 bytes,     0 packets
    out c20dfc69,      0 bytes,     0 packets
    local  10.1.0.0/24
    remote 10.3.0.0/24

Note

Now we will shutdown the tunnel with the lowest metric from DUT1 and check if the traffic is routed through the backup tunnel.

Step 16: Run command vpn ipsec clear sa at DUT1 and expect this output:

Show output
Deleting IPSec SAs... 100.0%
Closed tunnels: 1

Step 17: Run command vpn ipsec clear sa at DUT2 and expect this output:

Show output
Deleting IPSec SAs... 100.0%
Closed tunnels: 1

Step 18: Run command vpn ipsec initiate peer PEER at DUT2 and expect this output:

Show output
Initiating IPSec SAs... 0.0%
Initiated tunnels: 1

Step 19: Ping IP address 10.1.0.1 from DUT2:

admin@DUT2$ ping 10.1.0.1 local-address 10.3.0.1 count 1 size 56 timeout 1
Show output
PING 10.1.0.1 (10.1.0.1) from 10.3.0.1 : 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.339 ms

--- 10.1.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.339/0.339/0.339/0.000 ms

Step 20: Initiate a tcp connection from DUT2 to DUT0 and try to send some messages between both endpoints

admin@DUT0$ monitor test connection server 8080 tcp
admin@DUT2$ monitor test connection client 10.1.0.1 8080 tcp local-address 10.3.0.1

Step 21: Run command vpn ipsec show sa at DUT0 and check if output matches the following regular expressions:

[1-9]\d? packets
Show output
vpn-peer-PEER1: #4, ESTABLISHED, IKEv2, 24a49bc72d896983_i 7c1e2d9402f50b07_r*
  local  '90.0.0.1' @ 90.0.0.1[500]
  remote '90.0.0.3' @ 90.0.0.3[500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 3s ago, rekeying in 27960s
  peer-PEER1-tunnel-1: #4, reqid 1, INSTALLED, TUNNEL, ESP:AES_GCM_16-256
    installed 3s ago, rekeying in 3399s, expires in 3957s
    in  ce1729b0,    712 bytes,    11 packets,     0s ago
    out ca79a484,    660 bytes,    10 packets,     0s ago
    local  10.1.0.0/24
    remote 10.3.0.0/24

Step 22: Run command show system route ip at DUT0 and check if output contains the following tokens:

10.3.0.0/24 via 90.0.0.3 dev eth1 proto static metric 100
Show output
10.1.0.0/24 dev dum0 proto kernel scope link src 10.1.0.1
10.3.0.0/24 via 90.0.0.3 dev eth1 proto static metric 100
80.0.0.0/24 dev eth0 proto kernel scope link src 80.0.0.1
90.0.0.0/24 dev eth1 proto kernel scope link src 90.0.0.1

Step 23: Run command show system route ip at DUT0 and check if output does not contain the following tokens:

10.3.0.0/24 via 80.0.0.2 dev eth0 proto static metric 10
Show output
10.1.0.0/24 dev dum0 proto kernel scope link src 10.1.0.1
10.3.0.0/24 via 90.0.0.3 dev eth1 proto static metric 100
80.0.0.0/24 dev eth0 proto kernel scope link src 80.0.0.1
90.0.0.0/24 dev eth1 proto kernel scope link src 90.0.0.1