Jé pa l'temps #1 - Monter un VPN avec Wireguard
Explications rapides
- Bien qu’il y ait un serveur (machine à laquelle les requêtes seront adressées), le réseau est plus un
peer to peeroù chaque machine a un couple de clé publique/privée et s’adresse à une machine par sa clé publique. - Chemins par défault pour la configuration :
- Linux :
/etc/wireguard - MacOs :
/usr/local/etc/wireguard/
- Linux :
- Reload la configuration (serveur notamment) :
sudo systemctl reload wg-quick@wg0 - Allumer et éteindre la connexion :
- ON :
wg-quick up wg0 - OFF :
wg-quick down wg0
- ON :
Installation du CLI
Ressource officielle pour l’installation sur toutes les plateformes : https://www.wireguard.com/install/
Mac OS
brew install wireguard-tools
GUI
L’interface est pas mal et plus appropriée pour gérer sa connexion (https://apps.apple.com/fr/app/wireguard/id1451685025).
⚠️Avec l’interface la résolution DNS ne fonctionne pas si un DNS n’est pas précisé pour le client.
Debian
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable-wireguard.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Arch
# have to reboot after installing !
yaourt -S wireguard-tools wireguard-dkms linux-headers
Serveur
Génération du couple de clé
# Create folder
mkdir -p /etc/wireguard/keys
cd /etc/wireguard && umask 077
cd keys && umask 077
# Generate keys
wg genkey | tee privatekey | wg pubkey > publickey
Création de la configuration
# /etc/wireguard/wg0.conf
[Interface]
# Address is your VPN endpoint's IP
Address = 10.0.10.1/24
# DON'T FORGET TO REPLACE YOUR INTERFACE IN THE FOLLOWING LINES !
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o [YOUR INTERFACE] -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o [YOUR INTERFACE] -j MASQUERADE
# Address is your VPN endpoint's IP
Address = 10.0.10.1/24 # ⚠️/24
# ListenPort is the port which your client will connect to
ListenPort = 59523
PrivateKey = [PRIVATE KEY]
# Comment about Peer #1 identity
[Peer]
PublicKey = [PEER PUBLIC KEY]
AllowedIPs = 10.0.10.2/32 # ⚠️/32
# Comment about Peer #2 identity
[Peer]
PublicKey = [PEER PUBLIC KEY]
AllowedIPs = 10.0.10.3/32 # ⚠️/32
Démarrage automatique
sudo systemctl enable wg-quick@wg0
# To start if not
sudo systemctl start wg-quick@wg0
Client
Tester l’installation du client
wg-quick up wg0
Si des erreurs apparaissent, redémarrer la machine ! Wireguard est un module Linux (et ça demande de redémarrer).
Génération du couple de clé
# Create folder
mkdir -p /etc/wireguard/keys
cd /etc/wireguard && umask 077
cd keys && umask 077
# Generate keys
wg genkey | tee privatekey | wg pubkey > publickey
Création de la configuration
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.10.2/24 # ⚠️/24
PrivateKey = [PRIVATE KEY OF THE CURRENT MACHINE]
# DNS = 1.1.1.1 // Mandatory sometimes for DNS resolution
[Peer]
PublicKey = [PUBLIC KEY OF THE SERVER]
# Indique que l'on veut que tout le traffic passe par le proxy
AllowedIPs = 0.0.0.0/0
# VPN's IP:port
Endpoint = 51.159.31.15:59523
PersistentKeepalive = 25
Lancement automatique au démarrage
sudo systemctl enable wg-quick@wg0
# To start if not
sudo systemctl start wg-quick@wg0
Cools links
- https://www.wireguard.com/
- https://docs.artemix.org/sysadmin/wireguard-management/
- https://medium.com/@crosby.michael/home-network-wireguard-vpn-d112ec4a49ba
- https://medium.com/@aveek/setting-up-pihole-wireguard-vpn-server-and-client-ubuntu-server-fc88f3f38a0a
- https://github.com/trailofbits/algo/blob/master/docs/client-macos-wireguard.md
- https://try.popho.be/wg.html
- https://docs.sweeting.me/s/wireguard
- https://www.ckn.io/blog/2017/11/14/wireguard-vpn-typical-setup/
— — — — — — — — — — — — — — — — — — — — — —
La série « Jé pa l’temps » est une série de tutoriels rapides en mode “prise de note” pour avoir une trace de tout ce dont je ne peux me rappeler et pourquoi pas le partager à d’autre. On va à l’essentiel, laissons les jolis pavés à d’autres sites comme medium… LOL !