Hallo,
der Name "Portweiterleitungen offen halten" ist meines Erachtens irreführend, es geht nämlich gar nicht um Portweiterleitungen bei dieser Funktion. Wenn ich die Funktionalität dieser Einstellung aus den Paketmitschnitten auf DSL Ebene richtig gedeutet habe, dann geht es dabei um folgendes:
NAT Router halten intern eine Tabelle vor, in der sie sich alle aktiven ausgehenden Verbindungen merken, um eine Antwort auf eine solche Verbindung zuverlässig an den Initiator übergeben zu können. Alle ankommenden Pakete, die keiner solchen Verbindung oder einer Portweiterleitung zugeordnet werden können, werden von der NAT-Firewall verworfen (z.B. Viren oder Wurmattacken
). Wenn eine gewisse Zeit auf einer Verbindung keine Daten mehr geflossen sind, dann nimmt der Router an, die Verbindung ist nicht mehr aktuell und löscht den zugehörigen Eintrag seiner Tabelle. Der Zeitraum dieser Löschung ist unterschiedlich, je nach Router zwischen 30 Sekunden und einigen Minuten. Treffen danach doch noch Antwortpakete ein, so werden sie verworfen.
Eine SIP Registrierung eines Clients ist nichts anderes als eine solche ausgehende Verbindung. Die SIP-Signalisierung für einen reinkommenden Anruf ist die Antwort des Servers auf die Registrierung des Clients. Wenn der Router aber schon die zugehörige ausgehende Verbindung für diese Registrierung in seiner Tabelle gelöscht hat, so verwirft er die ankommenden Pakete, weil er sie keiner Verbindung mehr zuordnen kann. Der Client merkt nichts davon, und der Server kann nichts dagegen machen, weil er nicht weiß, wie er den Client nun erreichen soll. Das ist der Grund, warum ankommende Anrufe manchmal funktionieren, oft aber nicht: Zwischen der Registrierung und der Löschung des NAT Tabellen Eintrages kommen die Anrufe an, nach der Löschung nicht mehr.
Und hier kommt die Option "Portweiterleitungen offen halten" ins Spiel: Sie schickt in regelmäßigen Abständen ein kleines Dummy-Paket ohne sinnvollen Inhalt an den SIP Server (ein UDP Paket mit 4 Byte Payload - also praktisch nichts), und zwar an den gleichen Port, wie er für die Registrierung verwendet wird. Der NAT Router glaubt also, die Verbindung ist noch aktiv, lässt folglich den Eintrag in seiner NAT Tabelle bestehen, und leitet reinkommende Anrufe ordnungsgemäß an den Client weiter: Das Telefon klingelt
hone:. Die kleinen Dummy Pakete ohne Inhalt richten keinen Schaden an, sie werden vom SIP Server einfach verworfen.
Da die Pakete nur Dummy Pakete sind und keinerlei Information enthalten, können sie bei einem IP Wechsel nicht helfen: Am SIP Server kommen viele solcher Dummy Pakete von vielen Fritzboxen an, er kann sie keinem Client zuordnen. Da kommen dann die Scripte von Novize ins Spiel, die in dieser Situation eine komplette Neuregistrierung erzwingen, die dann dem Server die neue IP-Adresse des Clients bekannt machen.
Meiner Meinung wäre der Name "NAT-Tabellen aktuell halten" besser gewählt.
Was also tun, wenn man die Option "Portweiterleitungen offen halten" nicht hat? Um den vorgeschalteten Router von Aktualität der Verbindung zu überzeugen, muss das ausgehende Paket einige Bedingungen erfüllen: Es muss mit dem richtigen Protokoll an den richtigen Port der richtigen Adresse gesendet werden. Einfach ein Ping an den Server reicht nicht. Mir wäre keine Möglichkeit bekannt, wie man ein solches Dummy Paket manuell erzeugen könnte (vielleicht wissen die Experten aus der MOD Szene, wie AVM diese Dummy Pakete erzeugt, ich vermute, es ist ein Feature des voipd oder vom "telefon" Binary). Man könnte sicherlich ein kleines Programm schreiben, dass dieses Paket erzeugt, das Problem ist nur: Es müsste die Parameter für den SIP Server aus der AVM Konfig auslesen, das würde die Sache schon wieder recht aufwendig machen. Alternativ müsste jeder diese Parameter von Hand konfigurieren, was die Sache fehleranfällig macht und definitiv nicht Einsteigertauglich ist.
Was man aber heute schon manuell kann: man kann eine Neuregistrierung erzwingen, die ja ebenfalls das Problem löst (Novizes Scripte tun ja genau das nach einem IP Wechsel). Alle 5 Minuten eine Neuregistrierung würden das Problem zuverlässig lösen. ABER:
Eigentlich wird das Intervall der Neuregistrierungen vom Server festgelegt, bei 1&1 sind es bis zu 8 Stunden. Ich hab keine Ahnung, wie die darauf reagieren, wenn plötzlich alle 5 Minuten eine Neuregistrierung aufläuft. Vielleicht blockt der Server dann sogar den Account, weil er eine DOS oder Hacker Attacke vermutet. Elegant ist das jedenfalls nicht.
Viele Grüße
Frank