2.7.4. Site-to-Site VPN Using Libreswan To create a site-to-site IPsec VPN, joining together two networks, an IPsec tunnel is created between two hosts, endpoints, which are configured to permit traffic from one or more subnets to pass through. They can therefore be thought of as gateways to the remote portion of the network. The configuration of the site-to-site VPN only differs from the host-to-host VPN in that one or more networks or subnets must be specified in the configuration file. To configure Libreswan to create a site-to-site IPsec VPN, first configure a host-to-host IPsec VPN as described in Section 2.7.3, "Host-To-Host VPN Using Libreswan" and then copy or move the file to a file with a suitable name, such as /etc/ipsec.d/my_site-to-site.conf . Using an editor running as root , edit the custom configuration file /etc/ipsec.d/my_site-to-site.conf as follows: To bring the tunnels up, restart Libreswan or manually load and initiate all the connections using the following commands as root : 2.7.4.1. Verify Site-to-Site VPN Using Libreswan Verifying that packets are being sent via the VPN tunnel is the same procedure as explained in Section 2.7.3.1, "Verify Host-To-Host VPN Using Libreswan" .

Commands:
conn mysubnet also=mytunnel leftsubnet=192.0.1.0/24 rightsubnet=192.0.2.0/24 conn mysubnet6 also=mytunnel connaddrfamily=ipv6 leftsubnet=2001:db8:0:1::/64 rightsubnet=2001:db8:0:2::/64 conn mytunnel leftid=@west.example.com left=192.1.2.23 leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...] W2n417C/4urYHQkCvuIQ== rightid=@east.example.com right=192.1.2.45 rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ== authby=rsasig
~]# ipsec auto --add mysubnet
~]# ipsec auto --add mysubnet6
~]# ipsec auto --add mytunnel
~]# ipsec auto --up mysubnet 104 "mysubnet" #1: STATE_MAIN_I1: initiate 003 "mysubnet" #1: received Vendor ID payload [Dead Peer Detection] 003 "mytunnel" #1: received Vendor ID payload [FRAGMENTATION] 106 "mysubnet" #1: STATE_MAIN_I2: sent MI2, expecting MR2 108 "mysubnet" #1: STATE_MAIN_I3: sent MI3, expecting MR3 003 "mysubnet" #1: received Vendor ID payload [CAN-IKEv2] 004 "mysubnet" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=aes_128 prf=oakley_sha group=modp2048} 117 "mysubnet" #2: STATE_QUICK_I1: initiate 004 "mysubnet" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x9414a615 <0x1a8eb4ef xfrm=AES_128-HMAC_SHA1 NATOA=none NATD=none DPD=none}
~]# ipsec auto --up mysubnet6 003 "mytunnel" #1: received Vendor ID payload [FRAGMENTATION] 117 "mysubnet" #2: STATE_QUICK_I1: initiate 004 "mysubnet" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x06fe2099 <0x75eaa862 xfrm=AES_128-HMAC_SHA1 NATOA=none NATD=none DPD=none}
~]# ipsec auto --up mytunnel 104 "mytunnel" #1: STATE_MAIN_I1: initiate 003 "mytunnel" #1: received Vendor ID payload [Dead Peer Detection] 003 "mytunnel" #1: received Vendor ID payload [FRAGMENTATION] 106 "mytunnel" #1: STATE_MAIN_I2: sent MI2, expecting MR2 108 "mytunnel" #1: STATE_MAIN_I3: sent MI3, expecting MR3 003 "mytunnel" #1: received Vendor ID payload [CAN-IKEv2] 004 "mytunnel" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=aes_128 prf=oakley_sha group=modp2048} 117 "mytunnel" #2: STATE_QUICK_I1: initiate 004 "mytunnel" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x16bca4f7 >0x9c2ae273 xfrm=AES_128-HMAC_SHA1 NATOA=none NATD=none DPD=none}