Hands-On Lab: Setting Up a VPN for Secure Networking

If you're looking for a way to securely connect different devices or networks together over the internet, a virtual private network (VPN) is the way to go. A VPN provides a secure connection by encrypting traffic and tunneling it through tunnels, protecting your data from prying eyes. But setting up a VPN can be a daunting task, especially if you have little experience with networking. That's where this hands-on lab comes in.

In this lab, we will guide you step by step in setting up a VPN using OpenVPN – an open-source VPN solution. OpenVPN is one of the most popular VPN solutions out there, and for a good reason. It's easy to set up and configure, and it's highly secure. With OpenVPN, you can set up a VPN that can connect clients running on different devices and platforms.

What is a VPN, and why do you need one?

Before we dive into the lab, let's first talk about what a VPN is and why you need one. A virtual private network (VPN) is a secure and encrypted connection over the internet that allows you to connect to a private network, such as your company's network, from anywhere in the world. With a VPN, you can browse the internet securely, access private resources, and communicate with remote sites as if you were physically there.

When you connect to a VPN, your internet traffic is encrypted and tunneled through a server in a different location. This makes it difficult for anyone to intercept your online activity or trace it back to you. A VPN is especially useful when you're using public Wi-Fi, as it protects you from potential security threats like hackers and snoops. Additionally, a VPN also helps you to bypass geo-restrictions and censorship, letting you access content that might not be available in your region.


Before you begin this lab, you will need the following:

Step 1: Installing OpenVPN

The first step in setting up a VPN is installing the OpenVPN software. OpenVPN is available in the default Ubuntu and Debian repositories; you can install it using the following command:

sudo apt update
sudo apt install openvpn

Step 2: Configuring the OpenVPN server

Once you have installed OpenVPN, the next step is to configure the server. OpenVPN's configuration files are located in the /etc/openvpn directory. You can create a new configuration file named server.conf using the following command:

sudo nano /etc/openvpn/server.conf

Then, copy and paste the following configuration into the file:

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS"
push "dhcp-option DNS"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
verb 3

Here's what the various options in the configuration do:

Save and close the file by pressing Ctrl + X, followed by Y, and then Enter.

Step 3: Generating certificates and keys

OpenVPN requires certificates and keys to authenticate clients and establish a secure connection. You can use the easy-rsa tool to generate the necessary files automatically.

Install easy-rsa:

sudo apt install easy-rsa

Create a new directory to store the certificates and keys:

sudo mkdir /etc/openvpn/easy-rsa/
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Then, navigate to the easy-rsa directory:

cd /etc/openvpn/easy-rsa/

Edit vars file:

sudo nano vars

Set the following variables:

export KEY_CITY="SanFrancisco"
export KEY_ORG="OpenVPN"
export KEY_EMAIL="your_email_address@domain.com"
export KEY_NAME="server"

Save and close the vars file.

Next, execute the following commands to generate the certificates and keys:

sudo ./easyrsa init-pki
sudo ./easyrsa build-ca
sudo ./easyrsa gen-dh
sudo ./easyrsa build-server-full server nopass

Step 4: Starting the OpenVPN server

Now that you have generated the necessary certificates and keys, you can start the OpenVPN server using the following command:

sudo systemctl start openvpn@server

Check the status of the OpenVPN service to ensure that it's running:

sudo systemctl status openvpn@server

Step 5: Adding firewall rules

To allow VPN traffic, you need to add firewall rules to the server. You can use the ufw firewall, which is installed by default on Ubuntu, to add the rules:

sudo ufw allow 1194/udp
sudo ufw enable

Step 6: Configuring the VPN client

To connect to the VPN server, you need to configure a client. OpenVPN provides clients for different platforms, such as Windows, macOS, Linux, iOS, and Android. In this lab, we will use the OpenVPN client for Linux.

Install the OpenVPN client:

sudo apt install openvpn

Create a new configuration file named client.ovpn in the /etc/openvpn directory:

sudo nano /etc/openvpn/client.ovpn

Copy and paste the following configuration into the file:

dev tun
proto udp
remote your_server_ip_address 1194
resolv-retry infinite
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
cipher AES-256-CBC
verb 3

Replace your_server_ip_address with the public IP address or domain name of your server.

Save and close the file.

Copy the ca.crt, client.crt, and client.key files from the server to the client using scp or rsync.

Step 7: Connecting to the VPN server

Now that you have configured the client, you can connect it to the VPN server using the following command:

sudo openvpn --config /etc/openvpn/client.ovpn

If the connection is successful, you should see logs indicating that the client has connected to the VPN server.


In this hands-on lab, we have shown you how to set up a VPN using OpenVPN. You have learned how to install and configure the OpenVPN server, generate certificates and keys, configure the client, and connect to the VPN server. With this knowledge, you can now create your VPNs to securely connect different devices or networks together over the internet.

Editor Recommended Sites

AI and Tech News
Best Online AI Courses
Classic Writing Analysis
Tears of the Kingdom Roleplay
Visual Novels: AI generated visual novels with LLMs for the text and latent generative models for the images
Data Governance - Best cloud data governance practices & AWS and GCP Data Governance solutions: Learn cloud data governance and find the best highest rated resources
Analysis and Explanation of famous writings: Editorial explanation of famous writings. Prose Summary Explanation and Meaning & Analysis Explanation
Build Quiz - Dev Flashcards & Dev Memorization: Learn a programming language, framework, or study for the next Cloud Certification
PS5 Deals App: Playstation 5 digital deals from the playstation store, check the metacritic ratings and historical discount level