User Tools

Site Tools


WireGuard client


  • This how-to describes the method for setting up WireGuard client on OpenWrt.
  • You can use it to connect to your own WireGuard server or a commercial WireGuard provider.
  • Follow WireGuard basic for server setup and WireGuard extras for additional tuning.


  • Encrypt your internet connection to enforce security and privacy.
    • Prevent data leak and traffic spoofing on the client side.
  • Bypass regional restrictions using commercial providers.
    • Escape client side content filters and internet censorship.
  • Access your LAN services remotely without port forwarding.


1. Preparation

Install the packages and specify the VPN client configuration parameters. Each client should have a unique WG_ADDR to avoid collisions.

# Install packages
opkg update
opkg install wireguard
# Configuration parameters

2. Key management

Generate client keys. Exchange the public keys and the pre-shared key between the server and the client using file transfer or copy-paste.

# Generate and exchange the keys
umask go=
wg genkey | tee wgclient.key | wg pubkey >
WG_KEY="$(cat wgclient.key)"
WG_PSK="$(cat wg.psk)"

3. Firewall

Consider VPN network as public and assign VPN interface to WAN zone to minimize firewall setup.

# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci rename firewall.@forwarding[0]="lan_wan"
uci del_list"${WG_IF}"
uci add_list"${WG_IF}"
uci commit firewall
/etc/init.d/firewall restart

4. Network

Set up VPN interface and peers.

# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR6}"
# Add VPN peers
uci -q delete network.wgserver
uci set network.wgserver="wireguard_${WG_IF}"
uci set network.wgserver.public_key="${WG_PUB}"
uci set network.wgserver.preshared_key="${WG_PSK}"
uci set network.wgserver.endpoint_host="${WG_SERV}"
uci set network.wgserver.endpoint_port="${WG_PORT}"
uci set network.wgserver.route_allowed_ips="1"
uci set network.wgserver.persistent_keepalive="25"
uci add_list network.wgserver.allowed_ips=""
uci add_list network.wgserver.allowed_ips="::/0"
uci commit network
/etc/init.d/network restart

Make possible to manage VPN connection dynamically.


Establish the VPN connection. Verify your client traffic is routed via VPN gateway.


Check your client public IP addresses.

Make sure there is no DNS leak on the client side.

Delegate a public IPv6 prefix to VPN6 network to use IPv6 by default.


Collect and analyze the following information.

# Restart services
/etc/init.d/log restart; /etc/init.d/network restart; sleep 10
# Log and status
logread -e vpn; netstat -l -n -p | grep -e "^udp\s.*\s-$"
# Runtime configuration
pgrep -f -a wg; wg show; wg showconf vpn
ip address show; ip route show table all type unicast
ip rule show; ip -6 rule show; iptables-save; ip6tables-save
# Persistent configuration
uci show network; uci show firewall
grep -v -e "^#" -e "^$" /etc/crontabs/root

Wireguard is 'time sensitive'. If the router's clock is out of sync, the VPN tunnel will refuse to pass traffic. At the time of writing, this is because the IP addresses of the NTP servers could not be resolved via DNS when the router boots up. There are a variety of solutions.

LUCI > System > System > Local Time Click on 'Sync with browser' button. Unfortunately, this step must be completed every time the router is rebooted.

Another option is to specify the actual IP addresses of the NTP servers.

Another creative solution is described here by forum member 'uniquename' owrt forum link

Add the following to LUCI > System > Startup > Local Startup script or to /etc/rc.local

date -s “2030-01-01 00:00:00”

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
docs/guide-user/services/vpn/wireguard/client.txt · Last modified: 2020/09/27 11:28 by vgaetera