VPN into a secure private network
This tutorial describes the use of Classic Infrastructure. Most workloads can be implemented using IBM Cloud® Virtual Private Cloud resources. Use IBM Cloud VPC to create your own private cloud-like computing environment on shared public cloud infrastructure. A VPC gives an enterprise the ability to define and control a virtual network that is logically isolated from all other public cloud tenants, creating a private, secure place on the public cloud. Specifically, Direct Link, virtual server instances, security groups, VPN, subnets and network ACLs.
This tutorial may incur costs. Use the Cost Estimator to generate a cost estimate based on your projected usage.
The need to create a private connection between a remote network environment and servers on the private network of the IBM Cloud is a common requirement. Most typically this connectivity supports hybrid workloads, data transfers, private workloads or administration of systems on the IBM Cloud. A site-to-site Virtual Private Network (VPN) tunnel is the usual approach to securing connectivity between networks.
IBM Cloud provides a number of options for site-to-site data center connectivity, either using a VPN over the public internet or via a private dedicated network connection.
See IBM Cloud® Direct Link for more details on dedicated secure network links to the IBM Cloud. A VPN over the public internet provides a lower cost option, though without bandwidth guarantees.
There are two suitable VPN options for connectivity over the public internet to servers provisioned on the IBM Cloud:
This tutorial presents setup of a site-to-site IPSec VPN using a Virtual Router Appliance (VRA) to connect a subnet in a client data center to a secured subnet on the IBM Cloud private network.
This example builds on the Isolate workloads with a secure private network tutorial. It uses a site-to-site IPSec VPN, GRE tunnel and static routing. More complex VPN configurations that use dynamic routing (BGP etc) and VTI tunnels can be found in the supplemental VRA documentation.
Objectives
- Document configuration parameters for IPSec VPN
- Configure IPSec VPN on a Virtual Router Appliance
- Route traffic through a GRE tunnel
- Document VPN Configuration
- Create IPSec VPN on a VRA
- Configuration of data center VPN and tunnel
- Create GRE tunnel
- Create static IP route
- Configure firewall
Before you begin
This tutorial connects the secure private enclosure in the Isolate workloads with a secure private network tutorial to your data center. That tutorial must be completed first.
Document VPN configuration
Configuring an IPSec VPN site-to-site link between your data center and IBM Cloud requires coordination with your onsite networking team to determine many of the configuration parameters, the type of tunnel and IP routing information. The parameters have to be in exact accordance for an operational VPN connection. Typically your onsite networking team will specify the configuration to match agreed corporate standards and provide you with the necessary IP address of the data center VPN gateway, and the subnet address ranges that can be accessed.
Before commencing setup of the VPN, the IP addresses of the VPN gateways and IP network subnet ranges must be determined and available for the data center VPN configuration and for the secure private network enclosure in the IBM Cloud. These are illustrated in the following figure, where the APP zone in the secure enclosure will be connected via the IPSec tunnel to systems in the ‘DC IP Subnet’ in the client data center.
The following parameters must be agreed and documented between the IBM Cloud user configuring the VPN and the networking team for the client data center. In this example the Remote and Local tunnel IP addresses are set to 192.168.10.1 and 192.168.10.2. Any arbitrary subnet may be used with agreement of the on-site networking team.
Item | Description |
---|---|
|
Name given to the IKE group for the connection. |
|
Agreed IKE encryption standard to be used between IBM Cloud and the client data center, typically aes256. |
|
Agreed IKE hash between IBM Cloud and client data center, typically sha1. |
|
IKE lifetime from client data center, typically 3600. |
|
Name given to ESP group for the connection. |
|
Agreed ESP encryption standard between IBM Cloud and client data center, typically aes256. |
|
Agreed ESP hash between IBM Cloud and client data center, typically sha1. |
|
ESP lifetime from client data center, typically 1800. |
|
Internet facing public IP address of the VPN gateway at the client data centre. |
|
Public IP address of the VRA. |
<Remote tunnel IP/24> | IP address assigned to remote end of IPSec tunnel. Pair of IP address in range that does not conflict with IP Cloud or client data center. |
<Local tunnel IP/24> | IP address assigned to local end of IPSec tunnel. |
<DC Subnet/CIDR> | IP address of subnet to be accessed in client data center and CIDR. |
<App Zone subnet/CIDR> | Network IP address and CIDR of the APP Zone subnet from the VRA creation tutorial. |
|
Shared encryption key to be used between IBM Cloud and client data center. |
Configure IPSec VPN on a VRA
To create the VPN on the IBM Cloud, the commands and all the variables that need to changed, are highlighted below with < >. The changes are identified line by line, for each line that needs to be changed. Values come from the table.
- SSH into VRA and enter
[edit]
mode.SSH vyatta@<VRA Private IP Address> configure
- Create Internet Key Exchange (IKE) group.
set security vpn ipsec ike-group <ike group name> proposal 1 set security vpn ipsec ike-group <ike group name> proposal 1 encryption <ike encryption> set security vpn ipsec ike-group <ike group name> proposal 1 hash <ike hash> set security vpn ipsec ike-group <ike group name> proposal 1 dh-group 2 set security vpn ipsec ike-group <ike group name> lifetime <ike-lifetime>
- Create Encapsulating Security Payload (ESP) group
set security vpn ipsec esp-group <esp group name> proposal 1 encryption <esp encryption> set security vpn ipsec esp-group <esp group name> proposal 1 hash <esp hash> set security vpn ipsec esp-group <esp group name> lifetime <esp-lifetime> set security vpn ipsec esp-group <esp group name> mode tunnel set security vpn ipsec esp-group <esp group name> pfs enable
- Define site-to-site connection
set security vpn ipsec site-to-site peer <DC VPN Public IP> authentication mode pre-shared-secret set security vpn ipsec site-to-site peer <DC VPN Public IP> authentication pre-shared-secret <Shared-Secret> set security vpn ipsec site-to-site peer <DC VPN Public IP> connection-type initiate set security vpn ipsec site-to-site peer <DC VPN Public IP> ike-group <ike group name> set security vpn ipsec site-to-site peer <DC VPN Public IP> local-address <VRA Public IP> set security vpn ipsec site-to-site peer <DC VPN Public IP> default-esp-group <esp group name> set security vpn ipsec site-to-site peer <DC VPN Public IP> tunnel 1 set security vpn ipsec site-to-site peer <DC VPN Public IP> tunnel 1 protocol gre commit
Configure data center VPN and tunnel
- The network team at the client data centre will configure an identical IPSec VPN connection with the <DC VPN Public IP> and <VRA Public IP> swapped, the local and remote tunnel address and also the <DC Subnet/CIDR> and <App Zone subnet/CIDR> parameters swapped. The specific configuration commands at the client data center will depend on the vendor of the VPN.
- Validate that the public IP address of the DC VPN gateway is accessible over the internet before proceeding:
ping <DC VPN Public IP>
- When data center VPN configuration is complete, the IPSec link should come up automatically. Verify that the link has been established and the status shows that there is one or more active IPsec tunnels. Verify with the data center that both
ends of the VPN show active IPsec tunnels.
show vpn ipsec sa show vpn ipsec status
- If the link has not been created, validate that the local and remote addresses have been correctly specified and other parameters are as expected using the debug command:
show vpn debug
The line peer-<DC VPN Public IP>-tunnel-1: ESTABLISHED 5 seconds ago, <VRA Public IP>[500].......
should be found in the output. If this does not exist or shows 'CONNECTING' there is an error in the VPN configuration.
Define GRE tunnel
- Create the GRE tunnel in VRA edit mode.
set interfaces tunnel tun0 address <Local tunnel IP/24> set interfaces tunnel tun0 encapsulation gre set interfaces tunnel tun0 mtu 1300 set interfaces tunnel tun0 local-ip <VRA Public IP> set interfaces tunnel tun0 remote-ip <DC VPN Public IP> commit
- After both ends of the tunnel have been configured it should come up automatically. Check the operational state of tunnel from the VRA command line.
The first command should show the tunnel with State and Link asshow interfaces tunnel show interfaces tun0
u/u
(UP/UP). The second command shows more detail about the tunnel and that traffic is transmitted and received. - Validate that traffic flows across the tunnel
The TX and RX counts on aping <Remote tunnel IP>
show interfaces tunnel tun0
should be seen to increment while there isping
traffic. - If traffic is not flowing,
monitor interface
commands can be used to observe what traffic is seen on each interface. Interfacetun0
shows the internal traffic over the tunnel. Interfacedp0bond1
will show the encapsulated traffic flow to and from the remote VPN gateway.monitor interface tunnel tun0 traffic monitor interface bonding dp0bond1 traffic
If no return traffic is seen, the data center networking team will need to monitor the traffic flows at the VPN and tunnel interfaces at the remote site to localise the issue.
Create static IP route
Create the VRA routing to direct traffic to the remote subnet via the tunnel.
- Create static route in VRA edit mode.
set protocols static route <DC Subnet/CIDR> next-hop <Remote tunnel IP>
- Review the VRA routing table from the VRA command line. At this time no traffic will transverse the route as no firewall rules exist to allow traffic via the tunnel. Firewall rules are required for traffic initiated at either side.
show ip route
Configure firewall
- Create resource groups for allowed icmp traffic and tcp ports.
set res group icmp-group icmpgrp type 8 set res group icmp-group icmpgrp type 11 set res group icmp-group icmpgrp type 3 set res group port tcpports port 22 set res group port tcpports port 80 set res group port tcpports port 443 commit
- Create firewall rules for traffic to the remote subnet in VRA edit mode.
set security firewall name APP-TO-TUNNEL default-action drop set security firewall name APP-TO-TUNNEL default-log set security firewall name APP-TO-TUNNEL rule 100 action accept set security firewall name APP-TO-TUNNEL rule 100 protocol tcp set security firewall name APP-TO-TUNNEL rule 100 destination port tcpports set security firewall name APP-TO-TUNNEL rule 200 protocol icmp set security firewall name APP-TO-TUNNEL rule 200 icmp group icmpgrp set security firewall name APP-TO-TUNNEL rule 200 action accept commit
set security firewall name TUNNEL-TO-APP default-action drop set security firewall name TUNNEL-TO-APP default-log set security firewall name TUNNEL-TO-APP rule 100 action accept set security firewall name TUNNEL-TO-APP rule 100 protocol tcp set security firewall name TUNNEL-TO-APP rule 100 destination port tcpports set security firewall name TUNNEL-TO-APP rule 200 protocol icmp set security firewall name TUNNEL-TO-APP rule 200 icmp group icmpgrp set security firewall name TUNNEL-TO-APP rule 200 action accept commit
- Create Zone for tunnel and associate firewalls for traffic initiated in either zone.
set security zone-policy zone TUNNEL description "GRE Tunnel" set security zone-policy zone TUNNEL default-action drop set security zone-policy zone TUNNEL interface tun0 set security zone-policy zone TUNNEL to APP firewall TUNNEL-TO-APP set security zone-policy zone APP to TUNNEL firewall APP-TO-TUNNEL commit
- To validate the firewalls and routing at both ends are configured correctly and are now allowing ICMP and TCP traffic ping the gateway address of the remote subnet, first from the VRA command line and if successful then by logging into the
VSI.
ping <Remote Subnet Gateway IP> ssh root@<VSI Private IP> ping <Remote Subnet Gateway IP>
- If the ping from the VRA command line fails, validate that a ping reply is seen in response to a ping request on the tunnel interface.
No response indicates an issue with the firewall rules or routing at the data center. If a reply is seen in the monitor output, but the ping command times out, check the configuration of the local VRA firewall rules.monitor interface tunnel tun0 traffic
- If the ping from the VSI fails, this indicates an issue with the VRA firewall rules, routing in the VRA or VSI configuration. Complete the prior step to ensure that a request is sent to and response is seen from the data center. Monitoring
the traffic on the local VLAN and inspecting the firewall logs will assist in isolating the issue to routing or the firewall.
monitor interfaces bonding dp0bond0.<VLAN ID> show log firewall name APP-TO-TUNNEL show log firewall name TUNNEL-TO-APP
This completes setup of the VPN from the secure private network enclosure. Additional tutorials in this series illustrate how the enclosure can access services on the public internet.
Remove resources
Steps to take to remove the resources created in this tutorial.
The VRA is on a monthly paid plan. Cancellation does not result in a refund. It is suggested to only cancel if this VRA will not be required again in the next month. If a dual VRA High-Availability cluster is required, this single VRA can be upgraded on the Gateway Details page.
- Cancel any virtual servers or bare-metal servers
- Cancel the VRA
- Cancel any additional VLANs