godlie
Goto Top

Wireguard Peer Only auf Mikrotik RouterOS 7.X

Hallo,

nachdem ich jetzt einen ganzen Tag investiert habe und nicht weiterkomme wende ich mich an euch.

Folgende Situation beschäftigt mich: Es steht ein Wireguard Server in einem RZ, dorthin kann man sich ohne Probleme mit WireGuard Clients auf Mac, Linux u. Windows verbinden.

Jetzt wäre es nett, wenn das mein Router von alleine macht, ohne dass ich eine Software auf irgendeinem Rechner benötige.

Hab dann meinen hexPoe rausgeholt, flach gemacht und mal kurzerhand die Wireguard Interfaces + Peer konfiguriert.

Ich bekomme aber am Router keinerlei Handshake gegenüber den Server im RZ hin, bzw. sehr ich nicht mal ob der Router es versucht.

Mit dieser Config für die Wireguard Guis, gibt es keinerlei Probleme
[Interface]
Address = 10.10.100.2/32
PrivateKey = PrivateKey
DNS = 1.1.1.1
MTU = 1450

[Peer]
PublicKey =RZ-PUBLIC
PresharedKey = PSK
AllowedIPs = 0.0.0.0/0
Endpoint = XXXXX:YYYYY
PersistentKeepalive = 15

Mit dieser Config für den Mikrotik gibt es keine Reaktion
# 2024-03-10 08:17:34 by RouterOS 7.14
# software id = AYWU-80RZ
#
# model = RB960PGS
# serial number = AD8C0A00C928
/interface bridge
add admin-mac=74:4D:28:AD:03:F4 auto-mac=no comment=defconf name=bridge
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/ip hotspot profile
set [ find default=yes ] html-directory=hotspot
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
/ip dhcp-server
add address-pool=default-dhcp interface=bridge lease-time=10m name=defconf
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=sfp1
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=XXXXX endpoint-port=\
    YYYYYYYY interface=wireguard1 preshared-key=\
    "preshared" public-key=\  
    "RZ-PUBLIC"  
/ip address
add address=192.168.88.1/24 comment=defconf interface=bridge network=\
    192.168.88.0
add address=10.10.100.2/24 interface=wireguard1 network=10.10.100.0
/ip dhcp-client
add comment=defconf interface=ether1
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=\
    192.168.88.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\  
    established,related,untracked
add action=accept chain=input in-interface=wireguard1
add action=drop chain=input comment="defconf: drop invalid" connection-state=\  
    invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp  
add action=accept chain=input comment=\
    "defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1  
add action=drop chain=input comment="defconf: drop all not coming from LAN" \  
    in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \  
    ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \  
    ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \  
    connection-state=established,related hw-offload=yes
add action=accept chain=forward comment=\
    "defconf: accept established,related, untracked" connection-state=\  
    established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \  
    connection-state=invalid
add action=drop chain=forward comment=\
    "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \  
    connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \  
    ipsec-policy=out,none out-interface-list=WAN
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6  
add address=::1/128 comment="defconf: lo" list=bad_ipv6  
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6  
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6  
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6  
add address=100::/64 comment="defconf: discard only " list=bad_ipv6  
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6  
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6  
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6  
/ipv6 firewall filter
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\  
    established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\  
    invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\  
    icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" \  
    dst-port=33434-33534 protocol=udp
add action=accept chain=input comment=\
    "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\  
    udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \  
    protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\  
    ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\  
    ipsec-esp
add action=accept chain=input comment=\
    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec  
add action=drop chain=input comment=\
    "defconf: drop everything else not coming from LAN" in-interface-list=\  
    !LAN
add action=accept chain=forward comment=\
    "defconf: accept established,related,untracked" connection-state=\  
    established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \  
    connection-state=invalid
add action=drop chain=forward comment=\
    "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6  
add action=drop chain=forward comment=\
    "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6  
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \  
    hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\  
    icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139  
add action=accept chain=forward comment="defconf: accept IKE" dst-port=\  
    500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\  
    ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\  
    ipsec-esp
add action=accept chain=forward comment=\
    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec  
add action=drop chain=forward comment=\
    "defconf: drop everything else not coming from LAN" in-interface-list=\  
    !LAN
/system clock
set time-zone-name=Europe/Vienna
/system note
set show-at-login=no
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

Dank u. Gruß

Content-ID: 13015303325

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

aqui
aqui 10.03.2024 aktualisiert um 14:47:05 Uhr
Goto Top
Was häufig vergessen wird ist das der Mikrotik das Crypto Routing nicht automatisch macht sondern immer eine statische Route erfordert.
Eine Router Anbindung macht man in der Regel auch nicht mit einem Gateway Redirect sondern immer mit Split Tunneling.

Vielleicht hilft dir das hier etwas weiter was die Anbindung eines Mikrotik Wireguard Clients an eine Firewall (WG Server) zeigt:
Mikrotik als Wireguard Client an pfSense

Die Variante zur Anbindung an eine als Wireguard Server laufende Fritzbox z.B. HIER

Nebenbei:
Es ist sinnfrei eine MTU anzugeben da Wireguard den Tunnel Overhead schon im Default korrekt berücksichtigt mit der Default Tunnel MTU von 1420.
Auch ist die Verwendung eines PSK überflüssig wenn man schon mit Keys arbeitet. Normalerweise benötigt man keinen Gürtel wenn man schon Hosenträger an hat. face-wink
Das kannst du also weglassen in deinem Setup. Die Keepalives kann man auf UDP moderate 25 Sek. erhöhen um den Tunnel zu schonen.
Siehe auch Wireguard Tutorial!

Beispielkonfig zum Abtippen weil heute ja Sonntag ist! 😊

back-to-topSetup Wireguard Server


[Interface]
Address = 172.27.27.62/27
PrivateKey = <Private_Key_Server>
ListenPort = 57820

# Peer Mikrotik RB750
[Peer]
PublicKey = 8orfHOyq+BfuaiONzrurQmuUCHV60EYHRS1onGKesFI=
AllowedIPs = 172.27.27.53/32, 192.168.118.0/24 

back-to-topSetup Mikrotik RouterOS

4 einfache Schritte
  • Wireguard Keys setzen
  • Peer zum Server definieren
  • Unter IP - Addresses die Wireguard Tunnel IP setzen
  • Ggf. statische Route setzen wenn ein IP Netze am Server erreicht werden müssen (.26.0/24 ist hier ein lokales Netzwerk am Server)
wgmtclientnew.

back-to-topPeer und Ping Check


interface: wg0
  public key: vZvzgp56G8lsrvjFdCWXdaXsNPYfV+2+54YV8wTN0B8=
  private key: (hidden)
  listening port: 57820

peer: 8orfHOyq+BfuaiONzrurQmuUCHV60EYHRS1onGKesFI=
  endpoint: 81.1.2.3:5888
  allowed ips: 172.27.27.53/32, 192.168.118.0/24
  latest handshake: 51 seconds ago
  transfer: 5.11 KiB received, 3.45 KiB sent 
wgping

Fazit: Works as designed!! 👍 😉
11078840001
11078840001 10.03.2024 aktualisiert um 09:45:55 Uhr
Goto Top
0.0.0.0/0
Für nen GW Redirect muss man erst ne Route anlegen und das Masquerade auf dem Wireguard IF nicht vergessen wenn die Gegenseite nichts von deinen lokalen Netzen kennt...

Wireguard Traffic (Gateway redirect)
godlie
godlie 10.03.2024 um 13:26:28 Uhr
Goto Top
Hallo,

danke mal für die Links muss ich mich erst ganz durcharbeiten, was mir aber sehr komisch vorkommt, warum initiert der Peer am Router keinen connect zum Server im RZ?

grüße
11078840001
Lösung 11078840001 10.03.2024 aktualisiert um 13:45:58 Uhr
Goto Top
Zitat von @godlie:
was mir aber sehr komisch vorkommt, warum initiert der Peer am Router keinen connect zum Server im RZ?

Dann stimmt entweder noch einer der Keys nicht, Endpoint, oder Port fehlerhaft, fehlerhafte DNS Auflösung, vorgelagerte FW blockt,etc. ....
Logging der Topics unter System> Logging aktivieren.
aqui
aqui 10.03.2024 um 14:15:40 Uhr
Goto Top
muss ich mich erst ganz durcharbeiten
Damit es dir am Sonntag leichter fällt oben eine fertige Konfig zum Abtippen! face-wink
QDaniel
QDaniel 10.03.2024 aktualisiert um 14:28:36 Uhr
Goto Top
Ich hab seit RouterOS 7.13 öfters das Problem das Wireguard den Tunnel bei neu angelegten Peers nicht initialisiert. Dann einmal den Router neustarten dann klappt es.

Zudem ist MTU von 1450 ist für Wireguard zu hoch. Bei IPv4 max. 1440 default liegt bei 1420.
godlie
godlie 11.03.2024 um 07:53:30 Uhr
Goto Top
Zitat von @11078840001:

Zitat von @godlie:
was mir aber sehr komisch vorkommt, warum initiert der Peer am Router keinen connect zum Server im RZ?

Dann stimmt entweder noch einer der Keys nicht, Endpoint, oder Port fehlerhaft, fehlerhafte DNS Auflösung, vorgelagerte FW blockt,etc. ....
Logging der Topics unter System> Logging aktivieren.

Hallo,
danke für den Hinweis mit den Keys, schlussendlich war der falsche PublicKey in der Serverconfig hinterlegt.

Der PublicKey vom wireguard Interface der Mikrotik sollte eingetragen sein, ansonsten wird der Handshake nie funktionieren.

grüße