NAT-Router richtig einrichten: VoIP, P2P und IM im Griff

Muss ein Rechner oder Endgerät aus dem Internet erreichbar sein, ist ein Vermittlungsdienst im Internet notwendig. Im Falle von VoIP übernimmt das der VoIP-Provider. Der Client, etwa ein VoIP-Telefon, ein Software-Telefon oder eine VoIP-Anlage, registriert sich beim Provider. Dabei werden die öffentliche IP-Adresse und ein Port übermittelt, siehe Bild 5. Anrufer aus dem Internet wenden sich an den VoIP-Provider, der NAT-Router leitet ankommende Anrufe an das Endgerät weiter, das die Verbindung zum VoIP-Provider aufgebaut hat.

Das funktioniert oft nur in der Theorie. Der Grund dafür ist, dass VoIP in der Regel über UDP abgewickelt wird. Der überwiegende Teil der Kommunikation im Internet läuft über TCP. TCP ist ein Protokoll, bei dem Aufbau und Abbau einer Verbindung zwischen zwei Rechnern im Protokollstandard definiert ist. Zudem wird sichergestellt, dass verlorengegangene Pakete erneut gesendet werden. Der Empfänger kann sich außerdem darauf verlassen, dass die einzelnen TCP-Pakete in derselben Reihenfolge ankommen, wie sie versandt wurden.

Bei UDP ist all das nicht der Fall. Ein UDP-Paket enthält nur wenige Informationen. Das sind zwei Portnummern, Source- und Destination-Port, sowie eine 16-Bit-Prüfsumme, um sicherzustellen, dass das Paket korrekt übermittelt wurde. Der NAT-Router kann nur an den beiden Ports erkennen, dass er eingehende Pakete nunmehr an ein bestimmtes Endgerät weiterleiten muss. Da er das darüber liegende Protokoll, im Fall von VoIP meist SIP, nicht versteht, weiß er nicht, wann eine solche Verbindung wieder beendet ist und er ankommende Pakete nicht mehr an das Endgerät weiterleiten darf.

Das geschieht meist mittels eines Time-outs. Wenn eine Zeit lang kein Paket mehr geroutet wurde, dann betrachtet der Router die Verbindung als beendet. Dieser Time-out ist in der Regel für das VoIP-Protokolle zu kurz. Typischerweise handeln die VoIP-Gegenstellen aus, etwa alle 30 Minuten miteinander zu reden, beispielsweise, um abzuklären, ob ein Client eine neue IP-Adresse bekommen hat. Der Time-out vieler NAT-Router ist allerdings nur auf ein bis zwei Minuten eingestellt.

Die meisten Router erlauben keine Veränderung dieses Intervalles. Diese Möglichkeit bieten meist nur High-End-Router, etwa die von Lancom, siehe Bild 6. Typischer Effekt bei einer solchen Konstellation ist, dass das VoIP-Telefon oder der Softphone-Client nicht mehr klingeln, wenn eine Zeit lang keine Gespräche geführt wurden.

Eine offensichtliche Lösung liegt darin, dass man eine Neuregistrierung des Clients in kürzeren Abständen vornimmt. Doch da spielen einige VoIP-Provider nicht mit. Sie lassen eine häufige Neuregistrierung nicht zu, um die eigenen Server nicht mit übermäßigem Traffic zu belasten. 1&1 und GMX erlauben dies nur alle acht Stunden.

VoIP-Software oder VoIP-Telefone hinter einem NAT-Router können allerdings meist mit einem SIP-Ping konfiguriert werden. Dabei sendet der Client in regelmäßigen Abständen ein UDP-Paket an den Server. Dieser Konfigurationsparameter ist oft nur schwer zu finden. Bei einer Fritz!Box findet man den entsprechenden Punkt unter "Einstellungen" – "Internettelefonie" – "Erweiterte Einstellungen", siehe Bild 7. Bei der Telefonanlagensoftware Asterisk muss in der Datei sip.conf der Parameter "qualify=yes" gesetzt werden, siehe Bild 8. Allgemein lässt sich nur feststellen, dass die verschiedenen Hersteller diesem wichtigen Parameter oft eigene, verwirrende Namen geben. Gemeinsamkeiten bestehen allerdings darin, dass alle Hersteller den SIP-Ping-Parameter gut verstecken und schlecht dokumentieren.

Doch durch SIP-Ping sind nicht alle Probleme mit VoIP gelöst. Mit dem beschriebenen Verfahren wurde lediglich erreicht, dass sich SIP-Clients hinter einem NAT-Router mit ihrem SIP-Provider unterhalten können. Der Audio-Kanal ist vom SIP-Kanal, der den Auf- und Abbau von Gesprächen übernimmt, unabhängig. Bekannter Effekt bei SIP und anderen VoIP-Protokollen ist das "One-Way-Audio". Dabei hört nur ein Gesprächsteilnehmer, meist der Angerufene, seinen Partner. Der Anrufer hört hingegen nichts.

Auch dieses Problem wird durch NAT-Routing verursacht. Kommt ein SIP-Telefonat zustande, dann übermittelt der Anrufer dem Angerufenen in einem SIP-Paket den UDP-Port des RTP-Kanals, über den die Audio-Daten übertragen werden. Das anrufende Gerät gibt dabei seinen eigenen UDP-Port an. Der NAT-Router, der die Pakete weiterleitet, verändert diesen Port allerdings. Dies ist nötig, weil zwei verschiedene Geräte oder PCs hinter dem Router möglicherweise denselben Port verwenden. Damit der NAT-Router ankommende Pakete für die einzelnen Geräte unterscheiden kann, verwendetet er jedoch zwei verschiedene Ports. Übermittelt ein SIP-Telefon beispielsweise den UDP-Port 1234 zur Audio-Kommunikation, und der NAT-Router nutzt zur Weiterleitung Port 4321, dann glaubt die Gegenstelle, sie müsse den RTP-Audio-Kanal an Port 1234 senden, obwohl 4321 die richtige Portnummer wäre. Die Pakete laufen ins Leere.

Letzteres Problem tritt nicht nur bei VoIP auf, sondern immer dann, wenn ein Client eine Port-Nummer an einen Server übermittelt, unter der er vermeintlich erreicht werden kann. Das gilt beispielsweise für P2P-Filesharing oder aktives FTP. Bei FTP wurde das Problem durch die Einführung von passivem FTP gelöst. Fast alle FTP-Server und FTP-Client beherrschen heute passives FTP. Prominente Ausnahme ist allerdings der Kommandozeilen-FTP-Client von Windows. Auch die neuesten Versionen beherrschen nur aktives FTP. Behelfen kann man sich durch die FTP-Funktion aller modernen Browser oder mit einem beliebigen anderen FTP-Client.

Themenseiten: Security-Praxis, Servers, Storage, Storage & Server

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

2 Kommentare zu NAT-Router richtig einrichten: VoIP, P2P und IM im Griff

Kommentar hinzufügen
  • Am 20. April 2016 um 9:31 von Kila

    Kann man PureVPN auf NAT-Routing integrieren

  • Am 7. August 2008 um 0:18 von X-MEN

    verwundert…
    selbst meiner alter Cisco 2621 hat max 50% auslastung….
    Komisch…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *