« Wireguard » : différence entre les versions
(Page créée avec « Category:vpn Wireguard est une solution de VPN libre à source ouverte se voulant plus simple et sécurisée qu'OpenVPN. {{info|Wireguard n'est actuelleme... ») |
(Création de sous-titres à la place du gras + actualisation des explications + correction de mise en forme + ajout d'une explication sur le routage + ajout d'une astuce concernant les scripts..) |
||
Ligne 1 : | Ligne 1 : | ||
[[Category:vpn]] | [[Category:vpn]] | ||
Wireguard est une solution de VPN libre à source ouverte se voulant plus simple et sécurisée qu'[[Openvpn|OpenVPN]]. | ''Wireguard'' est une solution de ''VPN'' libre à source ouverte se voulant plus simple et sécurisée qu'[[Openvpn|OpenVPN]]. | ||
=Partie serveur= | |||
==Installation== | |||
Il est actuellement (21/07/20) disponible dans les branches ''buster-backports'', ''bullseye'' et ''Sid'' de ''Debian''. L'outil est présent sous forme de module ''DKMS'' jusqu'au noyau ''5.5'' et c'est au ''5.6'' qu'il est intégré complètement à celui-ci. Il est également possible de l'obtenir via un dépôt dédié avec les [https://www.wireguard.com/install/ commandes suivantes]: | |||
<source lang="bash"> | <source lang="bash"> | ||
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list | echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list | ||
Ligne 10 : | Ligne 13 : | ||
</source> | </source> | ||
Nous utiliserons une Debian Sid pour cette documentation. | Nous utiliserons une ''Debian Sid'' (du 19/04/19) pour cette documentation. Aussi, '''seule la commande suivante est nécessaire''': | ||
''' | |||
apt install wireguard | apt install wireguard | ||
==Génération des clés== | |||
wg genkey | tee /etc/wireguard/clé_privée_serveur | wg pubkey > /etc/wireguard/clé_publique_serveur | wg genkey | tee /etc/wireguard/clé_privée_serveur | wg pubkey > /etc/wireguard/clé_publique_serveur | ||
==Afficher vos clés== | |||
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur | cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur | ||
''Le résultat vous sera utile pour remplir les fichiers de configuration serveur et client.'' | ''Le résultat vous sera utile pour remplir les fichiers de configuration serveur et client.'' | ||
==Configuration du serveur== | |||
vim /etc/wireguard/wg0.conf | vim /etc/wireguard/wg0.conf | ||
Ligne 35 : | Ligne 34 : | ||
ListenPort = 51820 | ListenPort = 51820 | ||
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | ||
Ligne 43 : | Ligne 41 : | ||
</source> | </source> | ||
==Activer le routage== | |||
sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf | sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf | ||
sysctl -p | sysctl -p | ||
==Appliquer les bons droits== | |||
chown -v root:root /etc/wireguard/wg0.conf | chown -v root:root /etc/wireguard/wg0.conf | ||
chmod -v 600 /etc/wireguard/wg0.conf | chmod -v 600 /etc/wireguard/wg0.conf | ||
==Démarrer le tunnel== | |||
wg-quick up wg0 | wg-quick up wg0 | ||
''Une interface wg0 est créée avec l'adresse IP fournie dans le fichier de configuration.'' | ''Une interface wg0 est créée avec l'adresse IP fournie dans le fichier de configuration.'' | ||
==Arrêter le tunnel== | |||
wg-quick down wg0 | wg-quick down wg0 | ||
==Activer le tunnel au démarrage== | |||
Il existe un service [[:Category:Systemd|Systemd]] pré-installé mais désactivé par défaut. Il suffit de l'activer pour lancer automatiquement ''Wireguard'' au démarrage du système. | |||
Il existe un service [[Systemd]] pré-installé mais désactivé par défaut. Il suffit de l'activer pour lancer automatiquement Wireguard au démarrage du système. | |||
systemctl enable wg-quick@wg0.service | systemctl enable wg-quick@wg0.service | ||
=Partie cliente= | =Partie cliente= | ||
==installation== | |||
apt install wireguard | apt install wireguard | ||
Ligne 71 : | Ligne 68 : | ||
wg genkey | tee /etc/wireguard/clé_privée_client | wg pubkey > /etc/wireguard/clé_publique_client | wg genkey | tee /etc/wireguard/clé_privée_client | wg pubkey > /etc/wireguard/clé_publique_client | ||
==Afficher vos clés== | |||
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur | cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur | ||
==Configuration du client== | |||
<source lang="bash"> | <source lang="bash"> | ||
[Interface] | [Interface] | ||
Ligne 87 : | Ligne 85 : | ||
</source> | </source> | ||
'''Démarrer le tunnel | {{Astuce|Il est également possible d'exécuter un script après l'établissement et à la destruction du tunnel (afin de changer vos serveurs DNS ou d'ajouter des [https://www.cyberciti.biz/faq/how-to-set-up-wireguard-firewall-rules-in-linux/ règles de pare-feu] par exemple) via les directives <source lang="bash" inline>PostUp</source> et <source lang="bash" inline>PostDown</source> de la section <source lang="bash" inline>[Interface]</source>.}} | ||
==Démarrer le tunnel== | |||
wg-quick up wg0-client | wg-quick up wg0-client | ||
==Arrêter le tunnel== | |||
wg-quick down wg0-client | wg-quick down wg0-client | ||
''' | ==Routage== | ||
''Wireguard'' utilise le [[routage par la source]] afin de faire transiter l'ensemble des paquets dans le tunnel. Lorsque le client monte le lien, l'outil se charge d'exécuter des commandes [[:Category:iproute2|Iproute2]] (affichées dans le ''stdout'') afin de créer une table n°51820 et d'y ajouter la règle <source lang="bash" inline>ip -4 route add 0.0.0.0/0 dev wg0-client table 51820</source>. Ceci peut être déroutant au premier abord du fait que la route par défaut n'est pas supprimée de la table de routage standard, ce qui pourrai laisser penser que le ''VPN'' n'est pas utilisé pour le traffic ''WAN'' mais il n'est est rien. Une capture réseau le confirmera asser facilement. | |||
=Sources= | =Sources= |
Version du 21 juillet 2020 à 23:07
Wireguard est une solution de VPN libre à source ouverte se voulant plus simple et sécurisée qu'OpenVPN.
Partie serveur
Installation
Il est actuellement (21/07/20) disponible dans les branches buster-backports, bullseye et Sid de Debian. L'outil est présent sous forme de module DKMS jusqu'au noyau 5.5 et c'est au 5.6 qu'il est intégré complètement à celui-ci. Il est également possible de l'obtenir via un dépôt dédié avec les commandes suivantes:
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Nous utiliserons une Debian Sid (du 19/04/19) pour cette documentation. Aussi, seule la commande suivante est nécessaire:
apt install wireguard
Génération des clés
wg genkey | tee /etc/wireguard/clé_privée_serveur | wg pubkey > /etc/wireguard/clé_publique_serveur
Afficher vos clés
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur
Le résultat vous sera utile pour remplir les fichiers de configuration serveur et client.
Configuration du serveur
vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.100.100.1/24
SaveConfig = true
PrivateKey = INSÉRER_LA_CLÉ_PRIVÉE_DU_SERVEUR
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = INSÉRER_LA_CLÉ_PUBLIQUE_DU_CLIENT
AllowedIPs = 10.100.100.2/32
Activer le routage
sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf sysctl -p
Appliquer les bons droits
chown -v root:root /etc/wireguard/wg0.conf chmod -v 600 /etc/wireguard/wg0.conf
Démarrer le tunnel
wg-quick up wg0
Une interface wg0 est créée avec l'adresse IP fournie dans le fichier de configuration.
Arrêter le tunnel
wg-quick down wg0
Activer le tunnel au démarrage
Il existe un service Systemd pré-installé mais désactivé par défaut. Il suffit de l'activer pour lancer automatiquement Wireguard au démarrage du système.
systemctl enable wg-quick@wg0.service
Partie cliente
installation
apt install wireguard
Génération des clés
wg genkey | tee /etc/wireguard/clé_privée_client | wg pubkey > /etc/wireguard/clé_publique_client
Afficher vos clés
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur
Configuration du client
[Interface]
Address = 10.100.100.2/32
PrivateKey = 8BOBheDTB8I0FpYfX4MM0OVRcchfPMPw1epH+rTaEm0=
[Peer]
PublicKey = sX3l46346afcqNeCUgXOY7dxfGat0/pO7O2g75vtGhU=
Endpoint = wg.toto.fr:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
ASTUCE
Il est également possible d'exécuter un script après l'établissement et à la destruction du tunnel (afin de changer vos serveurs DNS ou d'ajouter des règles de pare-feu par exemple) via les directivesPostUp
et PostDown
de la section [Interface]
.Démarrer le tunnel
wg-quick up wg0-client
Arrêter le tunnel
wg-quick down wg0-client
Routage
Wireguard utilise le routage par la source afin de faire transiter l'ensemble des paquets dans le tunnel. Lorsque le client monte le lien, l'outil se charge d'exécuter des commandes Iproute2 (affichées dans le stdout) afin de créer une table n°51820 et d'y ajouter la règle ip -4 route add 0.0.0.0/0 dev wg0-client table 51820
. Ceci peut être déroutant au premier abord du fait que la route par défaut n'est pas supprimée de la table de routage standard, ce qui pourrai laisser penser que le VPN n'est pas utilisé pour le traffic WAN mais il n'est est rien. Une capture réseau le confirmera asser facilement.