The Problem
TL;DR: WireGuard clients can handshake, but can't consistently do anything more.
We have configured a RoadWarrior WireGuard Tunnel on a CRS326 according to MikroTik's official documentation and the two sample clients are able to establish WireGuard handshakes.
WireGuard Client x.x.x.208 can ping WAN IP addresses and the router itself, but it generally can't browse to any websites. (Suggests a DNS resolution problem.) Sometimes Client 208 can ping other LAN clients inside the router. The router can ping Client 208, and usually other LAN clients can ping Client 208, even when Client 208 can't ping back.
WireGuard Client x.x.x.210 can also ping WAN IP addresses and the router itself, and it generally can browse outside websites. (But it has the same DNS configuration as 208.) Has the same problems with pinging LAN clients inside the router. The router can likewise ping Client 210, and usually other internal clients can ping Client 210, even when Client 210 can't ping back.
Once connected, both clients can SSH into the CRS326 and authenticate. We can navigate through the shell for a several seconds and print a list or two, but then it will inevitably hang while responding to a command that produces output longer than a few lines.
Attempting to SSH into anything else sometimes produces an authentication prompt, or sometimes it hangs before connecting, or sometimes it says the destination is unreachable. Sometimes we can get all three kinds of responses when attempting to contact the same in-network destination.
We wonder if there may be some complications from the VLAN configuration, but interestingly sometimes Client 210 can ping clients inside of the worknet VLAN.
Summary: Yeah... WireGuard clients can handshake, but can't consistently do anything more.
How We Got Here
We followed the MikroTik documentation to establish a RoadWarrior WireGuard Tunnel:
And we have reviewed and tried all sorts of suggestions from the following resources:
- Wireguard connected but not able to access internal resources
- Can't Access LAN Devices Behind MikroTik via WireGuard Tunnel
- MikroTik Wireguard server with Road Warrior clients
- Wireguard interface in wan and lan list
- WireGuard - 7.1beta6 - Can't get it to work - Howto setup?
- Both Openvpn and Wiregurard fail
- Wireguard VPN setup
- Wireguard proper server config
- Wireguard: Can' access VLANs
- ...among many, many others (lots of friendly/helpful people here!)
- ...and at least 20-30 Reddit threads
- ...and plenty of blogs from supposed experts
- ...and exactly zero generative AI prompts
And we have sacrificed several idols on the altar of the MikroTikian demigods…
- This didn’t reveal any technical answers, but we now have an outstanding recipie for kotletes to try!
Config Files
CRS326 Configuration
# 2025-11-11 05:07:17 by RouterOS 7.20.4
# software id = [REDACTED]
#
# model = CRS326-24G-2S+
# serial number = [REDACTED]
/interface bridge
add admin-mac=[REDACTED] auto-mac=no comment=defconf frame-types=\
admit-only-vlan-tagged name=bridge vlan-filtering=yes
/interface ethernet
set [ find default-name=ether1 ] comment=WAN
set [ find default-name=ether2 ] comment="Trunk to WAP"
set [ find default-name=ether3 ] comment="worknet"
set [ find default-name=ether4 ] comment="worknet"
set [ find default-name=ether5 ] comment="worknet"
set [ find default-name=ether6 ] comment="worknet"
set [ find default-name=ether7 ] comment="worknet"
set [ find default-name=ether8 ] comment="worknet"
set [ find default-name=ether13 ] comment="worknet"
set [ find default-name=ether14 ] comment="worknet"
set [ find default-name=ether15 ] comment="worknet"
set [ find default-name=ether16 ] comment="guestnet"
set [ find default-name=ether17 ] comment="guestnet"
set [ find default-name=ether18 ] comment="locnet"
set [ find default-name=ether19 ] comment="locnet"
set [ find default-name=ether20 ] comment="locnet"
set [ find default-name=ether21 ] comment="locnet"
set [ find default-name=ether22 ] comment="locnet"
set [ find default-name=ether23 ] comment="locnet"
set [ find default-name=ether24 ] comment="Management"
set [ find default-name=sfp-sfpplus1 ] comment="worknet"
set [ find default-name=sfp-sfpplus2 ] comment="worknet"
/interface wireguard
add listen-port=35953 mtu=1420 name=wg1
/interface vlan
add interface=bridge name=MGMT vlan-id=99
add interface=bridge name=guestnet vlan-id=74
add interface=bridge name=locnet vlan-id=31
add interface=bridge name=worknet vlan-id=47
/interface ethernet switch port-isolation
set 16 forwarding-override=ether1
set 17 forwarding-override=ether1
/interface list
add comment="contains main bridge (without ether1)" name=LAN
add comment="47 Work Devices" name=worknet-list
add comment="74 Guest Devices" name=guestnet-list
add comment="31 Local Devices (no internet access)" name=locnet-list
add comment="Upstream port (ether1)" name=WAN
add comment="Trunk port (ether2)" name=trunk-list
add comment="99 Management Devices" name=MGMT-list
/ip pool
add name=worknet-pool ranges=10.76.47.100-10.76.47.199
add name=guestnet-pool ranges=10.76.74.100-10.76.74.199
add name=locnet-pool ranges=10.76.31.100-10.76.31.199
add name=MGMT-pool ranges=10.76.99.100-10.76.99.199
/ip dhcp-server
add address-pool=worknet-pool interface=worknet name=worknet-dhcp
add address-pool=guestnet-pool interface=guestnet name=guestnet-dhcp
add address-pool=locnet-pool interface=locnet name=locnet-dhcp
add address-pool=MGMT-pool interface=MGMT name=MGMT-dhcp
/port
set 0 name=serial0
/system ntp key
add key-id=52728
/interface bridge port
add bridge=bridge comment="Trunk to WAP" frame-types=admit-only-vlan-tagged \
interface=ether2
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether3 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether4 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether5 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether6 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether7 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether8 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether9 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether10 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether11 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether12 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether13 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether14 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether15 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether16 pvid=74
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether17 pvid=74
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether18 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether19 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether20 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether21 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether22 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether23 pvid=31
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=ether24 pvid=99
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=sfp-sfpplus1 pvid=47
add bridge=bridge comment=defconf frame-types=\
admit-only-untagged-and-priority-tagged interface=sfp-sfpplus2 pvid=47
add bridge=bridge frame-types=admit-only-untagged-and-priority-tagged \
interface=worknet-list pvid=47
add bridge=bridge frame-types=admit-only-untagged-and-priority-tagged \
interface=guestnet-list pvid=74
add bridge=bridge frame-types=admit-only-untagged-and-priority-tagged \
interface=locnet-list pvid=31
/ip neighbor discovery-settings
set discover-interface-list=MGMT-list
/ip settings
set rp-filter=strict
/interface bridge vlan
add bridge=bridge comment="99 MGMT" tagged=bridge,ether2 untagged=ether24 \
vlan-ids=99
add bridge=bridge comment="47 worknet" tagged=bridge,trunk-list untagged=\
worknet-list vlan-ids=47
add bridge=bridge comment="74 guestnet" tagged=bridge,trunk-list untagged=\
guestnet-list vlan-ids=74
add bridge=bridge comment="31 locnet" tagged=bridge untagged=locnet-list \
vlan-ids=31
/interface list member
add interface=bridge list=LAN
add interface=ether20 list=locnet-list
add interface=ether21 list=locnet-list
add interface=ether22 list=locnet-list
add interface=ether23 list=locnet-list
add interface=ether3 list=worknet-list
add interface=ether4 list=worknet-list
add interface=ether5 list=worknet-list
add interface=ether6 list=worknet-list
add interface=ether7 list=worknet-list
add interface=ether8 list=worknet-list
add interface=ether9 list=worknet-list
add interface=ether10 list=worknet-list
add interface=ether11 list=worknet-list
add interface=ether12 list=worknet-list
add interface=ether13 list=worknet-list
add interface=ether14 list=worknet-list
add interface=ether15 list=worknet-list
add interface=ether16 list=guestnet-list
add interface=ether1 list=WAN
add interface=ether17 list=guestnet-list
add interface=ether18 list=locnet-list
add interface=ether19 list=locnet-list
add interface=ether2 list=trunk-list
add interface=worknet list=MGMT-list
add interface=ether24 list=MGMT-list
add interface=sfp-sfpplus1 list=worknet-list
add interface=sfp-sfpplus2 list=worknet-list
add interface=guestnet list=LAN
add interface=locnet list=LAN
add interface=MGMT list=LAN
add interface=worknet list=LAN
add interface=wg1 list=LAN comment="Some forum posts say this is necessary, but this list is not used in any firewall rules"
/interface wireguard peers
add allowed-address=10.76.42.210/32 interface=wg1 name=Client210 public-key=\
"[REDACTED]"
add allowed-address=10.76.42.208/32 interface=wg1 name=Client208 public-key=\
"[REDACTED]"
/ip address
add address=192.168.88.1/24 comment=defconf disabled=yes interface=bridge \
network=192.168.88.0
add address=10.76.99.1/24 interface=MGMT network=10.76.99.0
add address=10.76.47.1/24 interface=worknet network=10.76.47.0
add address=10.76.74.1/24 interface=guestnet network=10.76.74.0
add address=10.76.31.1/24 interface=locnet network=10.76.31.0
add address=10.76.42.0/24 interface=wg1 network=10.76.42.0
/ip cloud
set update-time=no
/ip dhcp-client
add interface=ether1
/ip dhcp-server network
add address=10.76.31.0/24 dns-none=yes gateway=10.76.31.1
add address=10.76.47.0/24 gateway=10.76.47.1
add address=10.76.74.0/24 gateway=10.76.74.1
add address=10.76.99.0/24 dns-server=1.1.1.2,1.0.0.2 gateway=10.76.99.1
add address=192.168.88.0/24 gateway=192.168.88.1
/ip firewall address-list
add address=0.0.0.0/8 list=Bogon
add address=10.0.0.0/8 list=Bogon
add address=100.64.0.0/10 list=Bogon
add address=127.0.0.0/8 list=Bogon
add address=169.254.0.0/16 list=Bogon
add address=172.16.0.0/12 list=Bogon
add address=192.0.0.0/24 list=Bogon
add address=192.0.2.0/24 list=Bogon
add address=192.168.0.0/16 list=Bogon
add address=198.18.0.0/15 list=Bogon
add address=198.51.100.0/24 list=Bogon
add address=203.0.113.0/24 list=Bogon
add address=224.0.0.0/4 list=Bogon
add address=240.0.0.0/4 list=Bogon
add address=[REDACTED] list=BannedIP
add address=[REDACTED] list=BannedIP
[...]
add address=[REDACTED] list=BannedIP
add address=[REDACTED] list=BannedIP
/ip firewall filter
# Throughout the filter rules, WAN port ether1 is specified directly by its interface rather than using a list. I have tried changing this to the WAN list (in the proper field, of course) and it makes no apparent difference.
# There is a ton of logging turned on as a troubleshooting measure.
add action=drop chain=input comment="Drop BannedIP" log=yes log-prefix=\
"DROP BANNEDIP" src-address-list=BannedIP
add action=accept chain=input comment=\
"Accept established, related, untracked" connection-state=\
established,related,untracked
add action=accept chain=input comment="Accept WireGuard Connections" \
dst-port=35953 log=yes log-prefix="ALLOW WIREGUARD CONNECTION" protocol=\
udp
add action=accept chain=input comment="Accept WireGuard Traffic" \
in-interface=10.76.42.0/24 log=yes log-prefix="ALLOW WIREGUARD TRAFFIC ON IP -- MikroTik documentation says do this"
add action=accept chain=input comment="Accept WireGuard Traffic" \
in-interface=wg1 log=yes log-prefix="ALLOW WIREGUARD TRAFFIC ON INTERFACE -- Forum post suggests this -- tried both independently and combined, with no change in behavior"
add action=accept chain=input comment="Accept ICMP" in-interface=ether1 \
protocol=icmp
add action=accept chain=input comment="Allow WinBox" in-interface-list=\
MGMT-list log=yes log-prefix="ALLOW WINBOX" port=[REDACTED] protocol=tcp
add action=accept chain=input comment="Allow SSH" in-interface=ether1 port=\
[REDACTED] protocol=tcp
add action=drop chain=input comment="Drop invalid" connection-state=invalid
add action=drop chain=input comment="Drop all else" in-interface=ether1
add action=fasttrack-connection chain=forward comment=\
"Fasttrack established, related" connection-state=established,related \
hw-offload=yes
add action=accept chain=forward comment="Accept established, related" \
connection-state=established,related
add action=drop chain=forward comment="Drop Bogon Forward to WAN" \
in-interface=ether1 log=yes log-prefix="DROP BOGON FORWARD to WAN" \
src-address-list=Bogon
add action=accept chain=forward comment="Allow worknet to WAN" \
connection-state=new in-interface=worknet log-prefix=\
"ALLOW worknet TO WAN" out-interface=ether1
add action=accept chain=forward comment="Allow wireguard to WAN" \
in-interface=wg1 log-prefix="ALLOW WIREGUARD to WAN" out-interface=ether1
add action=accept chain=forward comment="Allow guestnet to WAN" in-interface=\
guestnet log-prefix="ALLOW GUESTNET to WAN" out-interface=ether1
add action=drop chain=forward comment="Drop guestnet to ALL" in-interface=\
guestnet log=yes log-prefix="DROP GUESTNET to ALL"
add action=drop chain=forward comment="Drop ALL to guestnet" log=yes \
log-prefix="DROP ALL to GUESTNET" out-interface=guestnet
add action=drop chain=forward comment="Drop WAN access to clients behind NAT" \
connection-nat-state=!dstnat connection-state=new in-interface=ether1 \
log=yes log-prefix="DROP WAN to NAT CLIENT"
add action=drop chain=forward comment="Drop invalid" connection-state=invalid \
log=yes log-prefix="DROP INVALID"
add action=drop chain=forward comment="Drop all traffic to WAN" log=yes \
log-prefix="DROP TO WAN" out-interface=ether1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat comment="Tried this and it did nothing" \
disabled=yes out-interface=wg1
/ip hotspot profile
set [ find default=yes ] html-directory=hotspot
/ip service
set ftp disabled=yes
set telnet disabled=yes
set www disabled=yes
set ssh address=10.76.47.0/24,10.76.99.0/24 port=[REDACTED] comment="Yes, this will get tightened up"
set winbox address=10.76.47.0/24,10.76.99.0/24 comment="So will this"
set api disabled=yes
set api-ssl disabled=yes
/ip ssh
set strong-crypto=yes
/snmp community
set [ find default=yes ] authentication-protocol=SHA1 encryption-protocol=AES \
name=worknet security=private
/system clock
set time-zone-name=[REDACTED]
/system identity
set name=[REDACTED]
/system ntp client
set enabled=yes
/system ntp server
set auth-key=[REDACTED] enabled=yes
/system ntp client servers
add address=[REDACTED]
add address=[REDACTED]
add address=[REDACTED]
add address=[REDACTED]
/system routerboard settings
set enter-setup-on=delete-key
/tool bandwidth-server
set enabled=no
/tool mac-server
set allowed-interface-list=none
/tool mac-server mac-winbox
set allowed-interface-list=none
Client 208 WireGuard Configuration
[Interface]
PrivateKey = [REDACTED] # Client's private key
Address = 10.76.42.208/32 # Client's VPN IP
[Peer]
PublicKey = [REDACTED] # Server's public key
Endpoint = [REDACTED].com:35953 # Server's IP and listen port
AllowedIPs = 0.0.0.0/0 # Route all traffic through VPN
PersistentKeepalive = 25 # Keep connection open (seconds)
Client 210 WireGuard Configuration
[Interface]
PrivateKey = [REDACTED] # Client's private key
Address = 10.76.42.210/32 # Client's VPN IP
[Peer]
PublicKey = [REDACTED] # Server's public key
Endpoint = [REDACTED].com:35953 # Server's IP and listen port
AllowedIPs = 0.0.0.0/0 # Route all traffic through VPN
PersistentKeepalive = 25 # Keep connection open (seconds)
Gratitude
Thank you for your help. We appreciate whatever insights and advice you may share.
Please let us know what additional information may be helpful.