Setting Up your own VPN: Step by Step Guide

instrik.com
4 min readMay 23, 2024

How to set up your own VPN at home

In today’s digitally connected world, the need for online privacy and security has become paramount.

Photo by Petter Lagson on Unsplash

Virtual Private Networks (VPNs) offer a solution by encrypting your internet connection and routing it through a secure server, providing anonymity and protecting your data from prying eyes.

While there are many VPN services available, setting up your own VPN from home can offer greater control and customization.

In this article, we’ll explore the benefits of hosting your VPN, the steps involved in setting it up, and provide code snippets and examples to help you create your own VPN server.

Why Host Your Own VPN ?

Photo by Petter Lagson on Unsplash

Hosting your VPN server at home offers several advantages:

1. Enhanced Privacy

With your VPN server, you have full control over your data and can ensure that your privacy is protected.

2. Customization

You can customize your VPN server to meet your specific needs, including selecting encryption protocols, server locations, and access control policies.

3. Cost Savings

Hosting your VPN server can be more cost-effective in the long run compared to subscribing to a commercial VPN service.

4. Geographical Flexibility

You can access your home network and resources from anywhere in the world, as long as you have an internet connection.

Prerequisites

Photo by Jordan Harrison on Unsplash

Before setting up your VPN server, make sure you have the following:

1. A Dedicated Server

This can be a physical server or a virtual private server (VPS) from a cloud provider.

2. A Static IP Address

Your server should have a static IP address to ensure consistent access.

3. Operating System

Choose an operating system that supports VPN server software. Common choices include Linux distributions like Ubuntu or CentOS.

4. Basic Command Line Knowledge

Familiarize yourself with basic command line operations, as you’ll need to execute commands to set up and configure the VPN server.

Setting Up OpenVPN

OpenVPN is one of the most popular VPN protocols due to its robust security features and cross-platform compatibility.

Follow these steps to set up an OpenVPN server on your dedicated server:

Step 1: Install OpenVPN

sudo apt update
sudo apt install openvpn easy-rsa

Step 2: Configure OpenVPN

sudo cp -r /usr/share/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa
sudo nano vars

Edit the vars file and set the following variables:

export KEY_COUNTRY="Country"
export KEY_PROVINCE="Province"
export KEY_CITY="City"
export KEY_ORG="Organization"
export KEY_EMAIL="Email"
export KEY_OU="OrganizationalUnit"

Then, save and exit the file.

Step 3: Initialize PKI

source vars
./clean-all
./build-ca

Step 4: Generate Server Certificate and Key

./build-key-server server

Step 5: Generate Diffie-Hellman Parameters

./build-dh

Step 6: Generate HMAC Signature

openvpn - genkey - secret keys/ta.key

Step 7: Configure OpenVPN Server

Create a configuration file for the OpenVPN server:

sudo nano /etc/openvpn/server.conf

Add the following configuration:

port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth keys/ta.key 0
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
explicit-exit-notify 1

Save and exit the file.

Step 8: Enable IP Forwarding

sudo nano /etc/sysctl.conf

Uncomment the following line:

net.ipv4.ip_forward=1

Then, apply the changes:

sudo sysctl -p

Step 9: Configure Firewall

sudo iptables -A INPUT -p udp - dport 1194 -j ACCEPT
sudo iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -m state - state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables/rules.v4

Step 10: Start and Enable OpenVPN Service

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

Connecting to Your VPN

Now that your OpenVPN server is set up, you can connect to it from your devices.

Photo by Thomas Jensen on Unsplash

Install the OpenVPN client on your device and configure it to connect to your server using the client certificate and key generated earlier.

Conclusion

Setting up your VPN server from home offers numerous benefits, including enhanced privacy, customization options, cost savings, and geographical flexibility.

Photo by Thomas Jensen on Unsplash

By following the steps outlined in this guide, you can create your VPN server using OpenVPN and ensure secure and private access to your home network and resources.

Remember to keep your server and VPN software updated to address any security vulnerabilities and regularly monitor your VPN for suspicious activity.

With your VPN server up and running, you can enjoy a secure and private internet experience from anywhere in the world.

--

--

instrik.com

Fastest App Development, We put startups on Play Store within 24 hours ⚡ Contact - www.instrik.comsales@instrik.com