Puisque WireGuard du futur noyau Linux 5.6, j'ai décidé de voir comment intégrer au mieux ce VPN avec mon .
Matériel
- Raspberry Pi 3 avec un module LTE et une adresse IP publique. Ici, il y aura un serveur VPN (appelé ci-aprÚs edgewalker)
- Un téléphone Android qui doit utiliser le VPN pour toutes les communications
- Un ordinateur portable Linux qui doit utiliser le VPN uniquement au sein du réseau
Chaque appareil se connectant au VPN doit pouvoir se connecter à tous les autres appareils. Par exemple, le téléphone doit pouvoir se connecter à un serveur web sur l'ordinateur portable, si les deux appareils font partie du réseau VPN. Si la configuration est suffisamment simple, on peut envisager de se connecter au VPN avec un bureau (via Ethernet).
Ătant donnĂ© que les connexions cĂąblĂ©es et sans fil deviennent de moins en moins sĂ©curisĂ©es avec le temps (, et ), j'envisage sĂ©rieusement d'utiliser WireGuard pour tous mes appareils, peu importe l'environnement dans lequel ils fonctionnent.
Installation du logiciel
WireGuard fournit pour la plupart des distributions Linux, Windows et macOS. Les applications pour Android et iOS sont disponibles dans les répertoires d'applications.
J'ai la derniÚre Fedora Linux 31, et avant l'installation, je n'ai pas pris la peine de lire le manuel. J'ai simplement trouvé les packages wireguard-tools, je les ai installés, puis je n'ai pas compris pourquoi rien ne fonctionnait. Des recherches ultérieures ont montré que je n'avais pas installé le package wireguard-dkms (avec le pilote réseau), et il n'était pas disponible dans le dépÎt de ma distribution.
Si j'avais lu les instructions, j'aurais fait les bonnes étapes :
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Sur Raspberry Pi, j'ai installĂ© la distribution Raspbian Buster, oĂč le package est dĂ©jĂ disponible wireguard, je l'installe :
$ sudo apt install wireguardSur le téléphone Android, j'ai installé l'application du catalogue officiel Google App Store.
Installation des clés
Pour l'authentification des nĆuds, WireGuard utilise un schĂ©ma simple de clĂ©s privĂ©es/publiques pour l'authentification des nĆuds VPN. Vous pouvez facilement crĂ©er des clĂ©s VPN avec la commande suivante :
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.keyCela nous donne trois paires de clés (six fichiers). Ne faisons pas référence aux fichiers dans les configurations, mais copions ici le contenu : chaque clé est une ligne en base64.
Création d'un fichier de configuration pour le serveur VPN (Raspberry Pi)
La configuration est assez simple, j'ai créé le fichier suivant /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# ordinateur portable
PublicKey =
AllowedIPs = 10.200.200.2/32
[Peer]
# téléphone mobile
PublicKey =
AllowedIPs = 10.200.200.3/32Quelques remarques :
- Il faut insérer les lignes des fichiers de clés aux emplacements appropriés
- Mon réseau VPN utilise une plage interne
10.200.200.0/24 - Pour les commandes
PostUp/PostDownj'ai indiquĂ© l'interface rĂ©seau extĂ©rieure wwan0, chez vous cela peut ĂȘtre diffĂ©rent (par exemple, eth0)
Le réseau VPN se lance facilement avec la commande suivante :
$ sudo wg-quick up wg0 Un petit détail : en tant que serveur DNS, j'ai utilisé dnsmasq lié à l'interface réseau br0, j'ai également ajouté des appareils wg0 à la liste des appareils autorisés. Dans dnsmasq, cela se fait en ajoutant une nouvelle ligne avec l'interface réseau au fichier de configuration /etc/dnsmasq.conf, par exemple :
interface=br0
interface=wg0De plus, j'ai ajouté une rÚgle iptable pour autoriser le trafic sur le port UDP d'écoute (51280) :
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTMaintenant que tout fonctionne, nous pouvons définir le démarrage automatique du tunnel VPN :
$ sudo systemctl enable wg-quick@wg0.serviceConfiguration du client sur l'ordinateur portable
Sur l'ordinateur portable, crĂ©ons un fichier de configuration /etc/wireguard/wg0.conf avec les mĂȘmes paramĂštres :
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Remarques :
- Au lieu de edgewalker, il faut mettre l'IP publique ou le nom d'hĂŽte du serveur VPN
- En configurant
AllowedIPssur10.200.200.0/24, nous utilisons le VPN uniquement pour accéder au réseau interne. Le trafic vers toutes les autres IP/serveurs passera toujours par les canaux 'normaux' ouverts. Un serveur DNS préconfiguré sur l'ordinateur portable sera également utilisé.
Pour tester et dĂ©marrer automatiquement, utilisons les mĂȘmes commandes wg-quick et systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceConfiguration du client sur le téléphone Android
Pour le téléphone Android, créons un fichier de configuration trÚs similaire (appelons-le mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey =
DNS = 10.200.200.1
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 Contrairement à la configuration sur l'ordinateur portable, le téléphone doit utiliser notre serveur VPN comme serveur DNS (ligne DNS), et également acheminer tout le trafic via le tunnel VPN (AllowedIPs = 0.0.0.0/0).
Au lieu de copier le fichier sur l'appareil mobile, vous pouvez le convertir en code QR :
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confLe code QR s'affichera dans la console sous forme d'ASCII. Il peut ĂȘtre scannĂ© depuis l'application VPN Android pour configurer automatiquement le tunnel VPN.
Sortie
La configuration de WireGuard est tout simplement magique par rapport Ă OpenVPN.
Source : habr.com
