/ Linux

How to setup a Gateway to Gateway VPN using IPSec on CentOS

In this tutorial we will setup a gateway to gateway IPSec VPN using OpenSwan.

The Scenario:

The scenario we will use in this guide will be specifically in an Amazon Web Services (AWS) environment, where we will be establishing a IPSec VPN Tunnel between a VPC in Dublin and a VPC in London, so that we can reach the internal ranges over the VPN tunnel.

In a Non-AWS scenario, we could look at connecting two networks over the internet, maybe like a Office to Datacenter Connectivity between cities, like a Server Network in Johannesburg and a Office Network in Cape Town.

The Environment:

  • VPC (Dublin):
    • NAT IP: 52.1.2.3
    • Private CIDR: 172.24.16.0/24

* VPC (London): * - *NAT IP*: 62.4.5.6 * - *Private CIDR*: 172.24.17.0/24

The Setup:

We will be using CentOS Linux distribution for our setup and the following will be installed on our NAT Instances:

$ sudo yum install openswan -y

Edit the configuration:

$ sudo vi /etc/ipsec.conf

Make sure to uncomment the include line as this will be the pointer of where our custom configuration will be picked up from:

# OpenSwan IPsec Configuration
config setup
	protostack=netkey
	nat_traversal=yes
	virtual_private=
	oe=off
include /etc/ipsec.d/*.conf

Config: Dublin to London

Our first configuration will be on our Dublin instance:

$ sudo vi /etc/ipsec.d/dublin-to-london.conf

Note: that left* will always be the side where you are logged on to

conn dublin-to-london
	type=tunnel
	authby=secret
	left=%defaultroute
	leftid=52.1.2.3
	leftnexthop=%defaultroute
	leftsubnet=172.24.16.0/24
	right=62.4.5.6
	rightsubnet=172.24.17.0/24
	pfs=yes
	auto=start

Create the secrets file:

$ sudo vi /etc/ipsec.d/dublin-to-london.secrets

Supply your Left Public IP, Right Public IP, PSK, and your Secret:

52.1.2.3 62.4.5.6: PSK "MyBigSecretValue"

Config: London to Dublin

Our second configuration will be on our London instance:

$ sudo vi /etc/ipsec.d/vpc2-to-vpc1.conf
conn london-to-dublin
	type=tunnel
	authby=secret
	left=%defaultroute
	leftid=62.4.5.6
	leftnexthop=%defaultroute
	leftsubnet=172.24.17.0/24
	right=52.1.2.3
	rightsubnet=172.24.16.0/24
	pfs=yes
	auto=start

Create the secrets file:

$ sudo vi /etc/ipsec.d/london-to-dublin.secrets

Supply your Left Public IP, Right Public IP, PSK, and your Secret:

62.4.5.6 52.1.2.3: PSK "MyBigSecretValue"

Start the Services:

On both NAT instances, perform the following:

$ sudo chkconfig ipsec on
$ sudo service ipsec restart

Set kernel parameters:

$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Load the kernel parameters:

$ sudo sysctl -p

Restart your network configuration:

$ sudo service network restart

VPN Status Checks:

Check the service status for OpenSwan:

$ sudo ipsec verify

Check the status of the OpenSwan Service and VPN Tunnels:

$ sudo service ipsec status

You should now be able to connect to the other private network over the established VPN tunnel.