Menu Fermer

Comment activer et voir les logs WireGuard

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

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 [email protected]
Voir les logs du service Wireguard avec journalctl

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]: [email protected]: Main process exited, code=exited, status=1/FAILURE
Jun 14 11:37:16 XX systemd[1]: [email protected]: 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 :

Erreur Wireguard et 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
Comment activer et voir les logs WireGuard avec la journalisation DYNDBG

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
Si vous utilisez IPv6, remplacez les iptables par ip6tables; Ou si vous utilisez IPv4 et IPv6, exécutez les deux variantes.

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
Comment activer et voir les logs WireGuard avec iptables

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.

Comment activer et voir les logs WireGuard avec tcpdump

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 :

Grapher l'interface réseau Wireguard sur Munin

Liens

Liens