deadrabbit
Goto Top

Mikrotik Wireguard VPN

Hallo,

wie hier schon angedeutet, komme ich nicht auf meinen Server via WireGuard.

Grundsätzliches zu meinem Aufbau:

Ein RB5009 stellt über ein Glasfaser-Modem (PPPoE) der Telekom eine Verbindung zum Internet her.

export hide-sensitive
/interface bridge
add name=bridge
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/interface vlan
add interface=ether1 name=vlan7-pppoe vlan-id=7
/interface pppoe-client
add add-default-route=yes allow=pap,chap,mschap2 disabled=no interface=vlan7-pppoe name=pppoe-telekom-fiber profile=default-encryption user=XXXXXXX@t-online.de
/interface list
add name=PORT-FORWARD-LIST
add name=LAN
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/interface bridge port
add bridge=bridge interface=ether2
add bridge=bridge interface=ether3
add bridge=bridge interface=ether4
add bridge=bridge interface=ether5
add bridge=bridge interface=ether6
add bridge=bridge interface=ether7
add bridge=bridge disabled=yes interface=ether8
add bridge=bridge interface=sfp-sfpplus1
/interface detect-internet
set detect-interface-list=all
/interface list member
add interface=pppoe-telekom-fiber list=PORT-FORWARD-LIST
add interface=bridge list=PORT-FORWARD-LIST
add interface=bridge list=LAN
add interface=wireguard1 list=LAN
/interface wireguard peers
add allowed-address=10.9.0.2/32 interface=wireguard1 name=Poco public-key="XXXXXXX"  

Jetzt ist es so, dass die Wireguard Verbindung als Road Warrior grundsätzlich funktioniert. Ich komme auf alle Geräte in meinem lokalen Netz (172.20.0.0/16), mit Ausnahme des Servers und dessen virtuelle Maschine.

Dieser ist ein Ubuntu Server mit einer VM mit Home Assistant. Der Server selbst hat die IP 172.20.0.10 und die VM 172.20.0.30.

Pinge ich den Server, kommt der Ping zwar an, wird jedoch nicht beantwortet:
clipboard-image

Mache ich das gleiche mit einer anderen IP, funktioniert es wie erwartet:
clipboard-image

Die Firewall und NAT-Regeln sehen wie folgt aus:
/ip firewall address-list
add address=172.16.0.0/12 list=RFC1918
add address=10.0.0.0/8 list=RFC1918
add address=192.168.0.0/16 list=RFC1918
/ip firewall filter
add action=accept chain=input comment="accept established,related,untracked" connection-state=established,related,untracked  
add action=accept chain=input comment="allow WireGuard" dst-port=13231 protocol=udp  
add action=accept chain=input comment="allow WireGuard traffic" src-address=10.9.0.0/24  
add action=drop chain=input comment="drop invalid" connection-state=invalid  
add action=accept chain=input comment="accept ICMP" in-interface=pppoe-telekom-fiber protocol=icmp  
add action=accept chain=input comment="allow Winbox" in-interface=pppoe-telekom-fiber port=8291 protocol=tcp  
add action=accept chain=input comment="allow SSH" disabled=yes in-interface=pppoe-telekom-fiber port=22 protocol=tcp  
add action=drop chain=input comment="block everything else" in-interface=pppoe-telekom-fiber  
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-telekom-fiber
add action=dst-nat chain=dstnat comment="webserver http(s)" dst-address-list=!RFC1918 dst-address-type=local dst-port=80,443 in-interface-list=PORT-FORWARD-LIST protocol=tcp to-addresses=172.20.0.10  
add action=masquerade chain=srcnat comment="hairpin NAT" dst-address=172.20.0.10 out-interface=bridge src-address=172.20.0.0/16  

Ich denke, meine WireGuard Konfiguration ist an dieser Stelle nicht notwendig, da der Tunnel ja grundsätzlich funktioniert.

Leider fehlt mir irgendwie das Wissen und Können um hier den Fehler zu finden.

Content-ID: 670379

Url: https://administrator.de/forum/mikrotik-wireguard-vpn-670379.html

Ausgedruckt am: 28.12.2024 um 02:12 Uhr

gastric
gastric 27.12.2024 aktualisiert um 12:18:49 Uhr
Goto Top
Wenn der Ping am Mikrotik richtung Server raus geht aber nichts zurück kommt, ist das Problem am Server zu suchen, nicht am Mikrotik. Also entweder die Firewall am Server selbst oder falsches Routing/Default-GW am Server selbst.
Mach also mal ein Wireshark Capture am Server.

Nur mal so nebenbei, du hast keinerlei Forward-Chain Regeln in der Firewall, das Teil ist also offen wie ein Scheunentor, sowas ans Internet zu hängen ist schon ziemlich fahrlässig.Da tummelt sich bestimmt schon so einiges Ungetüm in deinem Netz ..

add action=accept chain=input comment="allow Winbox" in-interface=pppoe-telekom-fiber port=8291 protocol=tcp
Und selbst Winbox am WAN aufzumachen ist schon echt derb.... Da kann man nicht mehr viel dazu sagen 🙊🙊🙊

Leider fehlt mir irgendwie das Wissen und Können um hier den Fehler zu finden.
Deswegen besser erst nochmal die Grundlagen üben und dann erst die Praxis. Ansonsten als erstes ein wasserdichtes Firewall-Regelwerk nehmen und darauf aufbauen.
https://help.mikrotik.com/docs/spaces/ROS/pages/328513/Building+Advanced ...

Gruß gastric
deadrabbit
deadrabbit 27.12.2024 um 12:26:37 Uhr
Goto Top
Damit hast du bestimmt recht, aber irgendwie muss ich ja mal anfangen und grundsätzlich will ich damit ja mal lernen.

Ich hatte die Regeln von der MT Dokumentation. Die öffnen an dieser Stelle auch die entsprechenden Ports. SSH habe ich aus diesem Grund ohnehin schon deaktiviert.
aqui
aqui 27.12.2024 aktualisiert um 12:48:45 Uhr
Goto Top
Pinge ich den Server, kommt der Ping zwar an, wird jedoch nicht beantwortet:
Kollege @gastric hat es ja oben schon beantwortet. Bei einem solchen Ping ist es oftmals wichtig eine dedizierte IP Adresse als Absender mitzugeben. In sofern kann es Sinn machen im Reiter "Advanced" des Ping Menüs auch eine dedizierte Absender IP eines MT Interfaces mitzugeben. Ansonsten wird willkürlich eine je nach IP Adressierung genommen was dann den Ping wegen ggf. fehlender Routen usw. scheitern lässt, ganz besonders im VPN Umfeld. Das solltest du also beachten.
Der Ping Fehler oben ist also de facto am Server selber zu sehen. Ggf. fehlt dort die Default Route auf den MT im Netzwerk Setup?! Auch tcpdump (auch hier) am Server kann helfen zu checken was genau mit den ICMP Paketen (Ping) am Server passiert!

Zu den Sicherheitsfehlern der Firewall hat Kollege @gastric ja schon deutliche Worte gefunden.
Wenn du hier unsicher bist reboote den MT und belasse die Default Konfig auf dem Router. Der richtet eine wasserdicht arbeitende Firewall mit entsprechenden Regeln und NAT am ether1 Port ein die du dann einfach nur erweitern bzw. auf deine Belange customizen musst. Wenn man unsicher ist, ist das immer eine sichere Bank.
Was du auch machen kannst ist, wie oben schon angesprochen, diese Default FW Settings einfach in deine bestehende Konfig zu übernehmen.
deadrabbit
deadrabbit 27.12.2024 um 13:08:34 Uhr
Goto Top
Danke an dieser Stelle auf jeden Fall für den Hinweis.

Auch wenn das OT ist, erlaube ich mir jetzt trotzdem mal meinen Stand zu zeigen:
/ip firewall address-list
add address=172.16.0.0/12 list=RFC1918
add address=10.0.0.0/8 list=RFC1918
add address=192.168.0.0/16 list=RFC1918
/ip firewall filter
add action=drop chain=input comment="WAN -> FW | Ping blockieren" in-interface=pppoe-telekom-fiber protocol=icmp  
add action=accept chain=input comment="ALLG. | Aufgebaute Verbindungen erlauben" connection-state=established  
add action=accept chain=input comment="ALLG. | Aufgebaute Verbindungen erlauben" connection-state=related  
add action=accept chain=input comment="LAN -> FW | Zugriff zur Firewall erlauben" in-interface=bridge  
add action=accept chain=input comment="allow WireGuard" dst-port=13231 protocol=udp  
add action=accept chain=input comment="allow WireGuard traffic" src-address=10.9.0.0/24  
add action=drop chain=input comment="ALLG. | Alle ohne Verbindungsstatus blockieren"  
add action=accept chain=forward comment="ALLG. | Aufgebaute Verbindungen erlauben"  
add action=accept chain=forward comment="LAN -> WAN | Internetzugriff" in-interface=bridge out-interface=pppoe-telekom-fiber  
add action=drop chain=forward comment="ALLG. | Alles andere verwerfen"  
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-telekom-fiber
add action=dst-nat chain=dstnat comment="webserver http(s)" dst-address-list=!RFC1918 dst-address-type=local dst-port=80,443 in-interface-list=PORT-FORWARD-LIST protocol=tcp to-addresses=172.20.0.10  
add action=masquerade chain=srcnat comment="hairpin NAT" dst-address=172.20.0.10 out-interface=bridge src-address=172.20.0.0/16  

M.E. sollte das jetzt passen. Zumindest sind keine Ports, bis auf 80 und 443, mehr offen, wenn ich da mit nmap drauf schaue.
gastric
gastric 27.12.2024 aktualisiert um 13:19:40 Uhr
Goto Top
Nö, genauso offen wie vorher da fehlt der state und first match wins.
add action=accept chain=forward comment="ALLG. | Aufgebaute Verbindungen erlauben"

Und wenn du die Forward Chain am Ende komplett zu machst musst du immer an alle Verbindungen denken, seinen es DST-NATs oder Traffic der aus dem VPN an andere Stationen geht. Deswegen sag ich ja Firewall Grundlagen zu den Chains sind unerlässlich wenn du selbst das Regelwerk bauen willst, ansonsten wie oben verlinkt die Firewall Config Seite von Mikrotik durchlesen .

Bau mal im Lab von Hand mit iptables oder nftables eine Firewall auf, denn im Grunde ist die Mikrotik Firewall gleich aufgebaut wie die.

Unerlässlich fürs Verständnis des Regelwerkes ist diese Seite
https://help.mikrotik.com/docs/spaces/ROS/pages/328227/Packet+Flow+in+Ro ...
Visucius
Visucius 27.12.2024 um 13:16:31 Uhr
Goto Top
deadrabbit
deadrabbit 27.12.2024 um 19:28:50 Uhr
Goto Top
Dann ist dieses Video also nonsens?

Ich werde mal mit der Default-Konfiguration komplett von vorne beginnen...
gastric
gastric 27.12.2024 aktualisiert um 19:54:48 Uhr
Goto Top
Zitat von @deadrabbit:

Dann ist dieses Video also nonsens?
Wenn du die Hälfte nicht richtig übernimmst, tja 🤷. Ich kann nur von solchen Videos abraten. Wenn du von sowas nur abkupferst, lernst du nichts. Besser ist es wenn man von Grund auf das Chain-System auch versteht dann kann man sich später auch selbst helfen und steht nicht wie ein Ochs vorm Berg wenn mal was nicht so will wie man selbst.
Ich werde mal mit der Default-Konfiguration komplett von vorne beginnen...
Besser ist das nur wenn man sich selbst etwas anstrengen muss lernt man auch nachhaltig..
Die Lernkurve beim Mikrotik ist sehr steil, aber die Investition lohnt sich, glaub's mir.