Hi everyone,
I am facing a very specific and stubborn issue with a newly configured WireGuard tunnel on my RB750Gr3 running RouterOS v7.25.
The setup:
- The ISP modem is in Bridge mode (Static Public IP is directly on the MikroTik WAN interface).
- The WireGuard client is a Samsung Galaxy S24 (Android) connected via mobile data (LTE/5G).
- The WireGuard subnet has been isolated to 10.0.99.0/24 to avoid any overlapping with internal ISP or LAN subnets.
What works:
- Handshake is fully functional. The
Last Handshaketimestamp updates regularly in WinBox, and data counters are increasing on both sides. - Internet routing through the tunnel works perfectly. When WireGuard is enabled on the phone with
AllowedIPs = 0.0.0.0/0, I can browse external websites seamlessly (traffic is successfully hitting the forward chain and being masqueraded out to the WAN).
The Problem:
I absolutely cannot access the router itself
(neither via WebFig on http://10.0.99.1 nor via the MikroTik Mobile app) from the connected phone.
Diagnostic steps already taken:
- Firewall Verification: The explicit input rule allowing WireGuard traffic on port
13231is placed at the very top of the input chain (Index 0). Theinputchain also has a rule explicitly accepting all traffic wherein-interface=wireguard1. - FastTrack & MTU: FastTrack bypass rules for the
10.0.99.0/24subnet are placed directly above the main FastTrack rule. MTU has been manually lowered to1280on both the MikroTik interface and the Android app. MSS clamping rules are also active in the mangle table. - IP Services: Router services (
wwwandwinbox) have theirallowed-addressesset to0.0.0.0/0. - Packet Sniffer Analysis: When running Packet Sniffer on
wireguard1while trying to connect tohttp://10.0.99.1from the phone, I can see both RX and TX packets. The router is receiving the request and transmitting the response back into the tunnel, but the client never establishes the connection (resulting in a timeout/blank page even in Incognito mode).
It feels like a routing loop or an encapsulation issue within RouterOS v7.25 when handing traffic over to local input services, or a silent drop related to how Android handles cellular IPv6/IPv4 transitions inside the tunnel.
Below are my current firewall and NAT exports. Any advice on what might be causing this local service lockout would be highly appreciated!
routeros
# Firewall Filter Export
/ip firewall filter
add action=accept chain=input comment="WireGuard: Eksplicitno dovoli vhod v usmerjevalnik" in-interface=wireguard1
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=accept chain=input comment="allow WireGuard VPN" dst-port=13231 protocol=udp
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=accept chain=input comment="allow IPsec NAT" dst-port=4500 protocol=udp
add action=accept chain=input comment="allow l2tp" dst-port=1701 protocol=udp
add action=accept chain=input comment="allow IKE" dst-port=500 protocol=udp
add action=accept chain=input comment="allow SSH s preverjanjem blacklista" dst-port=22 protocol=tcp src-address-list=!bruteforce_blacklist
add action=add-src-to-address-list address-list=bruteforce_blacklist address-list-timeout=1d chain=input comment="SSH Blacklist" connection-state=new dst-port=22 protocol=tcp src-address-list=connection3
add action=add-src-to-address-list address-list=connection3 address-list-timeout=1h chain=input comment="SSH Third attempt" connection-state=new dst-port=22 protocol=tcp src-address-list=connection2
add action=add-src-to-address-list address-list=connection2 address-list-timeout=15m chain=input comment="SSH Second attempt" connection-state=new dst-port=22 protocol=tcp src-address-list=connection1
add action=add-src-to-address-list address-list=connection1 address-list-timeout=5m chain=input comment="SSH First attempt" connection-state=new dst-port=22 protocol=tcp
add action=accept chain=input comment="WireGuard: Dovoli DNS usmerjevalnika (UDP)" dst-port=53 protocol=udp src-address=10.0.99.0/24
add action=accept chain=input comment="WireGuard: Dovoli DNS usmerjevalnika (TCP)" dst-port=53 protocol=tcp src-address=10.0.99.0/24
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=accept chain=forward comment="WireGuard: bypass FastTrack naprej" src-address=10.0.99.0/24
add action=accept chain=forward comment="WireGuard: bypass FastTrack nazaj" dst-address=10.0.99.0/24
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
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 bad forward IPs" src-address-list=no_forward_ipv4
add action=drop chain=forward comment="defconf: drop bad forward IPs" dst-address-list=no_forward_ipv4
add action=accept chain=forward comment="allow traffic from WireGuard VPN" in-interface=wireguard1
add action=jump chain=forward comment="Skok na DDoS detekcijo" connection-state=new jump-target=detect-ddos
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s
add action=add-dst-to-address-list address-list=ddos-targets address-list-timeout=10m chain=detect-ddos
add action=add-src-to-address-list address-list=ddos-attackers address-list-timeout=10m chain=detect-ddos
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
# NAT Export
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade + ipsec awareness" ipsec-policy=out,none out-interface-list=WAN
add action=masquerade chain=srcnat comment="Masquerade za WireGuard" src-address=10.0.99.0/24
# Mangle Export
/ip firewall mangle
add action=change-mss chain=forward comment="WireGuard: MSS Clamp v1" new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn src-address=10.0.99.0/24
add action=change-mss chain=forward comment="WireGuard: MSS Clamp v2" new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn dst-address=10.0.99.0/24
Thank you!