Naar aanleiding van jullie artikel op pagina 138 in c’t 5/2019 heb ik een WireGuard-tunnel ingericht tussen mijn thuisserver en mijn mailserver, die bij een host draait als virtuele machine. Dat werkte meteen en de servers konden elkaar pingen. Zodra de mailserver grotere e-mails naar de server thuis moet doorsturen, meldt de smtp-verbinding dat er een time-out is opgetreden. Kleinere mailtjes worden wel doorgestuurd. Waar loopt het hier mis?
Blijkbaar gaat er bij WireGuard-tunnels soms iets mis bij de automatische communicatie van de path MTU (Maximum Transmission Unit). Bij ons gebeurde dat bij een host die draait op een router met een dsl-verbinding. Daarvoor had WireGuard een iets kleinere MTU (1412) geselecteerd dan bij de server die bij de hoster staat (1420). Kleine pakketten zoals pings (ICMP Echo Requests en Replies) kwamen wel door, maar grotere pakketten blijven hangen vanwege een foute fragmentering.
Controleer met ip link show wg0 aan beide kanten van je tunnel welke MTU WireGuard op zijn interface heeft ingesteld. Indien dat verschillende waarden oplevert, stel dan de MTU aan de kant met de hogere waarde in op de waarde van de andere kant. Daarvoor moet je in /etc/wireguard/wg0.conf in de tekst onder [interface] een regel toevoegen zoals de volgende:
MTU = 1412
Als je dan nog met wg-quick down|up wg0 de interface uit en weer aanzet, zou het probleem opgelost moeten zijn.