Outils pour utilisateurs

Outils du site


reseau:wireguard

**Ceci est une ancienne révision du document !**

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

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.

reseau/wireguard.1723853316.txt.gz · Dernière modification : 2024/08/17 00:08 de alarig