**Ceci est une ancienne révision du document !**
Table des matières
Wireguard
Pourquoi wg ?
- ovpn c’est chiant à gérer
- dès que quelqu’un tire un peu sur ovpn, la machine est à plat
- wg a de bien meilleures perfs
- on est en 2024
Technique
Pour le moment le PoC se passe sur ovpn02.grif
histoire d’éviter de spawn une VM juste pour les tests
La mise en place se fait avec deux fichiers et trois commandes. Chaque utilisateur a son port que l’on extrapole du dernier bloc de l’adresse IPv6 : 2a00:5884:8316::/48
donne printf '%d\n' '0x8316'
soit 33558.
Ensuite, on écrit la conf dans /etc/wireguard/wg$port.conf
, par exemple :
- /etc/wireguard/wg33558.conf
[Interface] ListenPort = 33558 PrivateKey = blah= [Peer] PublicKey = YtTa180Wgh3HiV4iVxoFL8vb3E+NueGpv4BLGuN3Zgs= AllowedIPs = 89.234.186.78/32, 2a00:5884:8316::/48 PersistentKeepalive = 25
Par défaut gentoo ignore toute la magie de wg-quick et ça nous va assez bien. On a pas envie d’avoir des rules et du marquage de firewall sur la machine de routage wg. On utilise les tools de base de gentoo pour mettre la route dans le kernel :
- /etc/conf.d/net.wg33558
wireguard_wg33558="/etc/wireguard/wg33558.conf" config_wg33558="null" routes_wg33558=" 89.234.186.78/32 2a00:5884:8316::/48 " postup () { ip link set wg33558 alias "Cust: yvonnick" }
Ensuite, on fait démarrer l’interface par défaut :
ln -s /etc/init.d/net.lo /etc/init.d/net.wg33558 rc-update add net.wg33558 rc-service net.wg33558 start
Gestion de la MTU
wg a une interface avec une MTU de 1420, et il ne fait pas de clamping par défaut, donc on le fait avec netfilter :
iptables -t mangle -A FORWARD -i wg+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -t mangle -A POSTROUTING -o wg+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu rc-service iptables save ip6tables -t mangle -A FORWARD -i wg+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ip6tables -t mangle -A POSTROUTING -o wg+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu rc-service ip6tables save
Configuration côté client
J’ai aussi fait le test avec une gentoo, et j’ai du routage par rules sur ce routeur, donc ça donne ça :
- /etc/conf.d/net.wg33558
[Interface] PrivateKey = blahblah= [Peer] Endpoint = wg.grifon.fr:33558 PublicKey = 0LFVijcJWjjgdSjnBQXSrPXkCy3fqA/DcYbO7ERW6mM= AllowedIPs = 0.0.0.0/0, ::/0
- /etc/conf.d/net.wg33558
wireguard_wg33558="/etc/wireguard/wg33558.conf" config_wg33558="89.234.186.78/32 2a00:5884:8316::1/128" routes_wg33558=" 0.0.0.0/0 dev wg33558 table 204092 ::/0 dev wg33558 table 204092 "
Un petit sed pour le firewall et zou !
De toutes façons on fournira un fichier de conf client d’exemple comme on le faisait pour OpenVPN.