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