WireGuard is an open-source and modern VPN solution known for its simplicity and ease of use. Initially designed for Linux, it is now also available for MacOS, BSD, IOS, and Android. Compared to other VPN software, WireGuard is simple and easy to set up. It also provides client apps for desktops and mobile devices from the platform app store. If you are looking for a simple and user-friendly VPN solution then WireGuard is the best option for you.
This post will show you how to install WireGuard VPN on Fedora.|
Step 1 – Enable IP Forwarding
Before starting, you will need to set up IP forwarding on your server. To do so, create a new file.
nano /etc/sysctl.d/99-custom.conf
Add the following line.
net.ipv4.ip_forward=1
Save and close the file, then apply the above configuration with the following command.
sysctl -p /etc/sysctl.d/99-custom.conf
Step 2 – Install WireGuard VPN
First, install the WireGuard package using the following command.
dnf install wireguard-tools -y
Next, generate a public and private key using the following command.
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
You will see the generated key in the following output.
LR9Sv+v+wRat5+Ui4gbfSamfNFIjce6hbG5UJATD3Tc=
Step 3 – Configure WireGuard VPN
Next, create a new configuration file with the following command.
nano /etc/wireguard/wg0.conf
Add the following configurations.
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = <replace-with-your-generated-private-key> PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade
Note: Replace the PrivateKey with your generated private key.
Now, start the firewalld service with the following command.
systemctl start firewalld
Step 4 – Enable WireGuard Interface
At this point, WireGuard is installed and configured. Now, you can bring up the WireGuard interface with the following command.
wg-quick up wg0
You will see the following output.
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade success
You can verify your WireGuard installation with the following command.
wg show wg0
If everything is fine, you will see the following output.
interface: wg0 public key: 0xQfsv/vwayO9aesmpD25t6DGmgF74daHXHLv4n3XW4= private key: (hidden) listening port: 51820
Next, enable the WireGuard interface to start at system boot.
systemctl enable wg-quick@wg0
Step 5 – Install and Configure WireGuard Client
First, install the WireGuard VPN client on the client machine.
dnf install wireguard-tools -y
Next, generate a public and private key with the following command.
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Output:
SRF4C7HGesORyRhguW44OG0eSOz2u80la2QmtWAUbVU=
Next, create a WireGuard client configuration file.
nano /etc/wireguard/wg0.conf
Add the following lines.
[Interface] PrivateKey = SRF4C7HGesORyRhguW44OG0eSOz2u80la2QmtWAUbVU= Address = 10.0.0.2/24 [Peer] PublicKey = LR9Sv+v+wRat5+Ui4gbfSamfNFIjce6hbG5UJATD3Tc= Endpoint = server-ip:51820 AllowedIPs = 0.0.0.0/0
Note: Replaced PrivateKey with your client key and PublicKey with your server key.
Now, run the following command on your server machine to add your client key.
wg set wg0 peer SRF4C7HGesORyRhguW44OG0eSOz2u80la2QmtWAUbVU= allowed-ips 10.0.0.2
Note: Replaced SRF4C7HGesORyRhguW44OG0eSOz2u80la2QmtWAUbVU with your key generated on the client machine.
Finally, bring up the WireGuard interface on the client machine.
wg-quick up wg0
Output:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] wg set wg0 fwmark 51820
Now, go back to your server machine and verify your VPN connection using the following command.
wg
You should see the allocated IP address of the client machine in the following output.
interface: wg0 public key: 0xQfsv/vwayO9aesmpD25t6DGmgF74daHXHLv4n3XW4= private key: (hidden) listening port: 51820 peer: SRF4C7HGesORyRhguW44OG0eSOz2u80la2QmtWAUbVU= allowed ips: 10.0.0.2/32
Conclusion
In this post, we showed you how to install the WireGuard VPN server on Fedora. You can now use VPN to protect your users by encrypting user data and masking their IP addresses. You can now try to implement WireGuard VPN on dedicated server hosting from Atlantic.Net!