twiceface
Goto Top

VoIP über Mikrotik NAT. Klingeln JA, Gespräch NEIN?!

Guten Morgen,

ich verzweifle gerade ein wenig an SIP Telefonen welche über einen NAT Router gehen sollen. Die telefone können sich anrufen und klingeln, ein Gespräch findet jedoch nicht statt.
Ich habe 8 WAN Anschlüsse über LoadBalance "zusammengefasst" und in den Datennetzen klappt alles super. Nur Voice eben nicht...

Folgende Einstellungen sind am Router (Mikrotik) vorgenommen...

/interface 
set "ether1" name="DATEN" mtu=1372   
set "ether2" name="VOICE" mtu=1372   
set "ether3" name="FB8" mtu=1372   
set "ether4" name="FB7" mtu=1372   
set "ether5" name="FB6" mtu=1372   
set "ether6" name="FB1" mtu=1372   
set "ether7" name="FB2" mtu=1372   
set "ether8" name="FB3" mtu=1372   
set "ether9" name="FB4" mtu=1372   
set "ether10" name="FB5" mtu=1372   
set "sfp1" name="LWL-UPLINK"  

/interface vlan
add name=VLANDATEN vlan-id=30 interface=DATEN 
add name=VLANVOICE vlan-id=31 interface=VOICE 
add name=VLANXXX vlan-id=32 interface=DATEN 
add name=VLANROT vlan-id=33 interface=DATEN 
add name=VLANMANAGEMENT vlan-id=10 interface=DATEN 

/ip address
add address=192.168.30.1/24 network=192.168.30.0 broadcast=192.168.30.255 interface=VLANDATEN
add address=192.168.31.1/24 network=192.168.31.0 broadcast=192.168.31.255 interface=VLANVOICE
add address=192.168.10.1/24 network=192.168.10.0 broadcast=192.168.10.255 interface=VLANMANAGEMENT
add address=192.168.2.2/26 network=192.168.2.0 broadcast=192.168.2.255 interface=FB1
add address=192.168.3.2/26 network=192.168.3.0 broadcast=192.168.3.255 interface=FB2
add address=192.168.4.2/26 network=192.168.4.0 broadcast=192.168.4.255 interface=FB3
add address=192.168.5.2/26 network=192.168.5.0 broadcast=192.168.5.255 interface=FB4
add address=192.168.6.2/26 network=192.168.6.0 broadcast=192.168.6.255 interface=FB5
add address=192.168.7.2/26 network=192.168.7.0 broadcast=192.168.7.255 interface=FB6
add address=192.168.8.2/26 network=192.168.8.0 broadcast=192.168.8.255 interface=FB7
add address=192.168.9.2/26 network=192.168.9.0 broadcast=192.168.9.255 interface=FB8
 
/interface
list add name=VLANEXTERN
list add name=VLANINTERN
list member add interface=VLANDATEN list=VLANEXTERN
list member add interface=VLANVOICE list=VLANEXTERN
list member add interface=VLANXXX list=VLANEXTERN
list member add interface=VLANROT list=VLANEXTERN
list member add interface=VLANMANAGEMENT list=VLANINTERN

/ip firewall mangle
add chain=input in-interface=FB1 action=mark-connection new-connection-mark=FB1_conn
add chain=input in-interface=FB2 action=mark-connection new-connection-mark=FB2_conn
add chain=input in-interface=FB3 action=mark-connection new-connection-mark=FB3_conn
add chain=input in-interface=FB4 action=mark-connection new-connection-mark=FB4_conn
add chain=input in-interface=FB5 action=mark-connection new-connection-mark=FB5_conn
add chain=input in-interface=FB6 action=mark-connection new-connection-mark=FB6_conn
add chain=input in-interface=FB7 action=mark-connection new-connection-mark=FB7_conn
add chain=input in-interface=FB8 action=mark-connection new-connection-mark=FB8_conn
 
add chain=output connection-mark=FB1_conn action=mark-routing new-routing-mark=to_FB1
add chain=output connection-mark=FB2_conn action=mark-routing new-routing-mark=to_FB2
add chain=output connection-mark=FB3_conn action=mark-routing new-routing-mark=to_FB3
add chain=output connection-mark=FB4_conn action=mark-routing new-routing-mark=to_FB4
add chain=output connection-mark=FB5_conn action=mark-routing new-routing-mark=to_FB5
add chain=output connection-mark=FB6_conn action=mark-routing new-routing-mark=to_FB6
add chain=output connection-mark=FB7_conn action=mark-routing new-routing-mark=to_FB7
add chain=output connection-mark=FB8_conn action=mark-routing new-routing-mark=to_FB8
 
add chain=prerouting dst-address=192.168.2.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.3.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.4.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.5.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.6.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.7.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.8.0/26 action=accept in-interface-list=VLANEXTERN
add chain=prerouting dst-address=192.168.9.0/26 action=accept in-interface-list=VLANEXTERN
 
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/0 action=mark-connection new-connection-mark=FB1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/1 action=mark-connection new-connection-mark=FB2_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/2 action=mark-connection new-connection-mark=FB3_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/3 action=mark-connection new-connection-mark=FB4_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/4 action=mark-connection new-connection-mark=FB5_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/5 action=mark-connection new-connection-mark=FB6_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/6 action=mark-connection new-connection-mark=FB7_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface-list=VLANEXTERN per-connection-classifier=both-addresses-and-ports:8/7 action=mark-connection new-connection-mark=FB8_conn passthrough=yes

add chain=prerouting connection-mark=FB1_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB1
add chain=prerouting connection-mark=FB2_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB2
add chain=prerouting connection-mark=FB3_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB3
add chain=prerouting connection-mark=FB4_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB4
add chain=prerouting connection-mark=FB5_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB5
add chain=prerouting connection-mark=FB6_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB6
add chain=prerouting connection-mark=FB7_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB7
add chain=prerouting connection-mark=FB8_conn in-interface-list=VLANEXTERN action=mark-routing new-routing-mark=to_FB8
 
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_FB1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.3.1 routing-mark=to_FB2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.4.1 routing-mark=to_FB3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.5.1 routing-mark=to_FB4 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.6.1 routing-mark=to_FB5 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.7.1 routing-mark=to_FB6 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.8.1 routing-mark=to_FB7 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.9.1 routing-mark=to_FB8 check-gateway=ping
 
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.3.1 distance=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.4.1 distance=3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.5.1 distance=4 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.6.1 distance=5 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.7.1 distance=6 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.8.1 distance=7 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.9.1 distance=8 check-gateway=ping
 
/ip firewall nat
add chain=srcnat out-interface=FB1 action=masquerade
add chain=srcnat out-interface=FB2 action=masquerade
add chain=srcnat out-interface=FB3 action=masquerade
add chain=srcnat out-interface=FB4 action=masquerade
add chain=srcnat out-interface=FB5 action=masquerade
add chain=srcnat out-interface=FB6 action=masquerade
add chain=srcnat out-interface=FB7 action=masquerade
add chain=srcnat out-interface=FB8 action=masquerade

/ip pool add name=DHCP-DATEN ranges=192.168.30.50-192.168.30.200 
/ip dhcp-server network add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1
/ip dhcp-server add interface=VLANDATEN address-pool=DHCP-DATEN name=DHCP-DATEN disabled=no lease-time=72h 

/ip pool add name=DHCP-VOICE ranges=192.168.31.10-192.168.31.100
/ip dhcp-server network add address=192.168.31.0/24 gateway=192.168.31.1 dns-server=192.168.31.1
/ip dhcp-server add interface=VLANVOICE address-pool=DHCP-VOICE name=DHCP-VOICE disabled=no lease-time=72h 

/ip dhcp-server option add code=150 name=tftp1 value="'192.168.61.2'"  
/ip dhcp-server network set dhcp-option=tftp1 numbers=1


/ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=5000KiB max-udp-packet-size=512 servers=159.34.141.12

/ip service disable telnet

/system identity 
set name=MultiWAN

Die Telefone beziehen ihre Config vom Callmanager via TFTP und registrieren sich sauber.
Mir ist bewusst das SIP über NAT scheinbar Probleme birgt, nur verstehe ich nicht so recht warum jetzt nachdem alles so gut funktioniert kein Gespräch zustande kommt. Der Callmanager steht nicht in meinem Netz (muss er ja auch nicht).

Sieht jemand einen Fehler?

Danke für die Aufmerksamkeit.
MfG
Twice

Content-Key: 332869

Url: https://administrator.de/contentid/332869

Printed on: April 25, 2024 at 10:04 o'clock

Mitglied: 132692
132692 Mar 22, 2017 updated at 07:42:49 (UTC)
Goto Top
Moin,
mach dir einfach mal klar was bei SIP passiert.
Rufaufbau und Signalisierung geschieht über Port 5060 zwischen Client und Gegenstelle. Die Gesprächsdaten jedoch laufen auf einem separaten UDP Kanal auf dem die Daten per (S)RTP übertragen werden. Dieser Kanal ist unabhängig zur oben genannten SIP-Kommunikation, die Firewall macht also ohne weitere Maßnahmen für die Gesprächsdaten dicht, da keine Kommunikation von Innen dafür aufgebaut wurde!
Deswegen musst du entweder STUN einsetzen, also einen STUN-Server angeben über welchen die nötigen UDP-Ports quasi durch den Aufbau der Verbindung von innen geöffnet werden oder den nötigen UDP-Portrange ans Telefon/SIP-GW weiterleiten, damit die RTP-Pakete die Firewall passieren können!
So einfach ist das face-wink

Gruß p.
Member: aqui
aqui Mar 22, 2017 at 07:53:26 (UTC)
Goto Top
Dazu kommt noch das die UDP (S)RTP Verbindungen dynamische Ports nutzen. Da ist es dann vollkommen klar das die an einer starren NAT Verbindung hängen bleiben und geblockt werden wenn der NAT Router keine Application Gateway Funktion für SIP und RTP hat.
Das einfachste ist dann in der Tat einen STUN Server zu nutzen. Damit können die Voice Daten dann ohne große Frickelei die NAT Firewall passieren.
Ansonsten musst du in der Firewall eine größere Port Range freigeben für RTP. Das fixt das Problem ebenso geht aber zu Lasten der Sicherheit.
Die weiterführenden Links hier im Firewall Tutorial haben weitere Infos dazu:
Preiswerte, VPN fähige Firewall im Eigenbau oder als Fertiggerät
Kapitel: "VoIP bzw. Telefonie mit FritzBox oder Anlage hinter pfSense Firewall:"
Member: twiceface
twiceface Mar 22, 2017 at 10:41:32 (UTC)
Goto Top
Danke vielmals für die Infos.
Ein STUN Server wird wohl nicht in Frage kommen.

"NAT Router keine Application Gateway Funktion für SIP und RTP hat."
Doch hat er... Nennt sich SIP Helper... wird aber in vielen Fällen wie ich gelesen habe abgeschaltet.


Folgende Port Ranges habe ich jetzt herausgelesen:

/ip firewall nat add chain=dstnat protocol=udp dst-port=5060 action=dst-nat to-addresses=XXX.XXX.XXX.XXX to-ports=5060
/ip firewall nat add chain=dstnat protocol=udp dst-port=5061 action=dst-nat to-addresses=XXX.XXX.XXX.XXX to-ports=5061
/ip firewall nat add chain=dstnat protocol=udp dst-port=7077-7110 action=dst-nat to-addresses=XXX.XXX.XXX.XXX to-ports=7077-7110
/ip firewall nat add chain=dstnat protocol=udp dst-port=10000-20000 action=dst-nat to-addresses=XXX.XXX.XXX.XXX to-ports=10000-20000

statt XXX.XXX.XXX.XXX sollte hier mein Voice Netz angegeben werden, oder irre ich? Gelesen habe ich hier die unterschielichsten Einträge (SIP Server, Endgerätenetz...)
Mitglied: 132692
132692 Mar 22, 2017 updated at 10:55:15 (UTC)
Goto Top
statt XXX.XXX.XXX.XXX sollte hier mein Voice Netz angegeben werden, oder irre ich?
Wenn es ein einzelnes Gerät ist die IP des Geräts, ansonsten natürlich die interne IP des VoIP-Gateways der Geräte.
in STUN Server wird wohl nicht in Frage kommen
Verstehe ich den Grund nicht? So gut wie jeder VoIP-Abieter stellt so einen zur Verfügung. IP im Telefon angeben fertig.
Du selber musst hier keinen Server betreiben, falls du das falsch verstanden hast.
Member: aqui
aqui Mar 22, 2017 updated at 10:54:27 (UTC)
Goto Top
Ein STUN Server wird wohl nicht in Frage kommen.
Warum nicht ?
Jeder VoIP Provider betreibt auch logischerweise einen STUN Server wie z.B. die Telekom mit stun.t-online.de oder SIPgate mit stun.sipgate.net usw. usw.
https://teamhelp.sipgate.de/hc/de/articles/203643481-Allgemeine-Konfigur ...
STUN zu aktivieren erspart ne Menge grauer Haare beim Anpassen der NAT Firewall. Warum sollte sowas Sinnvolles bei dir nicht in Frage kommen ?
Natürlich klappt es aber auch auf die harte Tour mit den Port Ranges face-wink Wireshark ist hier wie immer dein bester Freund !
Member: twiceface
twiceface Mar 22, 2017 at 12:56:22 (UTC)
Goto Top
Der STUN Server mag natürlich sinnvoll sein, jedoch kann ich keinen externen nehmen und ob es firmenintern einen gibt, ist nicht herauszufinden weil die betreffenden Personen nicht da sind.

Deshalb möchte ich dies jetzt erst einmal testhalber mit den Portranges machen um zu wissen ob es überhaupt geht.

Ich habe folgende Ports nun bei NAT eingetragen:

/ip firewall nat add chain=dstnat protocol=udp dst-port=5060 action=dst-nat to-addresses=192.168.31.1 to-ports=5060
/ip firewall nat add chain=dstnat protocol=udp dst-port=5061 action=dst-nat to-addresses=192.168.31.1 to-ports=5061
/ip firewall nat add chain=dstnat protocol=udp dst-port=7077-7110 action=dst-nat to-addresses=192.168.31.1 to-ports=7077-7110
/ip firewall nat add chain=dstnat protocol=udp dst-port=16376-32767 action=dst-nat to-addresses=192.168.31.1 to-ports=16376-32767
/ip firewall nat add chain=dstnat protocol=tcp dst-port=1720 action=dst-nat to-addresses=192.168.31.1 to-ports=1720
/ip firewall nat add chain=dstnat protocol=tcp dst-port=2748 action=dst-nat to-addresses=192.168.31.1 to-ports=2748

Mir sind das zu viele.

Muss ich diese jetzt noch in die Filter Rules der Firewall eintragen?
Weil mein Telefon immer noch nicht "Sprechen" kann... Klingeln geht nach wie vor.
Mitglied: 132692
132692 Mar 22, 2017 updated at 14:08:32 (UTC)
Goto Top
Zitat von @twiceface:

Der STUN Server mag natürlich sinnvoll sein, jedoch kann ich keinen externen nehmen und ob es firmenintern einen gibt, ist nicht herauszufinden
Intern wäre ja Blödsinn, du verstehst den Zweck eines STUN offensichtlich nicht face-confused

weil die betreffenden Personen nicht da sind.
Und dann futelst du an der Firewall rum?
Deshalb möchte ich dies jetzt erst einmal testhalber mit den Portranges machen um zu wissen ob es überhaupt geht.

Ich habe folgende Ports nun bei NAT eingetragen:
Ob das die richtigen Ports für euer Gateway oder die Telefone sind hast du geprüft?

Mir sind das zu viele.
Das ist eben der Nachteil ohne STUN ...
Muss ich diese jetzt noch in die Filter Rules der Firewall eintragen?
Nein. DST-NAT wird im prerouting verarbeitet, außer du hast ein generellen Block in der FORWARD-Chain, dann ja.
Weil mein Telefon immer noch nicht "Sprechen" kann... Klingeln geht nach wie vor.
SIP-Helper deaktivieren und DIRECT-MEDIA Haken rausnehmen.

Und wie immer Wireshark nehmen oder am Mikrotik Traffic aufzeichnen zeigt dir direkt wo es hakt!
Das man das hier immer noch jedes mal vorbeten muss ist echt grausig.
Member: aqui
aqui Mar 22, 2017 updated at 14:00:09 (UTC)
Goto Top
jedoch kann ich keinen externen nehmen und ob es firmenintern einen gibt, ist nicht herauszufinden
Die Art und Weise der Antwort lässt eher darauf schliessen das der TO nicht wirklich weiss wovon er spricht...aber nundenn. Zum Thema STUN Server beim Provider ist ja jetzt alles gesagt.
Weil mein Telefon immer noch nicht "Sprechen" kann... Klingeln geht nach wie vor.
Nimm einen Wireshark und checke welche RTP Ranges die Telefone öffnen !! Das führt dich doch sofort zum Ziel.
Ausserdem sagen das auch die Dokus der Telefone und vermutlich ist es auch in der Anlageneinstellung vorgegeben.