Vous avez suivi le tutoriel installer et configurer un serveur VPN WireGuard sur Linux et client (Windows, Android, Ubuntu) mais malheureusement cela ne fonctionne pas.
Comment debugger des problèmes de connexion sur WireGuard ?
En effet, par défaut, Wireguard ne fait aucune journalisation ainsi vous n’avez aucun log pour visualiser les erreurs et débuger.
Toutefois, il existe des solutions afin d’activer les logs dans WireGuard.
Dans ce tutoriel, je vous présente trois méthodes pour voir les logs WireGuard.
Comment activer et voir les logs WireGuard
Journalctl
Tout d’abord, vous pouvez visualiser les journaux du service WireGuard pour débugger les problèmes de lancement du service.
Pour cela, utilisez la commande journalctl en filtrant sur le nom du service à l’aide de l’option -u :
journalctl -u wg-quick@wg0
Par exemple, si le fichier de configuration de Wireguard est incorrect, cela peut retourner les erreurs suivantes :
Jun 14 11:37:15 XX wg-quick[2871440]: Configuration parsing error
Jun 14 11:37:15 XX wg-quick[2871427]: [#] ip link delete dev wg0
Jun 14 11:37:16 XX systemd[1]: wg-quick@wg0.service: Main process exited, code=exited, status=1/FAILURE
Jun 14 11:37:16 XX systemd[1]: wg-quick@wg0.service: Failed with result 'exit-code'.
Jun 14 11:37:16 XX systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0.
Ou encore resolvconf : command not found :
DYNDBG
Voici comment activer la journalisation DynDBG de Wireguard, qui envoie des messages de journal au tampon de message du noyau, KMSG. Vous pouvez ensuite utiliser l’utilitaire dmesg standard pour lire ces messages.
De plus, de nombreux systèmes Linux ont un démon de journalisation comme RsysLogd ou JournalD qui capture et stocke automatiquement ces messages.
echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
Vous pouvez aussi utiliser tee via sudo :
echo module wireguard +p | sudo tee /sys/kernel/debug/dynamic_debug/control
Puis pour visualiser les logs Wiregard, on utilise dmesg avec grep.
L’option -w active le suivi et l’option -T affiche l’horodatage lisible par l’utilisateur.
dmesg -wT | grep wireguard
On obtient donc les journaux WireGuard avec la poignée de main et les éventuelles erreurs.
[Thu Jun 23 10:55:48 2022] wireguard: wg0: Sending keepalive packet to peer 4 (192.164.215.113:55840)
[Thu Jun 23 10:55:59 2022] wireguard: wg0: Sending keepalive packet to peer 4 (192.164.215.113:55840)
[Thu Jun 23 10:56:47 2022] wireguard: wg0: Receiving handshake initiation from peer 3 (192.164.215.113:54375)
[Thu Jun 23 10:56:47 2022] wireguard: wg0: Sending handshake response to peer 3 (192.164.215.113:54375)
A partir de là, il est possible de rediriger vers un fichier journal /var/log/wireguard.log :
dmesg -wT | grep wireguard >> /var/log/wireguard.log
Pour désactiver les logs Wireguard :
echo module wireguard -p > /sys/kernel/debug/dynamic_debug/control
IPTABLES
Iptables vous permet d’enregistrer chaque paquet envoyé à et depuis WireGuard. La plupart des systèmes Linux utilisent des iptables, ou ses nouveaux nfrables et sœurs, pour définir leur pare-feu.
Par exemple pour enregistrer les connexions sur le port WireGuard (vérifiez la configuration) :
iptables -I INPUT -p udp --dport 51194 -j LOG --log-prefix 'wireguard iptables: ' --log-level 7
iptables -I OUTPUT -p udp --sport 51194 -j LOG --log-prefix 'wireguard iptables: ' --log-level 7
Si vous préférez loguer sur l’interface WireGuard, utilisez iptables comme ceci :
iptables -I INPUT -i wg0 -j LOG --log-prefix 'tunnel wireguard iptables: ' --log-level 7
iptables -I OUTPUT -o wg0 -j LOG --log-prefix 'tunnel wireguard iptables: ' --log-level 7
Voci ce que l’on obtient :
[Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59671 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59672 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59673 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN= OUT=eno1 SRC=TT DST=ZZ LEN=188 TOS=0x00 PREC=0x00 TTL=64 ID=65308 PROTO=UDP SPT=51194 DPT=54375 LEN=168 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59675 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59676 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59674 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN=eno1 OUT= MAC=4c:XX SRC=ZZ DST=TT LEN=108 TOS=0x00 PREC=0x00 TTL=115 ID=59677 PROTO=UDP SPT=54375 DPT=51194 LEN=88 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN= OUT=eno1 SRC=TT DST=ZZ LEN=188 TOS=0x00 PREC=0x00 TTL=64 ID=65309 PROTO=UDP SPT=51194 DPT=54375 LEN=168 [Thu Jun 23 11:28:17 2022] wireguard iptables: IN= OUT=eno1 SRC=TT DST=ZZ LEN=172 TOS=0x00 PREC=0x00 TTL=64 ID=65310 PROTO=UDP SPT=51194 DPT=54375 LEN=152
Pour rediriger les logs iptables de WireGuard vers un fichier journal distinct :
dmesg -wT | grep 'wireguard iptables:' >> /var/log/wireguard.log
Enfin pour supprimer les règles iptables, utilisez l’option -D :
iptables -D INPUT -p udp --dport 51194 -j LOG --log-prefix 'wireguard iptables: ' --log-level 7
iptables -D OUTPUT -p udp --sport 51194 -j LOG --log-prefix 'wireguard iptables: ' --log-level 7
TCPDUMP
Tcpdump est utilitaire capable de capturer des trames réseaux.
Vous pouvez l’utiliser pour capturer les paquets sur le port Wireguard ou l’interface wg0.
L’utilitaire est inclut dans la plupart des distributions Linux, vous devez l’installer avec APT ou dnf.
Pour récupérer les paquets sur le port de WireGuard (ici 51194) vers un fichier de log :
touch /var/log/wireguard-tcpdump.log
tcpdump -ttttni any 'udp port 51194' >> /var/log/wireguard.log
Voici ce que l’on obtient, sachant que vous enregistrer chaque paquet, la taille du fichier est vite très importante.
Une autre façon de faire et de récupérer les paquets sur l’interface wg0 :
touch /var/log/wireguard-tunnel-tcpdump.log
tcpdump -ttttni wg0 >> /var/log/wireguard-tunnel-tcpdump.log
Enfin, vous pouvez aussi logguer au format pcap lisible par la plupart des utilitaires réseaux Linux (Wiresharck, …)
tcpdump -i any 'udp port 51194' -G 86400 -w /var/log/wireguard-tcpdump.pcap
Dans munin
Enfin vous pouvez aussi utiliser un utilitaire de supervision comme munin pour grapher l’interface wg0 et garder un oeil sur les débits WireGuard :
- Installer et configurer un serveur VPN WireGuard sur Linux et client (Windows, Android, Ubuntu)
- Comment activer et voir les logs WireGuard
- Résoudre les erreurs dans les logs WireGuard
- Comment installer OpenVPN sur Ubuntu, Debian
- Installer un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)
- Serveur d’anonymat : OpenVPN + Proxy et TOR
- pi-hole : bloquer la publicité et trackers
- Configurer pihole avec DNSCrypt ou DNS over HTTPS (DoH)
Liens
L’article Comment activer et voir les logs WireGuard est apparu en premier sur malekal.com.
0 Commentaires