{"id":9459,"date":"2021-07-04T10:27:56","date_gmt":"2021-07-04T07:27:56","guid":{"rendered":"https:\/\/kifarunix.com\/?p=9459"},"modified":"2024-03-18T19:51:46","modified_gmt":"2024-03-18T16:51:46","slug":"install-wireguard-vpn-client-on-rocky-linux-ubuntu-debian","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-wireguard-vpn-client-on-rocky-linux-ubuntu-debian\/","title":{"rendered":"Install WireGuard VPN Client on Rocky Linux\/Ubuntu\/Debian"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1043\" height=\"585\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2024\/02\/install-wireguard-vpn-on-linux.png\" alt=\"\" class=\"wp-image-20054\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2024\/02\/install-wireguard-vpn-on-linux.png?v=1707237999 1043w, https:\/\/kifarunix.com\/wp-content\/uploads\/2024\/02\/install-wireguard-vpn-on-linux-768x431.png?v=1707237999 768w\" sizes=\"(max-width: 1043px) 100vw, 1043px\" \/><\/figure>\n\n\n\n<p>This guide will take you through how to install <a href=\"https:\/\/www.wireguard.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">WireGuard<\/a> VPN Client on Rocky Linux\/Ubuntu\/Debian. If you are using WireGuard as your VPN server, then you might want to configure your end points as VPN clients.<\/p>\n\n\n\n<p>To learn how to configure WireGuard VPN server on Rocky Linux 8, follow the guide below;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-wireguard-vpn-server-on-rocky-linux\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install WireGuard VPN Server on Rocky Linux<\/a><\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#installing-wire-guard-vpn-client-on-linux\">Installing WireGuard VPN Client on Linux<\/a><ul><li><a href=\"#install-wire-guard-vpn-client-on-rocky-linux-8\">Install WireGuard VPN client on Rocky Linux 8<\/a><\/li><li><a href=\"#install-wire-guard-vpn-client-on-ubuntu\">Install WireGuard VPN client on Ubuntu<\/a><\/li><li><a href=\"#install-wire-guard-vpn-client-on-debian\">Install WireGuard VPN client on Debian<\/a><\/li><li><a href=\"#configure-wire-guard-vpn-client-on-rocky-linux-debian-ubuntu\">Configure WireGuard VPN Client on Rocky Linux\/Debian\/Ubuntu<\/a><ul><li><a href=\"#generate-the-wire-guard-vpn-client-private-and-public-keys\">Generate the WireGuard VPN Client Private and public keys<\/a><\/li><li><a href=\"#create-wire-guard-vpn-client-configuration\">Create WireGuard VPN Client Configuration<\/a><\/li><\/ul><\/li><li><a href=\"#configure-wire-guard-vpn-server-to-allow-vpn-clients-connections\">Configure WireGuard VPN Server to Allow VPN Clients Connections<\/a><ul><li><a href=\"#running-wire-guard-vpn-client-service\">Running WireGuard VPN Client Service<\/a><\/li><li><a href=\"#verify-interconnection-between-vpn-server-and-clients\">Verify Interconnection Between VPN Server and Clients<\/a><\/li><\/ul><\/li><li><a href=\"#other-tutorials\">Other Tutorials<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installing-wire-guard-vpn-client-on-linux\">Installing WireGuard VPN Client on Linux<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-wire-guard-vpn-client-on-rocky-linux-8\">Install WireGuard VPN client on Rocky Linux 8<\/h3>\n\n\n\n<p>Run the commands below to install WireGuard VPN client on Rocky Linux 8.<\/p>\n\n\n\n<pre id=\"block-a8a8b63c-1d03-4e4b-887b-7f24754ddb6a\" class=\"wp-block-preformatted\">dnf install elrepo-release epel-release -y<\/pre>\n\n\n\n<pre id=\"block-95f8b24d-be92-4eda-b9d8-d8bc669564ad\" class=\"wp-block-preformatted\">dnf install kmod-wireguard wireguard-tools -y<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-wire-guard-vpn-client-on-ubuntu\">Install WireGuard VPN client on Ubuntu<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt update<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt install wireguard resolvconf -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-wire-guard-vpn-client-on-debian\">Install WireGuard VPN client on Debian<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>echo 'deb http:\/\/deb.debian.org\/debian buster-backports main contrib non-free' &gt; \/etc\/apt\/sources.list.d\/buster-backports.list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt update\napt upgrade<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt install wireguard resolveconf -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-wire-guard-vpn-client-on-rocky-linux-debian-ubuntu\">Configure WireGuard VPN Client on Rocky Linux\/Debian\/Ubuntu<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"generate-the-wire-guard-vpn-client-private-and-public-keys\">Generate the WireGuard VPN Client Private and public keys<\/h4>\n\n\n\n<p>In our previous guide, we already have generated the keys for our three test clients.<\/p>\n\n\n\n<p><strong>Hence, we will just copy the respective keys to the respective clients.<\/strong><\/p>\n\n\n\n<pre id=\"block-5987dd71-7c2d-4d7d-a8de-68c2fc3c8f5e\" class=\"wp-block-preformatted\">[[ -d \/etc\/wireguard\/ ]] || mkdir \/etc\/wireguard\/<\/pre>\n\n\n\n<p id=\"block-9cebd6b2-37da-4456-a4a2-6bf9f8dd1f70\"><strong>We have already copied the client keys to the respective clients;<\/strong><\/p>\n\n\n\n<p>On Debian client<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ls -1 \/etc\/wireguard\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>debian.key\ndebian.pub.key\nwireguard.pub.key<\/code><\/pre>\n\n\n\n<p>On Ubuntu client<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ls -1 \/etc\/wireguard\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>ubuntu.key\nubuntu.pub.key\nwireguard.pub.key<\/code><\/pre>\n\n\n\n<p>On Rocky Linux client;<\/p>\n\n\n\n<pre id=\"block-ee884be3-4277-49e7-9f90-ecf275b7c5d0\" class=\"wp-block-preformatted\">ls -1 \/etc\/wireguard\/<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>rocky8.key\nrocky8.pub.key\nwireguard.pub.key<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-wire-guard-vpn-client-configuration\">Create WireGuard VPN Client Configuration<\/h4>\n\n\n\n<p>On each client system, create the configuration file. You would simply run the command below to create the configuration file.<\/p>\n\n\n\n<p><strong>Replace the client IP addresses and Private keys accordingly.<\/strong><\/p>\n\n\n\n<p>Ubuntu Client<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>cat &gt; \/etc\/wireguard\/wg0.conf &lt;&lt; 'EOL'\n[Interface]\nPrivateKey = qJ2Sczxh8QWO5ZHlN+zZ4IaaMzmnMtgITLfQ0cam82M=\nAddress = 10.8.0.10\nDNS = 8.8.8.8\n\n[Peer]\nPublicKey = 60UScq0EQ7ZHXIdHcOnjFYK6N\/TLtmtPGTBqLwLd0WY=\nAllowedIPs = 10.8.0.0\/24\nEndpoint = 192.168.60.19:51820\nPersistentKeepalive = 20\nEOL\n<\/code><\/pre>\n\n\n\n<p>For other Clients for example;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>cat &gt; \/etc\/wireguard\/wg0.conf &lt;&lt; 'EOL'\n[Interface]\nPrivateKey = UMXEH1lTn7OF+fgBswsdDJU6NAu7N5or43FPWP1EyWY=\nAddress = 10.8.0.20\nDNS = 8.8.8.8\n\n[Peer]\nPublicKey = 60UScq0EQ7ZHXIdHcOnjFYK6N\/TLtmtPGTBqLwLd0WY=\nAllowedIPs = 10.8.0.0\/24\nEndpoint = 192.168.60.19:51820\nPersistentKeepalive = 20\nEOL\n<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>cat &gt; \/etc\/wireguard\/wg0.conf &lt;&lt; 'EOL'\n[Interface]\nPrivateKey = kIn6rA7W9MbGdZxRtziFN1DCJsqCi\/hAdwhyH76cyU4=\nAddress = 10.8.0.30\nDNS = 8.8.8.8\n\n[Peer]\nPublicKey = 60UScq0EQ7ZHXIdHcOnjFYK6N\/TLtmtPGTBqLwLd0WY=\nAllowedIPs = 10.8.0.0\/24\nEndpoint = 192.168.60.19:51820\nPersistentKeepalive = 20\nEOL\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-wire-guard-vpn-server-to-allow-vpn-clients-connections\">Configure WireGuard VPN Server to Allow VPN Clients Connections<\/h3>\n\n\n\n<p>On your WireGuard VPN Server, you need to enable VPN clients peer to peer connections.<\/p>\n\n\n\n<p>To enable this, you need to obtain the Public keys for each client. For example, in my setup, I have three clients whose public keys are generated already.<\/p>\n\n\n\n<p>This has been done already in our WireGuard VPN Server setup. Check the link below;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-wireguard-vpn-server-on-rocky-linux\/#configure-wire-guard-vpn-clients\" target=\"_blank\" rel=\"noreferrer noopener\">Configure WireGuard VPN Server to Allow VPN Clients Connections<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"running-wire-guard-vpn-client-service\">Running WireGuard VPN Client Service<\/h4>\n\n\n\n<p>On the WireGuard VPN Clients, you can start the service now;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl start wg-quick@wg0<\/code><\/pre>\n\n\n\n<p>Checking the status;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl status wg-quick@wg0<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\u25cf wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0\n     Loaded: loaded (\/lib\/systemd\/system\/wg-quick@.service; disabled; vendor preset: enabled)\n     Active: active (exited) since Sun 2021-07-04 06:35:16 UTC; 56s ago\n       Docs: man:wg-quick(8)\n             man:wg(8)\n             https:\/\/www.wireguard.com\/\n             https:\/\/www.wireguard.com\/quickstart\/\n             https:\/\/git.zx2c4.com\/wireguard-tools\/about\/src\/man\/wg-quick.8\n             https:\/\/git.zx2c4.com\/wireguard-tools\/about\/src\/man\/wg.8\n    Process: 2016 ExecStart=\/usr\/bin\/wg-quick up wg0 (code=exited, status=0\/SUCCESS)\n   Main PID: 2016 (code=exited, status=0\/SUCCESS)\n\nJul 04 06:35:16 ubuntu20 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...\nJul 04 06:35:16 ubuntu20 wg-quick[2016]: [#] ip link add wg0 type wireguard\nJul 04 06:35:16 ubuntu20 wg-quick[2016]: [#] wg setconf wg0 \/dev\/fd\/63\nJul 04 06:35:16 ubuntu20 wg-quick[2016]: [#] ip -4 address add 10.8.0.10 dev wg0\nJul 04 06:35:16 ubuntu20 wg-quick[2016]: [#] ip link set mtu 1420 up dev wg0\nJul 04 06:35:16 ubuntu20 wg-quick[2016]: [#] ip -4 route add 10.8.0.0\/24 dev wg0\nJul 04 06:35:16 ubuntu20 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.\n<\/code><\/pre>\n\n\n\n<p>Once done on all clients, check IP address assignment.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ip add show wg0<\/code><\/pre>\n\n\n\n<p>Ubuntu;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>6: wg0: &lt;POINTOPOINT,NOARP,UP,LOWER_UP&gt; mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/none \n    inet 10.8.0.10\/32 scope global wg0\n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<p>Debian;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>3: wg0: &lt;POINTOPOINT,NOARP,UP,LOWER_UP&gt; mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/none \n    inet 10.8.0.20\/32 scope global wg0\n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<p>Rocky Linux client;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>5: wg0: &lt;POINTOPOINT,NOARP,UP,LOWER_UP&gt; mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/none \n    inet 10.8.0.30\/32 scope global wg0\n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"verify-interconnection-between-vpn-server-and-clients\">Verify Interconnection Between VPN Server and Clients<\/h4>\n\n\n\n<p>Now, try to ping the vpn server;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ping 10.8.0.1 -c 3<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.\n64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=2.29 ms\n64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=2.06 ms\n64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=2.26 ms\n\n--- 10.8.0.1 ping statistics ---\n3 packets transmitted, 3 received, 0% packet loss, time 53ms\nrtt min\/avg\/max\/mdev = 2.057\/2.202\/2.291\/0.110 ms\n<\/code><\/pre>\n\n\n\n<p>Ping each client from one another;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ping 10.8.0.10 -c 4<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>PING 10.8.0.10 (10.8.0.10) 56(84) bytes of data.\n64 bytes from 10.8.0.10: icmp_seq=1 ttl=63 time=3.41 ms\n64 bytes from 10.8.0.10: icmp_seq=2 ttl=63 time=3.63 ms\n64 bytes from 10.8.0.10: icmp_seq=3 ttl=63 time=3.69 ms\n64 bytes from 10.8.0.10: icmp_seq=4 ttl=63 time=3.67 ms\n\n--- 10.8.0.10 ping statistics ---\n4 packets transmitted, 4 received, 0% packet loss, time 83ms\nrtt min\/avg\/max\/mdev = 3.405\/3.596\/3.686\/0.120 ms\n<\/code><\/pre>\n\n\n\n<p>And that concludes our guide on how to install WireGuard VPN client on Linux.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"other-tutorials\">Other Tutorials<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-forticlient-vpn-client-on-ubuntu-20-04-ubuntu-18-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install FortiClient VPN Client on Ubuntu 20.04\/Ubuntu 18.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/how-to-monitor-openvpn-connections-using-openvpn-monitor-tool\/\" target=\"_blank\" rel=\"noreferrer noopener\">How to Monitor OpenVPN Connections using openvpn-monitor tool<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide will take you through how to install WireGuard VPN Client on Rocky Linux\/Ubuntu\/Debian. If you are using WireGuard as your VPN server, then<\/p>\n","protected":false},"author":1,"featured_media":9478,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[34,121,321],"tags":[3796,3793,3792,3794,323,3789,3795],"class_list":["post-9459","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security","category-howtos","category-vpn","tag-debian-wireguard-client","tag-install-wiregaurd-client-debian-10","tag-install-wireguard-client-on-ubuntu","tag-install-wireguard-client-rocky-linux-8","tag-vpn","tag-wireguard","tag-wireguard-client-rocky-linux","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/9459"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=9459"}],"version-history":[{"count":15,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/9459\/revisions"}],"predecessor-version":[{"id":21747,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/9459\/revisions\/21747"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/9478"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=9459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=9459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=9459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}