Nunja, ich bin mir nicht ganz sicher ob das so gedacht ist oder nicht. Bei Business-Telefonanlagen (z.B. Cisco Callmanager) ist es bspw. durchaus üblich, dass sich die Endgeräte gleichzeitig an zwei Servern registrieren, das gehört dort zum Redundanzkonzept. Sobald einer der Server wegbricht, übernimmt der andere die SIP-Session zu dem Endgerät, das geht i.d.R. sogar ohne Auswirkungen auf das Telefonat (RTP-Traffic wird ja i.d.R. sowieso nicht zum Registrar geschickt). Natürlich setzt das voraus, dass die Server im Backend eine Synchronisation über alle offenen Sessions machen, davon würde ich bei 1und1 jetzt mal nicht ausgehen. Mir geht es aber an der Stelle ja auch nicht um Redundanz, sondern um das Firewall-Traversal ankommender Anrufe, welches durch die ausgehende Verbindung LAN-->WAN möglich wird.Spannende Idee mit der Registrierung auf beiden Servern … so gedacht ist das eigentlich überhaupt nicht. Aber, wenn es geht, klasse Tipp!
Ich hoffe es ist okay, wenn ich mal ganz kurz aushole und das Konzept eingehe nach dem diese "Hardware-Firewalls" funktionieren (oder "integrierten Firewalls" oder wie auch immer der Routerhersteller das bezeichnen möchte). Ich will auf keinen Fall den Oberlehrer spielen, mir geht es lediglich darum, dass wir ein gleiches Verständnis haben, vielleicht übersehe ich auch etwas oder bin völlig auf dem Holzweg und kann noch dazu lernen (was sowieso die Grundidee hinter diesem Experiment ist). Ich bitte außerdem um Verzeihung für manche flapsige oder untechnische Formulierung.Was genau ist das Problem mit den Ports: Musst Du für jede Rufnummer an beide SIP-Registrare mit dem selben Quell-Port angemeldet sein?
Grundidee
Hinter dem ganzen Thema Firewall steht grundsätzlich die Annahme der größte Teil des Internet sei böse und will dem Nutzer schaden. Leider braucht der Nutzer aber den Teil des Internets, der nicht böse ist für irgendwelche Dinge. Also: Alles was das Internet vom Nutzer will soll bitte nicht funktionieren, aber alles was der Nutzer vom Internet will muss gehen.
(Den Punkt, dass ein Endgerät des Nutzers böse Dinge tut, weil es kompromittiert wurde, schlechte Software enthält, von Apple/Google/Microsoft/"hier beliebigen gehassten Hersteller einsetzen" ist, betrachten wir hier nicht)
Damit haben wir eigentlich schon die grundsätzliche Kommunikationsbeziehung erklärt: Vom LAN ins WAN (= Public Internet) darf erst mal alles durch, vom WAN ins LAN bitte gar nichts.
Die Herausforderung
Nun ist es ja nicht so, dass der Nutzer ständig nur die letzten Bilder in die Wolkenwelt hochlädt (also nur Dinge ins Internet schickt), sondern i.d.R. will er sich ja auch über das Wetter informieren, muss also Dinge (Filme, Fotos, Webseiten etc. pp.) doch aus dem Internet ins LAN herunterladen. Das Problem ist wir sagten zuvor: WAN nach LAN is nich!
Die Lösung
Hier kommt nun die "stateful" Firewall ins Spiel: Diese erkennt, dass der User eine Anforderung ans Internet gestellt hat (LAN nach WAN), nehmen wir der Einfachheit mal an, es wäre ein simpler http-Aufruf (Zielport 80) auf meinetwegen 172.217.16.131 (google.de). Die Firewall merkt sich nun in ihrer Session Table diesen Aufruf
Quelle | Quellport | Ziel | Zielport |
---|---|---|---|
PC im LAN (192.168.1.15) | 40789 | (google.de) 172.217.16.131 | 80 |
Quelle | Quellport | Ziel | Zielport |
---|---|---|---|
(google.de) 172.217.16.131 | 80 | PC im LAN (192.168.1.15) | 40789 |
Mit diesem Hintergrund wird die Herausforderung bei SIP wohl recht plakativ: Eingehende Anrufe kommen konzeptbedingt immer aus "dem bösen Internet" (WAN-->LAN) und sind damit erst einmal "verboten". Daher war meine Idee: Wenn sich der SIP-Client an beiden 1und1-IP-Adressen gleichzeitig registriert, dann kennt die Firewall diese gewollte Kommunikation und lässt eingehende Anrufe zu.
Dazu müssten aber zur Kommunikation mit beiden 1und1-Servern immer dieselben Ports verwendet werden, denn 1und1 schickt die SIP-Pakete für die jeweilige Rufnummer immer an den Port der als Quellport zur Registrierung verwendet wurde, die Quell-IP von 1und1 aber mehr oder weniger zufällig aus den beiden ausgewählt wird.
Das Grandstream verhält sich nun leider aber so:
SIP-Account 1 --> Quellport 5060
SIP-Account 2 --> Quellport 5062
SIP-Account 3 --> Quellport 5064
SIP-Account 4 --> Quellport 5066
usw.
D.h. ich kann niemals zwei unterschiedliche Registrare mit demselben Quellport ansprechen. SIP-Account 1 würde für sein Ziel (z.B. 1und1-Server 1) den Quellport 5060 nutzen, eingehende Anrufe von 1und1-Server 2 sind aber über 5060 nicht möglich, da SIP-Account 2 (selbe Rufnummer, anderer Registrar) den Quellport 5062 nutzt. Technisch wäre das machbar, aber die Implementierung von Grandstream verhindert dies leider. Ich postuliere: Es wäre sogar denkbar, dass mehrere Rufnummern beim selben Registrar über denselben Port registriert werden, denn die Unterscheidung für welche Rufnummer der eingehende Anruf erfolgt nicht auf IP-Ebene (Layer 3), sondern wird im SIP-Header übertragen.
Ich bin gespannt auf eure ehrliche Meinung zu meinen Ausführungen! Wie bereits erwähnt: Vielleicht bin ich auch völlig auf dem Holzweg und sollte überlegen, mich von Computern besser fernzuhalten
Zuletzt bearbeitet: