Step 1: Choose a VPS Provider and Set Up WireGuard Server
First, you'll need a VPS provider. There are many options available. Choose a provider based on your needs for performance, budget, and server location. VPSMart is one of the cheapest hosting provider.
Once you’ve selected a provider, create a VPS instance with an operating system supported by WireGuard (typically Linux distributions like Ubuntu, Debian, CentOS, or Fedora). Allocate sufficient resources for your expected VPN usage, though WireGuard is quite efficient and doesn't require a high-spec server.
1. Create a VPS instance: Log in to your VPS provider and create a new instance. Choose an appropriate server size and location.
2. Access your VPS: Use SSH to log in to your VPS from your local machine.
ssh root@your_vps_ip_address
Step 2: Install WireGuard
The installation process varies slightly depending on your Linux distribution.
1. On Ubuntu/Debian
sudo apt install wireguard
2. On CentOS/Fedora:
sudo yum install epel-release sudo yum install wireguard-tools
You may also need to install additional tools like 'qrencode' for generating QR codes and 'resolvconf' for DNS resolution.
Step 3: Configure WireGuard
1. Generate Keys
WireGuard uses public and private keys for encryption. Generate these keys on your VPS.
wg genkey | tee privatekey | wg pubkey > publickey
'privatekey': Your private key.
'publickey': Your public key.
2. Create a Configuration File
Create a configuration file for your WireGuard interface, typically located at '/etc/wireguard/wg0.conf'.
sudo nano /etc/wireguard/wg0.conf
Add the following configuration, replacing placeholders with your keys and IP addresses:
[Interface] PrivateKey = your_private_key Address = 10.0.0.1/24 # IP range for VPN clients ListenPort = 51820 # Default WireGuard port [Peer] PublicKey = client_public_key AllowedIPs = 10.0.0.2/32 # Client IP within the VPN range
PrivateKey: The server’s private key.
Address: The IP range that WireGuard will use for connected clients.
ListenPort: The port WireGuard will listen on for incoming connections.
PublicKey: The public key of the client that will connect to this server.
AllowedIPs: The IPs allowed to use the VPN, typically the client’s IP within the VPN network.
3. Set Up Firewall Rules
Configure your firewall to allow traffic on the WireGuard port and enable IP forwarding.
sudo ufw allow 51820/udp sudo nano /etc/sysctl.conf
Uncomment or add the following line to enable IP forwarding:
net.ipv4.ip_forward=1
Apply the changes:
sudo sysctl -p
Step 4: Start and Enable WireGuard
1. Activate the WireGuard Interface
Bring up the WireGuard interface to start the VPN.
sudo wg-quick up wg0
To ensure that WireGuard starts on boot, enable the systemd service:
sudo systemctl enable wg-quick@wg0
2. Verify the VPN Connection
Check the status of the WireGuard interface to verify that it is running correctly.
sudo wg
This command should display information about the VPN connection, including the public key, endpoint, and allowed IPs.
Step 5: Configure the Client
1. Install WireGuard on the Client Device
Install the WireGuard application on the device you want to connect to the VPN. WireGuard is available for various platforms, including Windows, macOS, Linux, iOS, and Android.
2. Generate Client Keys
Generate a private and public key for the client in a similar manner as on the server.
wg genkey | tee client_privatekey | wg pubkey > client_publickey
3. Create a Client Configuration
Create a configuration file for the client, typically named 'wg0.conf'.
[Interface] PrivateKey = client_privatekey Address = 10.0.0.2/32 # Must match the AllowedIPs in the server config DNS = 1.1.1.1 # Optional: Configure a DNS server for the client [Peer] PublicKey = server_publickey Endpoint = your_vps_ip:51820 AllowedIPs = 0.0.0.0/0 # Route all traffic through the VPN
PrivateKey: The client’s private key.
Address: The IP address assigned to the client within the VPN.
DNS: Optional DNS server for the client.
PublicKey: The server’s public key.
Endpoint: The IP address and port of your VPS.
AllowedIPs: The IP ranges routed through the VPN. Use 0.0.0.0/0 to route all traffic.
4. Connect to the VPN
Use the WireGuard client to import the configuration file and establish the VPN connection. On most platforms, you can simply select the configuration file and click 'Activate' or 'Connect'.