[fli4l] fli4l-3.10.1 und VoIP wie?
Christoph Schulz
fli4l at kristov.de
So Jun 28 07:57:44 CEST 2015
Hallo!
Hans Bachner schrieb:
> Unter welchen Umständen muss man überhaupt eine Port-Weiterleitung
> für VoIP einrichten?
Gute Frage. Dazu wusste ich bislang zu wenig über SIP und seine
Begleitprotokolle (RTP, RTCP). Habe gerade mal etwas nachgelesen, siehe
unten.
> Ich habe Port 5060 & Co. nirgends weitergeleitet, alles funktioniert
> tadellos. Die Geräte und das Softphone melden sich beim SIP Proxy des
> Providers an, daher können Sie auch ankommende Anrufe annehmen (die
> Verbindung wurde bereits von innen aufgebaut, die Firewall akzeptiert
> daher "Antworten" auf dieser Verbindung).
Genau der Punkt mit der Firewall ist vermutlich entscheidend.
Gemäß diversen Quellen im Internet [1,2] lässt sich SIP sowohl über UDP als
auch über TCP fahren. Wenn du TCP verwendest, hast du Recht -- in diesem
Falle kann eine Verbindung zum Registrar vom SIP-Gerät offen gehalten
werden, der fli4l hätte diese in seiner Conntrack-Tabelle, und Pakete "von
der anderen Seite" können problemlos der Verbindung zugeordnet werden.
Wenn du UDP verwendest, geht das aber nicht. Es stimmt zwar, dass für
Conntrac-Zwecke ausgehende UDP-Pakete eine Art "Verbindung" aufbauen, aber
nur für kurze Zeit. Wenn diese Zeit abgelaufen ist, wird der Eintrag vom
Kernel automatisch aus der Conntrack-Tabelle entfernt. Wenn also erst _nach_
dieser Zeit ein Anruf ankommt, hat man ein Problem. Deshalb bietet z.B.
FirtzBox eine Einstellung, die Firewall "offen zu halten", was letztlich
(vermutlich, habe noch keinen tcpdump laufen lassen) nur heißt, dass die
FritzBox immer wieder Pakete aussendet. Man kann sogar die Zeit
konfigurieren (alle x Minuten).
Auf jeden Fall wird es schwieriger, wenn man NAT verwendet und _mehrere_
VoIP-Geräte im Netz hat. Das ist bei mir nicht der Fall (habe nur die
FritzBox und daran ein analoges Telefon hängen), deshalb habe ich das auch
nicht weiter verfolgt, aber in diesem Fall muss man der fli4l-Firewall ein
SIP-NAT-Helfermodul spendieren (via "HELPER:sip" in den PF_PREROUTING_CT-
Ketten).
[1] https://www.dus.net/de/sip-ueber-tcp
[2] http://stackoverflow.com/questions/15644726/with-sip-when-to-use-tcp-not-udp
Viele Grüße,
--
Christoph Schulz
[fli4l-Team]
Mehr Informationen über die Mailingliste Fli4L