[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