Ich habe bei mir zu Hause die AVM FRITZ!Box als alleinigen Router abgelöst und durch eine Juniper SSG 5 Firewall ersetzt. Die FRITZ!Box ist trotzdem noch vorhanden und steht als IP-Client hinter der Firewall, primär um die Internettelefonie zu 1&1 bereitzustellen. Leider hat es etwas gedauert, bis ich die richtigen Einstellungen herausgefunden hatte, damit die Telefonie auch wirklich in beide Richtungen funktionierte.
Von “es geht gar nichts” über “es kann nur einer reden” bis hin zu “meine Frau kann endlich wieder telefonieren” gab es mehrere Stufen. Und um es gleich vorweg zunehmen: Ich bin mir nicht überall zu 100 % sicher, ob ich die Probleme richtig erkannt und gelöst habt. Fakt ist aber, dass es jetzt funktioniert. Ich habe aber nicht noch mehr recherchiert. Hier folgt mein Endstand.
Problem
Das Problem schien wohl zu sein, dass
- die SSG keinen ALG für RTP (sondern nur für SIP und RTSP) hat, bzw. dass
- die FRITZ!Box nicht korrekt die nötigen Verbindungen für SIP und RTP offen halten kann, obwohl es hier so beschrieben ist.
Ich hatte dann eine Weile mit den Einstellungen in der FRITZ!Box sowie den ALGs der SSG herumexperimentiert. Leider sieht man auf der SSG ja nicht wirklich, welche Verbindungen von außen blockiert werden. Unter anderem hatte ich das hier von Juniper getestet. Allerdings lief bei mir nie eine Verbindung in diese Regel rein. Es schien ohnehin mehr ein Problem von RTP und weniger von SIP zu sein. (?) Diesen Blogpost hatte ich dann gefunden, der direkt schreibt, dass die SSG keinen ALG für RTP hat.
Lösung
Wie es jetzt läuft:
- Den 30 Sekunden Keepalive auf der FRITZ!Box aktiviert (Telefonie -> Eigene Rufnummern -> Anschlusseinstellungen -> Sprackpakete).
- Die ALGs für SIP und RTSP auf der SSG ausgeschaltet (damit es ein definierter Zustand von “die SSG macht nichts Intelligentes” ist).
- Auf der SSG ein “Port-Forwarding”, also die VIP und Policies für SIP (UDP 5060) und RTP (UDP 7078-7097, scheint FRITZ!Box spezifisch zu sein) eingerichtet, so wie es hier alternativ beschrieben ist. Diese Ports werden also an die FRITZ!Box weitergereicht.
Übersicht der weitergeleiteten Ports:
Und hier ein paar Screenshots. Man kann gut beobachten, dass pro Telefonat genau zwei RTP/RTSP Sessions aufgemacht werden. Bei einem ausgehenden Telefoncall werden die Verbindungen eingehend (!) geöffnet. Bei einem eingehenden Anruf dann entsprechend ausgehen. Außerdem interessant ist der immer erkannte “Fragmented Traffic” am Anfang eines jeden Telefonats. Ich habe während den Gesprächen zwar nichts gemerkt, aber es tritt immer auf. Siehe Bild-Beschreibungen für mehr Infos:
Und hier noch ein Teil der CLI Konfiguration der SSG, welche ja leider für jeden Service der VIP einen einzelnen Eintrag braucht. Nerv.
set service "udp_5060_sip" protocol udp src-port 0-65535 dst-port 5060-5060 set service "udp_7078_rtp" protocol udp src-port 0-65535 dst-port 7078-7078 set service "udp_7079_rtp" protocol udp src-port 0-65535 dst-port 7079-7079 set service "udp_7080_rtp" protocol udp src-port 0-65535 dst-port 7080-7080 set service "udp_7081_rtp" protocol udp src-port 0-65535 dst-port 7081-7081 set service "udp_7082_rtp" protocol udp src-port 0-65535 dst-port 7082-7082 set service "udp_7083_rtp" protocol udp src-port 0-65535 dst-port 7083-7083 set service "udp_7084_rtp" protocol udp src-port 0-65535 dst-port 7084-7084 set service "udp_7085_rtp" protocol udp src-port 0-65535 dst-port 7085-7085 set service "udp_7086_rtp" protocol udp src-port 0-65535 dst-port 7086-7086 set service "udp_7087_rtp" protocol udp src-port 0-65535 dst-port 7087-7087 set service "udp_7088_rtp" protocol udp src-port 0-65535 dst-port 7088-7088 set service "udp_7089_rtp" protocol udp src-port 0-65535 dst-port 7089-7089 set service "udp_7090_rtp" protocol udp src-port 0-65535 dst-port 7090-7090 set service "udp_7091_rtp" protocol udp src-port 0-65535 dst-port 7091-7091 set service "udp_7092_rtp" protocol udp src-port 0-65535 dst-port 7092-7092 set service "udp_7093_rtp" protocol udp src-port 0-65535 dst-port 7093-7093 set service "udp_7094_rtp" protocol udp src-port 0-65535 dst-port 7094-7094 set service "udp_7095_rtp" protocol udp src-port 0-65535 dst-port 7095-7095 set service "udp_7096_rtp" protocol udp src-port 0-65535 dst-port 7096-7096 set service "udp_7097_rtp" protocol udp src-port 0-65535 dst-port 7097-7097 set service "udp_7078-7097_rtp" protocol udp src-port 0-65535 dst-port 7078-7097 set interface ethernet0/0 vip interface-ip 5060 "udp_5060_sip" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7078 "udp_7078_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7079 "udp_7079_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7080 "udp_7080_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7081 "udp_7081_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7082 "udp_7082_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7083 "udp_7083_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7084 "udp_7084_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7085 "udp_7085_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7086 "udp_7086_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7087 "udp_7087_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7088 "udp_7088_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7089 "udp_7089_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7090 "udp_7090_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7091 "udp_7091_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7092 "udp_7092_rtp" 192.168.86.2 manual set interface ethernet0/0 vip interface-ip 7093 "udp_7093_rtp" 193.168.86.2 manual set interface ethernet0/0 vip interface-ip 7094 "udp_7094_rtp" 194.168.86.2 manual set interface ethernet0/0 vip interface-ip 7095 "udp_7095_rtp" 195.168.86.2 manual set interface ethernet0/0 vip interface-ip 7096 "udp_7096_rtp" 196.168.86.2 manual set interface ethernet0/0 vip interface-ip 7097 "udp_7097_rtp" 197.168.86.2 manual set policy id 26 from "Untrust" to "Trust" "Any-IPv4" "VIP(ethernet0/0)" "udp_5060_sip" permit log set policy id 26 exit set policy id 27 from "Untrust" to "Trust" "Any-IPv4" "VIP(ethernet0/0)" "udp_7078-7097_rtp" permit log set policy id 27 exit set policy id 24 from "Trust" to "Untrust" "Any-IPv4" "Any-IPv4" "SIP" nat src permit log count set policy id 24 exit set policy id 28 from "Trust" to "Untrust" "Any-IPv4" "Any-IPv4" "udp_7078-7097_rtp" nat src permit log count set policy id 28 exit