[fli4l] NAT timeout für udp und tcp

Erwin Lottermann broeselmeier at gmx.de
Sa Apr 16 11:14:57 CEST 2016


Am 15.04.2016 um 21:23 schrieb Matthias Taube:
> Am 14.04.2016 um 22:04 schrieb Erwin Lottermann:
>
>> in meiner Fritzbox 7170 sind 5 Minuten eingestellt, weil das der
>> Standardwert war.
>>
>> Im Webinterface vom fli4l sehe ich, dass es eine aktive UDP Verbindung
>> von der FritzBox:5060 zum externen Sipproxy:5060 gibt.
>> Habe jetzt auch mal einige Minuten lang die Ansicht regelmäßig
>> aktualisiert. Die Verbindung war die ganze Zeit da.
>
> Also bei mir (Fritz und Telekom) hat das nicht geklappt.
> Wenn von außen jemand angerufen hat, wurde die Verbindung mehr zufällig
> aufgebaut oder lief ins Leere, weil ein udp-Timeout seit dem letzten
> Ping der Fritz zugeschlagen hat.
>
> Seit der Einrichtung von Portforward und PF_PREROUTING_CT[]='tmpl:sip
> IP_NET_3 HELPER:sip' läuft alles problemlos.
>
Zur Zuverlässigkeit meiner derzeitigen Konfiguration kann ich noch 
nichts sagen, da ich bisher zu wenige Tests gemacht habe.
Ich konnte einen Account anrufen, der auch per SIP erreichbar war 
(Telekom SIP-Kunden sind z.B. nicht per SIP erreichbar)
und ein Telekom-SIP-Kunde, der eine Fritzbox als Router hat, konnte mich 
per SIP anrufen, nachdem er meinen SIP-Account im Telefonbuch seiner 
Fritzbox eingetragen hatte (mit normalen Telefonen kann man ja keine 
SIP-Adresse eingeben)

Habe inzwischen einige RFCs zum Thema SIP/RTP und NAT überflogen.
Wenn ich es richtig verstanden habe, wird prinzipiell von expliziten 
Routerkonfigurationen für SIP abgeraten, weil die ehe kontraproduktiv 
sind. Denn:

1. Sind für SIP/RTP hinreichend Mechanismen spezifiziert, wie 
SIP-User-Clients und SIP-Proxys mit NAT umzugehen haben und

2. führen spezielle SIP-Routerkonfigurationen meistens dazu, dass SIP 
nur für einen Client hinter dem Router funktioniert. D.h. falls es dazu 
kommt, dass Besucher in deinem Netz SIP nomadisierend benutzen wollen, 
dann kann das durch die Rounterkonfiguration unmöglich sein.

Die Prinzipien helfen aber wenig, wenn man weder Einfluss auf den 
SIP-Provider (z.B. weil der bisherige klassische Telefonanbieter seine 
eigene Vorstellung von SIP hat) noch auf den SIP-User-Client (z.B. weil 
der durch die Firmware der Fritzbox vorgegeben ist) hat.

Das Prinzip der Registrierung eines Sip-UserClients hinter einem 
NAT-Router habe ich so verstanden:

Der SIP-Client muss wissen, dass er hinter einem NAT-Router sitzt und 
muss folgende Dinge tun:
1. der User-Client muss per STUN die öffentliche IP-Adresse des Routers 
bestimmen
2. da der User-Client keinen Einfluss auf den Quellport hat, den der 
Router der Verbindung zuweist, muss er dem SIP-Registrar/Proxy bei der 
Registrierung mittels 'rport'-Parameter mitteilen, dass er die 
Kontaktaufnahme bei eingehenden Anrufen auf dem selben Port wünscht, den 
der Router für die Verbindung vergeben hat.
3. der User-Client muss den NAT-Eintrag im Router per SIP-Ping am Leben 
halten.

Wenn das so funktioniert, dann sendet der SIP-Proxy eingehende Anrufe 
also gar nicht an Port 5060 des Routers und außerdem können sich aus dem 
internen Netz mehrere SIP-Clients bei verschiedenen SIP-Proxies 
registrieren.

Weißt du, was der conntrack helper für SIP genau macht?



Mehr Informationen über die Mailingliste Fli4L