TECHNICAL TUTORIAL

WireGuard VPN — Server and Client.

Install a secure WireGuard VPN on Ubuntu and connect a client.

Linux WireGuard Networking

WireGuard VPN on Ubuntu

1. Install

sudo apt update
sudo apt install wireguard

2. Generate server keys

umask 077
wg genkey | tee server.key | wg pubkey > server.pub

Keep private keys secret. Generate a separate key pair on each client.

3. Server configuration

Create /etc/wireguard/wg0.conf (replace placeholders):

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

4. Enable and inspect

sudo chmod 600 /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
sudo wg show

Allow UDP 51820 through the firewall. For internet routing, enable IP forwarding and configure NAT for your actual network interface; for private subnet access, configure appropriate routes instead.

5. Client example

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25

Use AllowedIPs = 0.0.0.0/0, ::/0 only when full-tunnel routing and IPv6 are deliberately configured. Test connectivity to 10.8.0.1 and verify handshake with wg show.

Your privacy matters

We use essential cookies to keep this website working. Optional cookies are only used with your consent. Privacy Policy