Kurzfassung

Anschluß eines SIP-VoIP-Telefons an die Außenwelt; über ssh-Tunnel und zwei Asterisks, wenn man hinter einem NAT hängt.

Veranschaulichung

Konfiguration

Es muß auf beiden Seiten ein Asterisk installiert werden. Der Clou dabei ist, daß der Asterisk auf mehreren Netzwerkschnittstellen horchen kann, jeweils einmal auf eth0 und auf tun0. Am asterisk1 wird das SIP-Telefon angeschlossen (das hier in diesem Fall ein mit der Gigaset-Firmware umgeflashtes T-Home Sinus 501v ist). Asterisk1 horcht auf eth0 und auf tun0. Letzteres Gerät wird angelegt, wenn man einen virtuellen Tunnel zur asterisk0-Maschine anlegt, der wiederum durch die beiden NATs per SSH geführt wird. Man muß natürlich zumindest auf asterisk0 von außen per SSH kommen, sonst funktioniert das Ganze nicht.

Links

http://vtun.sourceforge.net/ (vtun)
Setup wie im vtun-Artikel: http://www.linuxjournal.com/article/6675

Paketverfolgung

Die UDP-Pakete für VoIP per SIP, die vom SIP-Telefon kommen, werden also vom asterisk1 entgegengenommen und dann auf das Gerät tun0 weitergegeben, was wiederum die Pakete in einen TCP-ssh-Tunnel verpackt, der zum asterisk0 führt. Dort wird alles umgekehrt wieder ausgepackt und schön per UDP an den SIP-Provider weitergeleitet. Hier funktioniert mit NAT alles, weil Konfiguration von Portforwardings möglich wäre; der Linksys DD-WRT macht das aber auch ohne Forwardings gut. Den entstehenden Traffic kann man sehr gut auf den Schnittstellen verfolgen, wenn ein Telefonat anliegt.

Konfigurationsdateien

Für asterisk0 (vtun-server)
asterisk0-extensions.conf
asterisk0-sip.conf
asterisk0-vtund-siptunnel.conf

Für asterisk1 (vtun-client)
asterisk1-extensions.conf
asterisk1-sip.conf
asterisk1-vtund-siptunnel.conf


Der Port 5001 muß per ssh-Portforwarding noch von asterisk1 auf asterisk0 weitergeleitet werden (ssh -L 5001:127.0.0.1:5001 remotehost). Der vtun-Daemon verbindet sich dann über diesen Tunnel. Insgesamt kommt eine Menge Overhead zusammen, aber VoIP-Gespräche klappen bestens.

Datum: 28.04.2010