129 lines
4.1 KiB
ReStructuredText
129 lines
4.1 KiB
ReStructuredText
|
How to connect VPP instances using IKEv2
|
|||
|
========================================
|
|||
|
|
|||
|
This section describes how to initiate IKEv2 session between two VPP
|
|||
|
instances using Linux veth interfaces and namespaces.
|
|||
|
|
|||
|
Create veth interfaces and namespaces and configure it:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
sudo ip link add ifresp type veth peer name ifinit
|
|||
|
sudo ip link set dev ifresp up
|
|||
|
sudo ip link set dev ifinit up
|
|||
|
|
|||
|
sudo ip netns add clientns
|
|||
|
sudo ip netns add serverns
|
|||
|
sudo ip link add veth_client type veth peer name client
|
|||
|
sudo ip link add veth_server type veth peer name server
|
|||
|
sudo ip link set dev veth_client up netns clientns
|
|||
|
sudo ip link set dev veth_server up netns serverns
|
|||
|
|
|||
|
sudo ip netns exec clientns \
|
|||
|
bash -c "
|
|||
|
ip link set dev lo up
|
|||
|
ip addr add 192.168.5.2/24 dev veth_client
|
|||
|
ip addr add fec5::2/16 dev veth_client
|
|||
|
ip route add 192.168.3.0/24 via 192.168.5.1
|
|||
|
ip route add fec3::0/16 via fec5::1
|
|||
|
"
|
|||
|
|
|||
|
sudo ip netns exec serverns \
|
|||
|
bash -c "
|
|||
|
ip link set dev lo up
|
|||
|
ip addr add 192.168.3.2/24 dev veth_server
|
|||
|
ip addr add fec3::2/16 dev veth_server
|
|||
|
ip route add 192.168.5.0/24 via 192.168.3.1
|
|||
|
ip route add fec5::0/16 via fec3::1
|
|||
|
"
|
|||
|
|
|||
|
Run responder VPP:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
sudo /usr/bin/vpp unix { \
|
|||
|
cli-listen /tmp/vpp_resp.sock \
|
|||
|
gid $(id -g) } \
|
|||
|
api-segment { prefix vpp } \
|
|||
|
plugins { plugin dpdk_plugin.so { disable } }
|
|||
|
|
|||
|
Configure the responder
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
create host-interface name ifresp
|
|||
|
set interface ip addr host-ifresp 192.168.10.2/24
|
|||
|
set interface state host-ifresp up
|
|||
|
|
|||
|
create host-interface name server
|
|||
|
set interface ip addr host-server 192.168.3.1/24
|
|||
|
set interface state host-server up
|
|||
|
|
|||
|
ikev2 profile add pr1
|
|||
|
ikev2 profile set pr1 auth shared-key-mic string Vpp123
|
|||
|
ikev2 profile set pr1 id local ipv4 192.168.10.2
|
|||
|
ikev2 profile set pr1 id remote ipv4 192.168.10.1
|
|||
|
|
|||
|
ikev2 profile set pr1 traffic-selector local ip-range 192.168.3.0 - 192.168.3.255 port-range 0 - 65535 protocol 0
|
|||
|
ikev2 profile set pr1 traffic-selector remote ip-range 192.168.5.0 - 192.168.5.255 port-range 0 - 65535 protocol 0
|
|||
|
|
|||
|
create ipip tunnel src 192.168.10.2 dst 192.168.10.1
|
|||
|
ikev2 profile set pr1 tunnel ipip0
|
|||
|
ip route add 192.168.5.0/24 via 192.168.10.1 ipip0
|
|||
|
set interface unnumbered ipip0 use host-ifresp
|
|||
|
|
|||
|
Run initiator VPP:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
sudo /usr/bin/vpp unix { \
|
|||
|
cli-listen /tmp/vpp_init.sock \
|
|||
|
gid $(id -g) } \
|
|||
|
api-segment { prefix vpp } \
|
|||
|
plugins { plugin dpdk_plugin.so { disable } }
|
|||
|
|
|||
|
Configure initiator:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
create host-interface name ifinit
|
|||
|
set interface ip addr host-ifinit 192.168.10.1/24
|
|||
|
set interface state host-ifinit up
|
|||
|
|
|||
|
create host-interface name client
|
|||
|
set interface ip addr host-client 192.168.5.1/24
|
|||
|
set interface state host-client up
|
|||
|
|
|||
|
ikev2 profile add pr1
|
|||
|
ikev2 profile set pr1 auth shared-key-mic string Vpp123
|
|||
|
ikev2 profile set pr1 id local ipv4 192.168.10.1
|
|||
|
ikev2 profile set pr1 id remote ipv4 192.168.10.2
|
|||
|
|
|||
|
ikev2 profile set pr1 traffic-selector remote ip-range 192.168.3.0 - 192.168.3.255 port-range 0 - 65535 protocol 0
|
|||
|
ikev2 profile set pr1 traffic-selector local ip-range 192.168.5.0 - 192.168.5.255 port-range 0 - 65535 protocol 0
|
|||
|
|
|||
|
ikev2 profile set pr1 responder host-ifinit 192.168.10.2
|
|||
|
ikev2 profile set pr1 ike-crypto-alg aes-gcm-16 256 ike-dh modp-2048
|
|||
|
ikev2 profile set pr1 esp-crypto-alg aes-gcm-16 256
|
|||
|
|
|||
|
create ipip tunnel src 192.168.10.1 dst 192.168.10.2
|
|||
|
ikev2 profile set pr1 tunnel ipip0
|
|||
|
ip route add 192.168.3.0/24 via 192.168.10.2 ipip0
|
|||
|
set interface unnumbered ipip0 use host-ifinit
|
|||
|
|
|||
|
Initiate the IKEv2 connection:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
vpp# ikev2 initiate sa-init pr1
|
|||
|
|
|||
|
Responder’s and initiator’s private networks are now connected with
|
|||
|
IPSEC tunnel:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
$ sudo ip netns exec clientns ping 192.168.3.1
|
|||
|
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
|
|||
|
64 bytes from 192.168.3.1: icmp_seq=1 ttl=63 time=1.64 ms
|
|||
|
64 bytes from 192.168.3.1: icmp_seq=2 ttl=63 time=7.24 ms
|