rogatec
Goto Top

ALL-IP Anschluss Telekom VoiP MikroTik mit VLAN Konfiguration

Hallo zusammen,

ich bin momentan etwas ratlos meine 2 Telefone zum Laufen zu bekommen.

Mein MikroTik Routerboard verbindet sich via PPPoE an eth1 zu meinem FTTH Anschluss der Telekom.

Via sfp1 habe ich meinen Netgear Switch angeschlossen.

Aktuell ist an g11 des Switches meine Dect Basisstation (Gigaset C430A GO) angeschlossen und in VLAN10 konfiguriert. (IP 10.0.1.12 via DHCP)

Die internen Netzwerkgeräte (z.B. Laptop) kommen auf die Basisstation und ich konnte dort auch erfolgreich meine Rufnummern mit der Telekom verbinden.

Am MikroTik habe ich die Service Ports (unter IP->Firewall) für sip deaktiviert (wobei egal ob aktiviert - geht dennoch nicht).

Nun habe ich eigentlich "nur" das Problem, dass weder ich den Anrufer höre, noch der Anrufer mich.

Eingehende Anrufe kommen an den Telefonen an und ich kann auch nach außen telefonieren (z.B. Handy).

Für die Sprachübergabe ist wohl das RTP Protokoll zuständig, nur habe ich mit Firewall Regeln keinen Erfolg gehabt.

Folgende Mangles habe ich eingerichtet:

Flags: X - disabled, I - invalid, D - dynamic 
 0    chain=forward action=accept protocol=tcp dst-address=10.0.1.12 dst-port=5060 log=yes 

 1    ;;; voip rtp
      chain=forward action=accept protocol=udp dst-address=10.0.1.12 src-port=3478 dst-port=5004-5020 log=yes

Im Log File erhalte ich beim Anrufen folgenden Eintrag:
forward: in:Telekom out:vlan10, src-mac 84:b2:61:7f:bb:51, proto UDP, 217.0.0.143:3478->10.0.1.12:5008, NAT 217.0.0.143:3478->(84.158.172.28:5008->10.0.1.12:5008), prio 6->0, len 84

In der Dect Station ist der SIP Port 5060, RTP auf 5004 - 5020 eingestellt. STUN Server ist bei den Telefonie Einstellungen aktiv mit stun.t-online.de Port 3478

Ich bin ehrlich gesagt etwas ratlos - ist das Problem evtl. dass ich die Basistation nicht direkt am Router eingestöpselt habe, sondern über den Switch mit VLAN tagging gehe?

Vielen Dank für mögliche Hinweise zur Lösung

Content-ID: 337516

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

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

132895
Lösung 132895 12.05.2017 aktualisiert um 08:36:54 Uhr
Goto Top
Heyho.
Also,
erstens sind Mangle-Rules hier absolut fehl am Platz. Zweitens benötigst du auf deiner Firewall nur eine Established,Related Regel für FORWARD und INPUT und die SIP-Leitung 5060TCP mit DSTNAT auf die DECT Station.
Der Sinn und Zweck von STUN ist es ja gerade das du auf der Firewall keine explizite Freigabe der RTP (UDP) Pakete benötigst, denn das erledigt das STUN indem es mit ausgehenden Paketen diese benötigten Ports quasi von innen her öffnet, woraufhin die RELATED,ESTABLISHED Regel anspringt und die Pakete auf diesen Ports reinlässt.
Drittens die IP für die DECT ist per DHCP zugewiesen? Dann stelle bitte sicher das du eine MAC-Reservation für die DECT eingerichtet hast sonst würde die Portweiterleitung irgendwann ins Leere laufen.

Das VLAN hat hier damit nichts zu tun.

Aber eine exportierte Mikrotik Config ist hier wie immer sehr willkommen.

Gruß
rogatec
rogatec 12.05.2017 um 14:41:10 Uhr
Goto Top
Hallo und danke für deinen hilfreichen Input.

Der Einfachheit habe ich nun ein VLAN50 angelegt, in dem nur die DECT Station ist mit der IP 10.0.5.2

Anhand Deiner Ausführung habe ich das nun so angelegt

 9    ;;; VoIP
      chain=forward action=accept connection-state=established,related connection-nat-state=dstnat protocol=tcp dst-address=10.0.5.2 port=5060-5061 log=no log-prefix=""   

10    chain=input action=accept connection-state=established,related connection-nat-state=dstnat protocol=tcp dst-address=10.0.5.2 port=5060-5061 log=no log-prefix=""  

Das hat auch für genau einen Anruf sogar funktioniert - danach aber wieder das Problem, dass kein Ton übertragen wird.

Anbei ein /export der MikroTik config

[admin@MikroTik] > /export
# may/12/2017 14:37:29 by RouterOS 6.39.1
# software id = 7RU5-9GD9
#
/interface bridge
add fast-forward=no name=bridge2
/interface ethernet
set [ find default-name=ether2 ] disabled=yes
set [ find default-name=ether3 ] disabled=yes
set [ find default-name=ether4 ] disabled=yes
set [ find default-name=ether5 ] disabled=yes
set [ find default-name=ether6 ] disabled=yes
set [ find default-name=ether7 ] disabled=yes
set [ find default-name=ether8 ] disabled=yes
set [ find default-name=ether9 ] disabled=yes
set [ find default-name=ether10 ] disabled=yes
/interface vlan
add interface=ether1 name=vlan7 vlan-id=7
add interface=sfp1 name=vlan10 vlan-id=10
add interface=sfp1 name=vlan20 vlan-id=20
add interface=sfp1 name=vlan30 vlan-id=30
add interface=sfp1 name=vlan40 vlan-id=40
add interface=sfp1 name=vlan50 vlan-id=50
/interface pppoe-client
add add-default-route=yes disabled=no interface=vlan7 name=Telekom password=******** use-peer-dns=yes user=********@t-online.de
/interface ethernet switch port
set 6 default-vlan-id=0
set 7 default-vlan-id=0
set 8 default-vlan-id=0
set 9 default-vlan-id=0
set 10 default-vlan-id=0
set 12 default-vlan-id=0
/ip pool
add name=pool10 ranges=10.0.1.2-10.0.1.45
add name=pool20 ranges=10.0.2.2-10.0.2.5
add name=pool30 ranges=10.0.3.2-10.0.3.10
add name=pool40 ranges=10.0.4.2-10.0.4.10
add name=pool50 ranges=10.0.5.2
/ip dhcp-server
add address-pool=pool10 authoritative=after-2sec-delay disabled=no interface=vlan10 name=server10
add address-pool=pool20 authoritative=after-2sec-delay disabled=no interface=vlan20 name=server20
add address-pool=pool30 authoritative=after-2sec-delay disabled=no interface=vlan30 name=server30
add address-pool=pool40 authoritative=after-2sec-delay disabled=no interface=vlan40 name=server40
add address-pool=pool50 authoritative=after-2sec-delay disabled=no interface=vlan50 name=server50
/interface bridge port
add bridge=bridge2 interface=ether2
add bridge=bridge2 interface=ether3
add bridge=bridge2 interface=ether4
add bridge=bridge2 interface=ether5
add bridge=bridge2 interface=ether6
add bridge=bridge2 interface=ether7
add bridge=bridge2 interface=ether8
add bridge=bridge2 interface=ether9
add bridge=bridge2 interface=ether10
add bridge=bridge2 interface=sfp1
/interface l2tp-server server
set caller-id-type=ip-address
/ip address
add address=10.0.0.1/24 interface=ether2 network=10.0.0.0
add address=10.0.1.1/24 interface=vlan10 network=10.0.1.0
add address=10.0.2.1/24 interface=vlan20 network=10.0.2.0
add address=10.0.3.1/24 interface=vlan30 network=10.0.3.0
add address=10.0.4.1/24 interface=vlan40 network=10.0.4.0
add address=10.0.5.1/24 interface=vlan50 network=10.0.5.0
/ip dhcp-server network
add address=10.0.0.0/24 domain=itec.intern gateway=10.0.0.1
add address=10.0.1.0/24 domain=itec10.intern gateway=10.0.1.1
add address=10.0.2.0/24 domain=itec20.intern gateway=10.0.2.1
add address=10.0.3.0/24 domain=itec30.intern gateway=10.0.3.1
add address=10.0.4.0/24 domain=itec40.intern gateway=10.0.4.1
add address=10.0.5.0/24 domain=itec50.intern gateway=10.0.5.1
/ip firewall filter
add action=drop chain=input comment="drop ssh brute forcers" dst-port=22 protocol=tcp src-address-list=ssh_blacklist  
add action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10h chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=10m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=10m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=10m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=""  
add action=drop chain=forward comment="nas saving" in-interface=vlan30 out-interface=vlan20  
add action=drop chain=forward in-interface=vlan40 out-interface=vlan20
add action=drop chain=forward in-interface=vlan20 out-interface=vlan30
add action=drop chain=forward in-interface=vlan20 out-interface=vlan40
add action=accept chain=forward comment=VoIP connection-nat-state=dstnat connection-state=established,related dst-address=10.0.5.2 port=5060-5061 protocol=tcp
add action=accept chain=input connection-nat-state=dstnat connection-state=established,related dst-address=10.0.5.2 port=5060-5061 protocol=tcp
/ip firewall nat
add action=masquerade chain=srcnat out-interface=Telekom
/ip firewall service-port
set ftp disabled=yes
set sip disabled=yes
/ip service
set telnet disabled=yes
set ftp disabled=yes
/lcd
set default-screen=stats time-interval=hour
/system clock
set time-zone-name=Europe/Berlin
/system logging
add topics=telephony
/tool sniffer
set filter-ip-address=10.0.5.2/32
[admin@MikroTik] > 
132895
Lösung 132895 12.05.2017 aktualisiert um 14:50:29 Uhr
Goto Top
Die Regeln sind nicht richtig.

Sie sollten eher algemeiner so lauten denn sie müssen ja auch für die RTP(UDP) Packets gelten!:
 /ip firewall filter add chain=forward action=accept connection-state=established,related 
Denn das dstnat und die Ports schränken diese zu sehr ein.
rogatec
rogatec 12.05.2017 um 15:07:35 Uhr
Goto Top
so erhalte ich kein Freizeichen mehr wenn ich anrufe - und Ton wird beim Gespräch weiterhin nicht übertragen.
132895
132895 12.05.2017 aktualisiert um 15:38:41 Uhr
Goto Top
Tja, kein Wunder denn in deiner obigen Config fehlt die eingehende DSTNAT Regel für 5060-5061, die Related regeln sind immer separat zu betrachten (Stichwort: Statefull Firewall und müssen ganz oben stehen, First Match Wins!), du hast anscheinend keine Plan was die Regeln bedeuten oder??
Habe das hier ja am laufen, sonst würde ich das hier nicht erzählen face-wink

Viel Erfolg und schönes WE.
rogatec
rogatec 12.05.2017 um 17:25:31 Uhr
Goto Top
Ich vermute ganz stark: nicht so viel Plan wie Du, wenn es bei dir läuft ;)

So verstehe ich das:
input-chain = Pakete die von meinem eth1 (WAN) an den Router gesendet wurden mit einer Ziel-IP in meinem Router Netzwerk
forward-chain = Pakete, die innerhalb meines Routers verarbeitet werden

 /ip firewall filter add chain=forward action=accept connection-state=established,related 
Diese Regel besagt doch, dass alle Pakete (innerhalb des Routers) akzeptiert werden, die bereits "positiv" von der Firewall geprüft wurden (Ziel-Adresse + Port gefunden)?

Du schreibst mir fehlt die Eingehende DSTNAT Regel. Das interpretiere ich so:
/ip firewall filter add chain=input action=accept connection-nat-state=dstnat port=5060-5061 protocol=tcp

Damit brauch ich aber auch eine NAT Regel, die mir die übergebenen Daten an meine DECT Station weiterleitet.
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.5.2 to-ports=5060-5061 protoctol=tcp dst-port=5060-5061

Da es noch nicht funktioniert, nehme ich an, dass ich hier weiterhin aufm Schlauch stehe, oder noch was vergessen habe ;-(
132895
Lösung 132895 12.05.2017 aktualisiert um 21:11:51 Uhr
Goto Top
Zitat von @rogatec:
So verstehe ich das:
input-chain = Pakete die von meinem eth1 (WAN) an den Router gesendet wurden mit einer Ziel-IP in meinem Router Netzwerk
Nein INPUT sind Pakete die direkt an den Router selbst gerichtet sind.

forward-chain = Pakete, die innerhalb meines Routers verarbeitet werden
Nein. In der FORWARD Chain passieren Pakete die durchgeleitet werden. Egal ob von intern nach extern oder von VLANx zu VLANy.

 /ip firewall filter add chain=forward action=accept connection-state=established,related 
Diese Regel besagt doch, dass alle Pakete (innerhalb des Routers) akzeptiert werden, die bereits "positiv" von der Firewall geprüft wurden (Ziel-Adresse + Port gefunden)?
Erneut Stichwort Statefull Firewall
Der Router führt eine Connection-State Tabelle in der er alle Verbindungen von Hosts mit Quelladresse/Port und Zieladresse/Port aufführt. Sobald ein Host eine Verbindung mit einem anderen Host erfolgreich herstellt ist die Verbindung in beide Richtungen freigegeben. Die Einträge haben ein Timeout bei Leerlauf.

Du schreibst mir fehlt die Eingehende DSTNAT Regel. Das interpretiere ich so:
/ip firewall filter add chain=input action=accept connection-nat-state=dstnat port=5060-5061 protocol=tcp
Die ist unnötig da durch den DST-NAT Prozess die Zieladresse schon im PREROUTING umgeschrieben wird, s.u.
Damit brauch ich aber auch eine NAT Regel, die mir die übergebenen Daten an meine DECT Station weiterleitet.
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.0.5.2 to-ports=5060-5061 protoctol=tcp dst-port=5060-5061
Richtig , (aber die Adresse wo der Traffic aufläuft hast du darin vergessen, s. https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/NAT#Forward_all_traffi ... denn du willst ja nur vom WAN NATen)denn der NAT-Prozess wird im PREROUTING durchgeführt und bekommt dort die neue Ziel-Adresse der DECT Station, von dort aus kommt er direkt in die FORWARD-Chain weil die Zieladresse ja nicht mehr die des Routers ist! Deswegen ist es wichtig wenn du die FORWARD-Chain am Ende mit einer generellen BLOCK-Rule blockst du ebenfalls noch eine explizite Regel für die FORWARD Chain benötigst die Traffic an die DECT zulässt.

Da es noch nicht funktioniert, nehme ich an, dass ich hier weiterhin aufm Schlauch stehe, oder noch was vergessen habe ;-(

Am besten du schaust dir mal die Grafik für den Packetflow des Mikrotik an, die ist bei den meisten Firewalls sehr ähnlich, diese ist essentiell zum verstehen der Firewall-Regeln.
https://wiki.mikrotik.com/wiki/Manual:Packet_Flow
rogatec
rogatec 13.05.2017 um 01:40:55 Uhr
Goto Top
So als gute Nacht-Nachricht:

Ich habe nun meinem eth1-Port eine statische IP gegeben, analog wie beim MikroTik Wiki
/ip address add address=10.1.1.1/24 interface=eth1
Da hatte ich vorhin statt dem eth1 das "Telekom"-Interface drin (PPPoE)

In den Firewall Regeln in folgender Reihenfolge:
chain=input action=drop connection-state=invalid
chain=input action=accept connection-state=established,related
chain=input action=drop

Die NAT Regeln:
chain=srcnat action=masquerade out-interface=Telekom
chain=dstnat action=dst-nat to-addresses=10.2.2.2 to-ports=5060-5061 protocol=tcp dst-address=10.1.1.1 dst-port=5060-5061

So funktioniert es, zumindest mit mehreren Anrufversuchen in unterschiedliche Richtungen.

Verständnisfrage: Warum ist hier die letzte drop Regel zwingend? Ich hatte die testweise deaktiviert - dann erhalte ich aber wieder keinen Ton.
Jene Drop-Regel wird auch relativ schnell größer (2MB nach ca. 5min) - ich vermute aber mal, da mein ganzes Netzwerk ins Internet kommt und ich bisher auch keine Fehlermeldungen erhalten habe, dass dies zumindest nichts schlechtes bedeutet.

Bis hierhin schonmal danke schön
132895
Lösung 132895 13.05.2017 aktualisiert um 08:29:12 Uhr
Goto Top
Dir fehlt die Forward-Related Regel noch. Aber mit den Regeln kommen die Clients nicht mehr ins Internet falls du den DNS-Proxy des Mikrotik verwendest dann bräuchtest du noch Port 53UDP/TCP im Input.
Denke immer daran beim Mikrotik musst du selbst an alles denken face-wink.

Verständnisfrage: Warum ist hier die letzte drop Regel zwingend?
Nun, weil der Mikrotik per Default alles rein lässt also die Default-Regel im Gegensatz zu anderen Firewalls ACCEPT ist. Lässt du die Regel weg hast du quasi einen offenen Router der mit dem nackten Arsch im Internet hängt und bei dem er jedes Paket aus dem Internet akzeptiert!
So also z.B. jeder Depp per SSH oder Webinterface auf deinen Router kommt. Da ist es nur eine Frage der Zeit bis Zombies deinen Router übernehmen! Deswegen siehst du dort auch den Zähler sehr schnell ansteigen, das ist das Hintergrundrauschen des Web's, und alles was an den Router gerichtet war und verworfen wurde.

Bis hierhin schonmal danke schön
Immer gerne.

Schönes WE
rogatec
rogatec 13.05.2017 um 11:09:19 Uhr
Goto Top
Dir fehlt die Forward-Related Regel noch. Aber mit den Regeln kommen die Clients nicht mehr ins Internet falls du den DNS-Proxy des Mikrotik verwendest dann bräuchtest du noch Port 53UDP/TCP im Input.
Denke immer daran beim Mikrotik musst du selbst an alles denken face-wink.

Also bisher nutze ich "use peer DNS" bei meinem PPPoE Interface, dann werden unter /ip dns die DNS Server vom Telekom Verteiler(?) automatisch als "Dynamic Servers" angezeigt.

Die input-chain mit udp & Port 53 habe ich auch mal angelegt - die Filter sehen dann folgendermaßen aus
 0    ;;; drop invalid connections
      chain=input action=drop connection-state=invalid log=no log-prefix="drop_invalid"   

 1    ;;; accept established & related
      chain=input action=accept connection-state=established,related connection-nat-state="" log=no log-prefix=""   

 2    ;;; lan -> dns
      chain=input action=accept protocol=udp in-interface=Telekom dst-port=53 log=no log-prefix=""   

 3    ;;; Drop Input
      chain=input action=drop log=no log-prefix=""   

 4    chain=forward action=drop connection-state=invalid log=no log-prefix=""   

 5    chain=forward action=accept connection-state=established,related log=no log-prefix=""   

Wenn ich den MikroTik als DNS Server verwenden will, habe ich mir die Anleitung vom Wiki angeschaut
DNS Proxy (Cache) Setup
Mich irritiert hier nur das Beispiel, dass hier ein DNS Server angelegt wird mit der mikrotik.com IP - sollte der Server nicht eine von mir ausgewählte Adresse sein?
Die DNS Servers die ich angebe, sollten dann doch normalerweise in meinem DHCP Server Network Setup auch für meine VLAN-Adressen als DNS Servers hinterlegt werden?

Ich vermute, dass mir trotz der input-chain von Port 53 noch eine Regel fehlt, denn so schliesse ich alle Geräte hinterm Netzwerk aus



Schönes WE
Ebenfalls!
132895
Lösung 132895 13.05.2017 aktualisiert um 12:09:57 Uhr
Goto Top
Zitat von @rogatec:
Also bisher nutze ich "use peer DNS" bei meinem PPPoE Interface, dann werden unter /ip dns die DNS Server vom Telekom Verteiler(?) automatisch als "Dynamic Servers" angezeigt.
Schon klar aber das meinte ich nicht, deine Clients müssen ja einen DNS-Server zugewiesen bekommen. D.h. du aktivierst den DNS-Proxy am Mikrotik und gibst in den DHCP-Server-Settings die jeweilige IP des Mikrotik in dem jeweiligen Subnetz an!
Die input-chain mit udp & Port 53 habe ich auch mal angelegt - die Filter sehen dann folgendermaßen aus

2 ;;; lan -> dns
chain=input action=accept protocol=udp in-interface=Telekom dst-port=53 log=no log-prefix=""

Die Regel ist natürlich Blödsinn denn deine Clients sollen den Mikrotik fragen nicht die Telekom deinen Mikrotik face-smile.

Wenn ich den MikroTik als DNS Server verwenden will, habe ich mir die Anleitung vom Wiki angeschaut
DNS Proxy (Cache) Setup
Mich irritiert hier nur das Beispiel, dass hier ein DNS Server angelegt wird mit der mikrotik.com IP - sollte der Server nicht eine von mir ausgewählte Adresse sein?
Die DNS Servers die ich angebe, sollten dann doch normalerweise in meinem DHCP Server Network Setup auch für meine VLAN-Adressen als DNS Servers hinterlegt werden?
Du brauchst nur unter /ip dns "Allow Remote Requests" anticken. Als Forwarder Adressen bekommt der MK die DNS-Server der Telekom.

Ich vermute, dass mir trotz der input-chain von Port 53 noch eine Regel fehlt, denn so schliesse ich alle Geräte hinterm Netzwerk aus
s.o. deine Regel ist falsch, die Regeln sollte so aussehen
/ip firewall filter
add chain=input action=accept protocol=udp in-interface=!Telekom dst-port=53 
add chain=input action=accept protocol=tcp in-interface=!Telekom dst-port=53 
Statt den Interfaces kannst du auch mit Adresslisten arbeiten und nur alle internen Subnetze freischalten.
DNS ist aber immer UDP und TCP.
Netzwerkgrundlagen ...