WireGuard-VPN-Tunnel für SIP-Verbindungen zu einem Asterisk-Server

20. Februar 2026

Das Beispiel: Volker betreibt einen Asterisk-Server auf einem Raspberry Pi. Sein Freund Junghard möchte sich mit einem SIP-Softphone auf seinem Linux-Notebook oder Linux_PC (Ubuntu oder Debian) über das Internet bei Volkers Asterisk anmelden und darüber telefonieren. Damit der SIP-Traffic nicht abgehört werden kann und der Provider die Verbindung nicht nach einiger Zeit trennt, wird die Verbindung durch einen WireGuard-VPN-Tunnel geschickt. Kein Portforwarding auf Junghards Seite ist nötig, obwohl bei ihm zwei Router hintereinander geschaltet sind.

Bei der Einrichtung hat mir der Chatbot Claude.ai sehr geholfen. Am besten richtet man an ihn Rückfragen und sendet Claude die Fehlermeldungen zu, falls etwas nicht klappt. Claude hilft dann mit den richtigen Linuxbefehlen weiter.

Die Vorteile eines WireGuard-VPN-Tunnels für SIP:

Verschlüsselung SIP ist von Haus aus unverschlüsselt – Gespräche und Zugangsdaten können abgehört werden. WireGuard verschlüsselt den gesamten Traffic mit modernster Kryptographie.

Provider-Trennung wird verhindert Viele Provider erkennen SIP-Traffic und trennen die Verbindung nach 30–60 Minuten. Im WireGuard-Tunnel sieht der Provider nur verschlüsselte UDP-Pakete auf Port 51820 – SIP ist nicht mehr erkennbar.

Kein Portforwarding beim Client nötig Der Client baut die Verbindung aktiv zum Server auf. Egal wie viele Router oder NAT-Ebenen dazwischen liegen – es funktioniert ohne jeden Eingriff in die Netzwerkkonfiguration beim Client.

Stabile Verbindung durch PersistentKeepalive Alle 25 Sekunden wird ein kleines Keepalive-Paket gesendet, das NAT-Timeouts verhindert und den Tunnel dauerhaft offen hält.

Keine doppelte Verschlüsselung nötig TLS und SRTP im Softphone können deaktiviert werden – WireGuard übernimmt die Verschlüsselung auf Netzwerkebene. Das vereinfacht die Konfiguration erheblich.

Einfache Erweiterbarkeit Weitere Clients – Smartphones, Notebooks, Raspberry Pis – lassen sich jederzeit als neuer Peer in die wg0.conf eintragen, ohne die bestehenden Verbindungen zu unterbrechen.

Geringer Ressourcenverbrauch WireGuard ist extrem schlank und läuft problemlos auf einem Raspberry Pi neben Asterisk, Pi-hole und anderen Diensten.

DALL·E 2026 02 20 18.40.48 A humorous symbolic illustration of a SIP phone connection between a Linux laptop and an Asterisk phone server. The Linux laptop has a cute penguin st
Der Versuch einer humorvollen Darstellung des Sachverhalts. Die SIP-Verbindung ist mit Wireguard in einem VPN-Tunnel versteckt und verschlüsselt.

Getestet habe ich die Verbindung zwischen einem Raspberry Pi mit Asterisk 16 und einem Ubuntu-Notebook.

Warum WireGuard für SIP? SIP-Traffic über das Internet hat zwei bekannte Probleme: Erstens ist er unverschlüsselt und kann abgehört werden. Zweitens trennen viele Provider SIP-Verbindungen nach einer gewissen Zeit – oft nach 30 bis 60 Minuten. Beides lässt sich elegant mit WireGuard lösen. Der Provider sieht nur verschlüsselte UDP-Pakete auf Port 51820 und erkennt SIP nicht mehr. Und PersistentKeepalive hält den Tunnel dauerhaft offen.

Voraussetzung: Volkers Asterisk-Server läuft bereits und Junghard hat dort bereits einen SIP-Account eingerichtet. WireGuard muss auf Volkers Raspi bereits installiert sein oder wird jetzt installiert. Volkers Router muss den UDP-Port 51820 per Portweiterleitung an den Raspi weiterleiten. Auf Junghards Seite ist kein Portforwarding nötig.

Der SIP-Account in Volkers sip.conf: Junghards bestehender SIP-Account wird um zwei Zeilen ergänzt:

; Junghard mit Wireguard-VPN
[10044]
type=friend
context=phones
secret=sicherespasswort
host=dynamic
username=10044
canreinvite=no
dtmfmode=rfc2833
keepalive=60
disallow=all
allow=g722
allow=alaw
allow=ulaw
callerid = "Junghard (Wirguard)" <10044>
nat=no                        ; neu
qualify=yes                   ; neu

Die beiden neuen Zeilen sind nat=no und qualify=yes. Da SIP jetzt durch den WireGuard-Tunnel läuft, ist kein NAT mehr im Spiel. qualify=yes lässt Asterisk regelmäßig prüfen ob Junghard erreichbar ist. Nach der Änderung in der Asterisk-Konsole die sip.conf neu laden:

sip reload

Für die pjsip.conf sähe der Eintrag wie folgt aus:

; Junghard mit WireGuard-VPN
[10044]
type=endpoint
context=phones
disallow=all
allow=g722
allow=alaw
allow=ulaw
dtmf_mode=rfc2833
auth=10044
aors=10044
callerid="Junghard (WireGuard)" <10044>
direct_media=no
; nat=no entspricht in pjsip:
force_rport=no
rewrite_contact=no

[10044]
type=auth
auth_type=userpass
username=10044
password=sicherespasswort

[10044]
type=aor
max_contacts=1
qualify_frequency=60


WireGuard installieren, falls noch nicht geschehen:
Auf beiden Rechnern – Volkers Raspi und Junghards Notebook – WireGuard installieren:

sudo apt update
sudo apt install wireguard

Dann auf beiden Rechnern die Schlüssel generieren:

wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey

Private Key anzeigen lassen:

cat /etc/wireguard/privatekey

Public Key anzeigen lassen:

cat /etc/wireguard/publickey

Den public key, der auf Volkers Raspi erzeugt wurde, nennen wir zur besseren Unterscheidung hier im Beispiel volkerpublickey und volkerprivatekey für den privat key. Entsprechend wurden auf Junghards Notebook junghardpublickey und junghardprivatekey erzeugt.

Den eigenen privat key dürfen wir nicht veröffentlichen oder aus der Hand geben!  Wir müssen jedoch unsere public key austauschen, z.B. per E-Mail, mündlich oder sonst wie.

Die wg0.conf auf Volkers Raspi: Falls noch keine wg0.conf in /etc/wireguard vorhanden ist, wird sie jetzt mit einem Texteditor angelegt. Falls bereits eine wg0.conf existiert (z.B. für eine IAX2-Verbindung), wird Junghards Notebook einfach als neuer Peer ergänzt:

# /etc/wireguard/wg0.conf auf Volkers Rasperry Pi mit Asterisk
[Interface]
PrivateKey = volkerprivatekey
Address = 10.99.99.2/24
ListenPort = 51820

# Junghard
[Peer]
PublicKey = junghardpublickey
AllowedIPs = 10.99.99.4/32
PersistentKeepalive = 25

Beachte: Junghard hat keinen Endpoint-Eintrag. Da er hinter NAT sitzt, baut er die Verbindung aktiv zu Volker auf. WireGuard lernt seinen Endpoint automatisch beim ersten Verbindungsaufbau.

Die wg0.conf auf Junghards Notebook oder PC:

# wg0.conf auf Junghards Seite
[Interface]
PrivateKey = junghardprivatekey
Address = 10.99.99.4/24

[Peer]
PublicKey = volkerpublickey
AllowedIPs = 10.99.99.2/32
Endpoint = volker.dyndns.org:51820
PersistentKeepalive = 25

Die URL volker.dyndns.org ist natürlich durch Volkers tatsächliche DynDNS-Adresse oder statische öffentliche IP zu ersetzen. Die Tunnel-IP von Volkers Raspi ist 10.99.99.2, die von Junghards Notebook oder PC 10.99.99.4.

Die Dateiberechtigung sollte eine Leseberechtigung nur für root sein, um die Schlüssel zu schützen:

sudo chmod 600 /etc/wireguard/privatekey
sudo chmod 600 /etc/wireguard/wg0.conf

WireGuard starten: Auf beiden Rechnern:

sudo wg-quick up wg0

Änderung der wg0.conf aktivieren:

sudo wg syncconf wg0 <(wg-quick strip wg0)

Oder komplett neu starten:

sudo wg-quick down wg0
sudo wg-quick up wg0

Damit WireGuard bei jedem Systemstart automatisch startet:

sudo systemctl enable wg-quick@wg0

Testen der VPN-Verbindung: WireGuard-Status prüfen:

sudo wg show

Vom Notebook aus Volkers Raspi anpingen:

ping 10.99.99.2

Wenn der Ping durchkommt, ist der Tunnel aktiv. Das SIP-Softphone einrichten: In einem beliebigen SIP-Softphone auf Junghards Notebook (z.B. PhonerLite, Linphone, Zoiper) trägt Junghard als Registrar die WireGuard-Tunnel-IP von Volkers Raspi ein:

Registrar / SIP-Server: 10.99.99.2:5066
Benutzername: 10044
Passwort: sicherespasswort

Beachte: Es steht im Beispiel 10.99.99.2:5066 weil mit 5066 hier im Beispiel vom Asterisk-Server der unübliche SIP-Port 5066 verwendet wird und nich der übliche 5060.

TLS und SRTP-Verschlüsselung im Softphone deaktivieren – das übernimmt WireGuard. Junghard ist nun als vollständiger Teilnehmer in Volkers Asterisk eingebucht und kann alle internen Nummern anrufen und von ihnen angerufen werden. Was passiert wenn Junghards Notebook aus ist? Dann ist seine SIP-Nummer offline. Eingehende Anrufe gehen ins Leere, es sei denn, man richtet in der extensions.conf einen Fallback ein, zum Beispiel auf eine andere Nummer.

Firewall: Auf Volkers Raspi den WireGuard-Port freigeben falls eine Firewall aktiv ist:

sudo ufw allow 51820/udp

Der Provider von Junghard sieht nur verschlüsselten UDP-Traffic auf Port 51820 und kann SIP nicht erkennen oder trennen. Kein Portforwarding auf Junghards Seite ist nötig – er baut die Verbindung aktiv zu Volker auf. Falls dir die Meldungen verdächtig vorkommen, dann teile sie Claude.ai einfach mit und erkläre den Sachverhalt.

20260220
Zum Testen kam ein Laptop mit Ubuntu Mate zum Einsatz mit dem Softphone PhonerLite unter Wine. Ein Smartphone dient als WLAN-Hotspot, um realistische Bedingungen darzustellen.

Passend zum Thema:

VPN IAX2 150px
Wireguard ermöglicht abhörsichere Verbindungen zwischen Asterisk-Servern
Wireguard-VPN-Tunnel für IAX2-Vernetzungen zwischen Asterisk-Servern – 16. Februar 2026: Das Beispiel: Zwei Asterisk-Server sind bereits erfolgreich über eine IAX2-Verbindung miteinander verbunden. Diese IAX2-Verbindung soll nun in beiden Richtungen durch einen VPN-Tunnel geschickt werden. Dazu kommt die VPN-Software  Wireguard zum Einsatz. Beide Asterisk-Server laufen auf Linux Debian (z.B. Ubuntu oder Raspian). Das Vorgehen  und Einrichten wird an einem Beispiel zwischen den beiden fiktiven Asterisk-Servern Michael und Volker erklärt, da man sonst alles vermischt. Zum Schluss erklärt der Artikel, wie man mehrere Asterik-Server mit IAX2 und Wireguard abhörsicher vernetzen kann. – weiter