Configurer WireGuard sous Ubuntu 24.04 pour un accès distant sûr

Installer WireGuard sous Ubuntu 24.04 et relier un client en tunnel partagé avec clés protégées, transfert IP, UFW et accès au LAN.

Configurer WireGuard sous Ubuntu 24.04 pour un accès distant sûr

Cet exemple utilise Ubuntu 24.04 comme passerelle VPN : wg0 vaut 10.20.30.1/24, le client 10.20.30.2, le LAN distant 192.168.1.0/24 et WireGuard écoute en UDP 51820. ens18 est l’interface vers le LAN. Adaptez interfaces, adresses et DNS. Il faut un point d’accès public joignable ; si le serveur est derrière un NAT, redirigez UDP 51820 sur le routeur.

Installer et repérer l’interface

Installez les paquets et repérez l’interface réelle vers le LAN. Si vous administrez par SSH, vérifiez et autorisez son port avant d’activer UFW ; l’exemple suivant suppose le port 22.

sudo apt update
sudo apt install wireguard ufw
ip -br address

Créer les clés du serveur

Créez les clés en tant que root dans /etc/wireguard avec umask 077. L’ancienne procédure tentait d’entrer dans un dossier réservé à root depuis un shell non privilégié. Ne transmettez que server.pub au client ; gardez server.key et les profils complets confidentiels.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
sudo cat /etc/wireguard/server.pub

Activer le transfert IPv4

Écrivez la première ligne affichée dans /etc/sysctl.d/99-wireguard-forward.conf, puis exécutez les deux commandes suivantes. Le résultat doit être 1. Le transfert ne crée ni règles de pare-feu ni route de retour.

net.ipv4.ip_forward=1
sudo sysctl --system
sysctl net.ipv4.ip_forward

Configurer le serveur

Enregistrez ce bloc dans /etc/wireguard/wg0.conf. Remplacez SERVER_PRIVATE_KEY par le contenu de server.key et CLIENT_PUBLIC_KEY par la clé publique créée sur le client. Côté serveur, AllowedIPs = 10.20.30.2/32 ; chaque client doit avoir une clé et une adresse uniques. N’ajoutez ni commentaire ni espace à la ligne d’une clé.

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

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.20.30.2/32

UFW et route vers le LAN

Ajoutez les règles avant d’activer UFW. La règle route autorise le transfert du tunnel vers le LAN indiqué. Les hôtes du LAN doivent aussi disposer d’une route de retour vers 10.20.30.0/24 via l’adresse LAN du serveur Ubuntu : ajoutez-la au routeur. Sinon, envisagez un NAT vers le LAN géré et documenté par le pare-feu ; les hôtes verront alors l’IP de la passerelle, non celle du client. N’autorisez pas un transfert général vers Internet.

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 from 10.20.30.0/24 to 192.168.1.0/24
sudo ufw status verbose
sudo ufw enable

Créer les clés du client

Sur un client Linux, créez la paire dans un dossier privé et transmettez uniquement client1.pub au serveur. Sur téléphone, générez les clés dans l’application WireGuard : un QR code contenant le profil inclut la clé privée et doit rester secret.

umask 077
wg genkey > client1.key
wg pubkey < client1.key > client1.pub

Configurer le client

Importez le bloc dans l’application et remplacez clés et point d’accès. Ces AllowedIPs créent un tunnel partagé : seuls le VPN et le LAN distant l’empruntent. Configurez un DNS du LAN seulement s’il existe et est joignable par le VPN. PersistentKeepalive = 25 aide derrière un NAT mais reste facultatif pour de nombreux pairs.

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.20.30.2/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.net:51820
AllowedIPs = 10.20.30.0/24, 192.168.1.0/24
PersistentKeepalive = 25

Démarrer et tester

Protégez wg0.conf, démarrez le service et vérifiez échange de clés et compteurs avec wg show. Depuis le client, testez 10.20.30.1 puis une machine LAN autorisée. Sans échange, contrôlez point d’accès, UDP, redirection et clés ; si l’échange existe, vérifiez transfert IP, UFW, pare-feu des hôtes et route retour. Un ping bloqué n’exclut pas un service disponible.

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

Autres clients et sources

Chaque pair supplémentaire reçoit une nouvelle clé et adresse, par exemple 10.20.30.3/32 sur le serveur. Reload ajoute des pairs sans recréer l’interface ; changer Address, PostUp ou les routes de wg-quick peut imposer un redémarrage. Guides officiels : https://documentation.ubuntu.com/server/how-to/wireguard-vpn/peer-to-site/index.html et https://documentation.ubuntu.com/server/how-to/wireguard-vpn/common-tasks/index.html .

sudo systemctl reload wg-quick@wg0

Partager

Quelle est votre réaction ?

Aimer Aimer 0
Je n'aime pas Je n'aime pas 0
Amour Amour 0
Drôle Drôle 0
En colère En colère 0
Triste Triste 0
Waouh Waouh 0