Tutorial: 1und1 VoIP mit Fritz!Box HINTER opnSense

Started by theq86, March 06, 2017, 08:40:04 AM

Previous topic - Next topic
Hallo,

ich schreibe dieses kleine Tutorial, weil ich leider selbst nirgendwo fündig geworden bin und einiges ausprobieren musste, um es zum Laufen zu bekommen.

Um die opnSense richtig auszureizen betreibe ich sie direkt hinter einem reinen VDSL-Modem. Die Fritz!Box hängt am LAN Switch und ist zur Telefonanlage und WiFi AccessPoint kastriert. (IP-Client Modus)

Wie man die Box konfiguriert, darauf gehe ich selbst nicht ein. AVM bietet da aber auch Anleitungen für. Hier geht es darum, die Firewall einzurichten um eingehende und ausgehende Gespräche durchzulassen.

1. Aliase einrichten
Firewall->Aliase->Ansicht --> Neuen Alias hinzufügen (Typ: Ports)
Hier werden 1 Port und 2 Portbereiche definiert:
5060 -> SIP
5070:5079 -> VoIP Sprache (von 1und1 genutzte RTP Ports)
30000:30019 -> VoIP Fax (wenn benötigt)

Firewall->Aliase->Ansicht --> Neuen Alias hinzufügen (Typ: Hosts)
Alle IP Adressen vom verlinkten Post hinzufügen.
https://forum.opnsense.org/index.php?topic=4712.msg18404#msg18404

2. Portweiterleitung
Firewall->NAT->Portweiterleitung --> Hinzufügen
Schnittstelle: WAN
Version: IPv4
Protokoll: UDP
Ziel: WAN Adresse
Zielportbereich: angelegter Alias
Ziel-IP umleiten: IP der FritzBox
Zielport weiterleiten: Angelegter Alias

3. Outbound NAT
Firewall->NAT->Ausgehend

Zuerst Manuelle Erstellung ausgehender NAT Regeln auswählen und speichern.
Dann eine neue Regel anlegen:
Schnittstelle: WAN 
TCP/IP Version: IPv4 
Protokoll: UDP
Quelle: FritzBox IP
Quellport: jeglich
Ziel: jeglich
Zielport: jeglich
Übersetzung / Ziel: Schnittstellenadresse
Haken bei statischer Port <-- wichtig!

Verschiebt diese Regel jetzt noch an den Anfang der Liste (hinzugefügten Eintrag auswählen (Checkbox) und den Pfeil nach Links in der ersten Regel klicken.

Hi nasq,

Vielen Dank, habe es "sticky" markiert. :)


Grüsse
Franco

Sorry dass ich ggf. doof nachfrage, aber ist es wirklich ernst gemeint, dass die Weiterleitung auf den SIP Port und die Sprach/Fax Ports von ANY erlaubt werden :o
Das würde im Normalfall dazu führen, dass - so die Sense bei einem SIP Portscan irgendwem auffällt - man recht fix ungebetene Gäste hat die über einen telefonieren können - oder konfiguriert 1&1 seine FB so streng, dass das nicht möglich ist?

Grüße
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Ich danke dir sogar fürs "doof nachfragen"
Ich hatte es anders als mit der Any-Einstellung leider nicht hinbekommen. Vielleicht hab ich aber auch einen Denkfehler.

Wichtig ist, dass auf UDP die Ports 5060, 5070-5079 und 30000-30019 eingehend zur Kommunikation frei sind und auf die FritzBox geleitet werden. Wenn ich allerdings nur diese Ports outbound weiterleite, dann höre ich niemanden und kann nicht gehört werden. Ich nehme an, dass dann der RTP Stream nicht durchkommt.

Frage mich ohnehin, wozu ich das outbound nat brauche. normalerweise sollte doch eh alles, was aus meinem LAN ins WAN geht genattet werden, oder ?!?

FIX für etwas Sicherheit:

Ports kann ich leider nicht eingrenzen, sind sehr random.
Aber die IP Addressen, die 1und1 für RTP, STUN und SIP verwendet konnte ich mittels opnsense Paketfilter herausfinden. Es sind sau viele, aber wenn ich die Destination auf diese IPs einschränke dann sollten nur 1und1 Server Zugriff bekommen.


rtpproxy1-ngn.1und1.de - 212.227.124.2
rtpproxy2-ngn.1und1.de - 212.227.124.3
rtpproxy3-ngn.1und1.de - 212.227.124.66
rtpproxy4-ngn.1und1.de - 212.227.124.67
rtpproxy5-ngn.1und1.de - 212.227.124.4
rtpproxy6-ngn.1und1.de - 212.227.124.68
stun.1und1.de - 212.227.67.34
stun.1und1.de - 212.227.67.33
sipbalance1-1.1und1.de - 212.227.67.131
sipbalance2-1.1und1.de - 212.227.67.132
sipbalance3-1.1und1.de - 212.227.67.133
sipbalance4-1.1und1.de - 212.227.67.134
sipbalance5-1.1und1.de - 212.227.67.135
sipbalance6-1.1und1.de - 212.227.67.136
sipbalance7-1.1und1.de - 212.227.67.137
sipbalance8-1.1und1.de - 212.227.67.138
sipbalance9-1.1und1.de - 212.227.67.139
sipbalance10-1.1und1.de - 212.227.67.140
sipbalance1-2.1und1.de - 212.227.67.201
sipbalance2-2.1und1.de - 212.227.67.202
sipbalance3-2.1und1.de - 212.227.67.203
sipbalance4-2.1und1.de - 212.227.67.204
sipbalance5-2.1und1.de - 212.227.67.205
sipbalance6-2.1und1.de - 212.227.67.206
sipbalance7-2.1und1.de - 212.227.67.197
sipbalance8-2.1und1.de - 212.227.67.198
sipbalance9-2.1und1.de - 212.227.67.199
sipbalance10-2.1und1.de - 212.227.67.200
sipbalance1-3.1und1.de - 212.227.18.131
sipbalance2-3.1und1.de - 212.227.18.132
sipbalance3-3.1und1.de - 212.227.18.133
sipbalance4-3.1und1.de - 212.227.18.134
sipbalance5-3.1und1.de - 212.227.18.135
sipbalance6-3.1und1.de - 212.227.18.136
sipbalance7-3.1und1.de - 212.227.18.137
sipbalance8-3.1und1.de - 212.227.18.138
sipbalance9-3.1und1.de - 212.227.18.139
sipbalance10-3.1und1.de - 212.227.18.140
sipbalance1-4.1und1.de - 212.227.18.201
sipbalance2-4.1und1.de - 212.227.18.202
sipbalance3-4.1und1.de - 212.227.18.203
sipbalance4-4.1und1.de - 212.227.18.204
sipbalance5-4.1und1.de - 212.227.18.205
sipbalance6-4.1und1.de - 212.227.18.206
sipbalance7-4.1und1.de - 212.227.18.197
sipbalance8-4.1und1.de - 212.227.18.198
sipbalance9-4.1und1.de - 212.227.18.199
sipbalance10-4.1und1.de - 212.227.18.200


Edit:
Wäre es doof, statt 40 IPs freizugeben einfach die 3 Klasse C Netze freizugeben?
Das wären dann 212.227.18.0/24, 212.227.67.0/24 und 212.227.124.0/24.
Natürlich weiß weder ich noch die opnSense die tatsächlichen Netzmasken, die 1und1 zugeteilt sind, aber um diese IPs als Destination "zusammenzufassen" wäre es doch imho egal, ob es wirklich 24er Netze sind. Die opnSense schaut nur, ob die entsprechende IP im durchzulassenden Netz ist und gut ?!? Und ich vermute jetzt einfach stark, dass all diese Blöcke zu 1und1 gehören.

Du könntest auch schlicht die Namen freigeben, die Sense übernimmt dann selbst den Lookup der IPs und das Eintragen in eine Tabelle oder Alias
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

"The most obvious optimization is to reduce the number of rules. If the list of addresses is large, the performance gain of one rule evaluation with one table lookup vs. one rule evaluation for each address is significant. As a rule of thumb, tables are cheaper when the list contains six or more addresses. For a list of 1,000 addresses, the difference will be factor of 1,000." [see http://www.undeadly.org/cgi?action=article&sid=20060927091645]

Es wird keinen großen Unterschied machen, ob die Liste jeden einzelnen Server enthält oder eine Liste von kürzeren Netzwerken. Die Rule wird größtenteils beim Aufbau der Verbindung aufgerufen, also eher alle 1x Minuten. Ich habe die Liste auf kürzere Netzwerksegmente herunter gebrochen:

rtpproxy1-ngn.1und1.de - 212.227.124.2/32
rtpproxy2-ngn.1und1.de - 212.227.124.3/32
rtpproxy5-ngn.1und1.de - 212.227.124.4/32

rtpproxy3-ngn.1und1.de - 212.227.124.66/32
rtpproxy4-ngn.1und1.de - 212.227.124.67/32
rtpproxy6-ngn.1und1.de - 212.227.124.68/32

stun.1und1.de - 212.227.67.34/32
stun.1und1.de - 212.227.67.33/32

sipbalanceX-1.1und1.de - 212.227.67.128/28
sipbalanceX-2.1und1.de - 212.227.67.192/28
sipbalanceX-3.1und1.de - 212.227.18.128/28
sipbalanceX-4.1und1.de - 212.227.18.192/28

Danke für das Tutorial.

Ich habe hier das ganze aus den angesprochenen Gründen und zur Reduktion der Probleme umgedreht: Die Fritzbox ist VDSL Modem mit SIP Gateway, die OPNSense ist dahinter. Das schnaggelt sehr gut und ich habe ein Gerät (das Modem) weniger. Auf der Fritzbox ist dann ein festes Routing eingestellt das einfach alles an die OPNSense weiterreicht. Der Knackpunkt ist das auf der Schnittstelle der OPNSense dann natürlich BOGON Networks und interne Netze erlaubt sein müssen. So kommt gar nicht erst Unfug an der OPNSense an.

Hallo,
danke für die Anleitung.
Bei mir funktioniert das leider nicht mit dem FAX!
Wenn ich das interne Fax anrufe höre ich nichts. Sprache geht.
Nur Fax leider nicht.
Bei dir läuft Fax? Hast du sonst noch iwas gemacht?

Hi, wie sind denn die Einstellungen wenn man VoIP von der Telekom hat?

Quote from: Mathias on November 26, 2017, 09:26:27 PM
Hi, wie sind denn die Einstellungen wenn man VoIP von der Telekom hat?
Versuch es mit den Ports 7078:7097 für Telefonie.


Mich hat es gestern auch erwischt.
Umgestellt auf OPNsense mit großer Freude. Bis wir irgendwann festgestellt haben, dass wir die Gegenseite beim Telefonieren nicht hören.

Bei mir ist es ein Telekom VoIP (Magenta).

Mich wundert, dass hier immer NAT-Regeln mit Port-Forwarding über die externe Schnittstelle durchgeführt werden. Der Telefonieserver baut doch keine Verbindung mit der FritzBox auf sondern umgekehrt.

Bei mir reichte das Anlegen von nur einer NAT-Outbound-Regel an erster Stelle:







InterfaceWAN
Source addressSingle host or Network
<IP-Adresse der FritzBox auf LAN1> / 32
Translation targetInterface address
Static portangehakt

Ich hatte noch eine DHCP-Reservierung für die IP-Adresse der FritzBox vorgenommen, da ja die FritzBox via DHCP auf LAN1 eine IP-Adresse zugewiesen bekommt. Und die könnte sich sonst bei einem Neustart der OPNsense ändern ... und somit würde meine NAT-Regel nicht mehr greifen.

Seitdem kann ich mit meinem Gegenüber auch wieder kommunizieren.


Quote from: gmu on February 17, 2018, 10:31:52 AM
Mich wundert, dass hier immer NAT-Regeln mit Port-Forwarding über die externe Schnittstelle durchgeführt werden. Der Telefonieserver baut doch keine Verbindung mit der FritzBox auf sondern umgekehrt.

Ich hatte das Problem des "Nichthörens" - also, RTP Pakete kamen nicht durch - auch bei eingehenden Gesprächen. Deshalb auch die SNAT Regel zusätzlich zum DNAT

Moin zusammen, ganz komisch, ich habe es nach der Anleitung gemacht - und ich konnte nur angerufen werden. Wenn ich es komplett OHNE Regeln/Nat mache (weder In- noch Outbound), dann klappt es einwandfrei. So ganz blicke ich da nicht durch. Wie habt ihr denn die Fritte eingestellt -> Internet über Router und IP über DHCP (beides also von der PFSense, soweit klar und nach AVM-Anleitung). Habt ihr sonst noch etwas gemacht? Kommt ihr dann über diese IP auf die FB? Ich schaffe das nämlich leider nicht, nicht mal über den Port 40643, auf dem die Fritzbox ja eigentlich "von außen" erreichbar wäre. Ich muss also immer direkt anstöpseln und mich über die Not-Ip mit der Fritz verbinden, um auf die Oberfläche zu kommen. Ich traue meinem Konstrukt noch nicht ganz, daher wäre ich über den ein oder anderen Tipp dankbar. Ach ja - meine OPNSense hängt hinter einem TC7200 Kabelmodem (das ich leider nicht auf Bridge umschalten kann, sondern dort habe ich die OPNSense in eine DMZ gestellt.
Viele Grüße