VoIP hinter einer NAT-Firewall

Wer Voice over IP hinter einer NAT-Firewall nutzen will, stößt schnell auf Probleme. Entweder kann nur ein Teilnehmer hören oder es kommt überhaupt kein Anruf zu Stande. Nach ein paar Änderungen an der Firewall funktioniert es.

Wer nicht gerade über eine FRITZ!Box Fon oder einen anderen VoIP-fähigen DSL-Router verfügt, muss einige Klimmzüge anstellen, um VoIP dennoch zum Laufen zu bringen. Die Gründe dafür sind im Protokolldesign von VoIP zu finden, hier gibt es gleich zwei Stolperstellen:

1.) Über SIP meldet sich das VoIP-Endgerät beim SIP-Server an (REGISTER). Hierbei teilt es dem Server mit, unter welcher IP-Adresse und welchem Port es Anrufanfragen entgegennimmt. Hinter einer NAT-Firewall hat das Endgerät allerdings eine private IP-Adresse, die von außen nicht erreichbar ist. Die öffentliche Adresse kennt das Endgerät im Allgemeinen nicht.

2.) Über SIP/SDP wird ein Telefongespräch ausgehandelt. Die eigentlichen Sprachdaten fließen jedoch via RTP über komplett andere Ports. Welche Ports das genau sind, entscheidet das VoIP-Endgerät und teilt sie der Gegenstelle beim Gesprächsaufbau mit. Also versucht die Gegenstelle, den RTP-Strom an den spezifizierten Port zu schicken. Dieser wird allerdings von der Firewall geschlossen, weil sie nichts von SIP und VoIP versteht.

In beiden Fällen kommt es zu Schwierigkeiten, da im Protokoll auf der Anwendungsebene IP- und Port-Informationen geschickt werden. Eine normale Layer-3-Firewall kennt aber nur die Protokollebene und die darin enthaltenen IP- und Port-Informationen.