I am attempting to setup a road warrior Wireguard connection to my router for the purpose of protecting my traffic on insecure public networks and using my home network pi-hole. I appear to have the connection working for a Windows laptop client connecting from another WiFi network. For an iPhone client, I consistently complete the initial handshake, but I get no traffic to or from the internet. Handshake is verified by seeing the handshake time update on the router.
The strange thing is there have been at least three occasions where the traffic was being routed fine for a period of several hours before failing and returning to the state of connection without routing traffic.
My set-up includes 2.4 and 5Ghz Wi-fi with a guest network. I have Ethernet port 5 set-up as a guest port isolated from the netwrok. I have pi-hole and wireguard running on a separate server, but would like to get wireguard running within the Mikrotik. Firewall rules include entries to isolate the wireguard clients too, but it does not work with those turned off either.
Please let me know if you see something I have missed to allow Wireguard traffic to reach the internet.
Config file is below
#2026-06-02 20:33:37 by RouterOS 7.22.1
#software id = 9Z5S-7ZSD
#model = E62iUGS-2axD5axT
#serial number = \[REDACTED\]
/interface bridge
add admin-mac=\[REDACTED\] auto-mac=no comment=defconf name=bridge
/interface wifi
set \[ find default-name=wifi1 \] channel.band=2ghz-ax .skip-dfs-channels=
10min-cac .width=20mhz configuration.mode=ap .ssid=\[REDACTED\] disabled=no
name=wifi2g security.authentication-types=wpa2-psk,wpa3-psk .ft=yes
.ft-over-ds=yes
add configuration.mode=ap .ssid=\[REDACTED\] datapath.client-isolation=yes
disabled=no mac-address=\[REDACTED\] master-interface=wifi2g name=
wifi2g-guest security.authentication-types=wpa2-psk,wpa3-psk
set \[ find default-name=wifi2 \] channel.band=5ghz-ax .frequency=5170-5250
.skip-dfs-channels=all .width=20/40/80mhz configuration.mode=ap .ssid=
\[REDACTED\] disabled=no name=wifi5g security.authentication-types=
wpa2-psk,wpa3-psk .ft=yes .ft-over-ds=yes
add configuration.mode=ap .ssid=\[REDACTED\] datapath.client-isolation=yes
disabled=no mac-address=\[REDACTED\] master-interface=wifi5g name=
wifi5g-guest security.authentication-types=wpa2-psk,wpa3-psk
/interface wireguard
add listen-port=49876 mtu=1420 name=wg1
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
add name=GUEST
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
add name=dhcp_pool1 ranges=192.168.99.2-192.168.99.254
add name=dhcp_pool2 ranges=192.168.98.2-192.168.98.254
add name=dhcp_pool3 ranges=192.168.97.2-192.168.97.254
/ip dhcp-server
add address-pool=default-dhcp interface=bridge name=defconf
add address-pool=dhcp_pool1 interface=wifi2g-guest name=dhcp1
add address-pool=dhcp_pool2 interface=wifi5g-guest name=dhcp2
add address-pool=dhcp_pool3 interface=ether5 name=dhcp3 use-reconfigure=yes
/disk settings
set auto-media-interface=bridge auto-media-sharing=yes auto-smb-sharing=yes
/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=sfp1
add bridge=bridge comment=defconf interface=wifi2g
add bridge=bridge comment=defconf interface=wifi5g
/ip neighbor discovery-settings
set discover-interface-list=LAN
/ipv6 settings
set disable-ipv6=yes
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
add interface=wg1 list=LAN
add interface=wifi2g-guest list=GUEST
add interface=wifi5g-guest list=GUEST
add interface=ether5 list=GUEST
/interface wireguard peers
add allowed-address=192.168.77.1/24 client-address=192.168.77.3/32
client-allowed-address=0.0.0.0/0 client-dns=192.168.88.4 client-endpoint=
\[REDACTED\] comment="\[REDACTED\]" endpoint-port=49876
interface=wg1 name=User1 public-key=
"\[REDACTED\]"
add allowed-address=192.168.77.1/24 client-address=192.168.77.4/32
client-allowed-address=0.0.0.0/0 client-dns=192.168.88.4 client-endpoint=
\[REDACTED\] comment="\[REDACTED\]" endpoint-port=49876
interface=wg1 name=User2 public-key=
"\[REDACTED\]"
add allowed-address=192.168.77.1/24 client-address=192.168.77.5/32
client-allowed-address=0.0.0.0/0 client-dns=192.168.88.4 client-endpoint=
\[REDACTED\] comment="\[REDACTED\]" endpoint-port=49876
interface=wg1 name=User3 public-key=
"\[REDACTED\]"
add allowed-address=192.168.77.1/24 client-address=192.168.77.6/32
client-allowed-address=0.0.0.0/0 client-dns=192.168.88.4 client-endpoint=
\[REDACTED\] comment="\[REDACTED\]" endpoint-port=49876
interface=wg1 name=User4 public-key=
"\[REDACTED\]"
add allowed-address=192.168.77.1/24 client-address=192.168.77.7/32
client-allowed-address=0.0.0.0/0 client-dns=192.168.88.4 client-endpoint=
\[REDACTED\] comment="\[REDACTED\]" endpoint-port=49876
interface=wg1 name=User5 public-key=
"\[REDACTED\]"
/ip address
add address=192.168.88.1/24 comment=defconf interface=bridge network=
192.168.88.0
add address=192.168.98.1/24 interface=wifi5g-guest network=192.168.98.0
add address=192.168.99.1/24 interface=wifi2g-guest network=192.168.99.0
add address=192.168.77.1/24 comment=Wireguard1 interface=wg1 network=
192.168.77.0
add address=192.168.97.1/24 comment="LAN Guest" interface=ether5 network=
192.168.97.0
/ip cloud
set ddns-enabled=yes update-time=no
/ip dhcp-client
add comment=defconf interface=ether1 name=client1 use-peer-dns=no
use-peer-ntp=no
/ip dhcp-server lease
add address=192.168.88.4 client-id=\[REDACTED\] mac-address=
\[REDACTED\] server=defconf
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.4 gateway=
192.168.88.1
add address=192.168.97.0/24 comment="LAN Guest" dns-server=192.168.88.4
gateway=192.168.97.1
add address=192.168.98.0/24 dns-server=192.168.88.4 gateway=192.168.98.1
add address=192.168.99.0/24 dns-server=192.168.88.4 gateway=192.168.99.1
/ip dns
set allow-remote-requests=yes servers=192.168.88.4
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan type=A
/ip 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 ICMP" disabled=yes
protocol=icmp
add action=accept chain=input comment="Accept Wireguard Handshake" dst-port=
49876 protocol=udp
add action=drop chain=input comment="defconf: drop all not coming from LAN"
in-interface-list=!LAN
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=accept chain=forward comment="Allow Guest to reach DNS"
dst-address=192.168.88.4 dst-port=53 in-interface-list=GUEST protocol=udp
add action=accept chain=forward comment="Allow Guest to reach DNS"
dst-address=192.168.88.4 dst-port=53 in-interface-list=GUEST protocol=tcp
add action=accept chain=forward comment="Allow wireguard to reach DNS"
dst-address=192.168.88.4 dst-port=53 in-interface=wg1 protocol=udp
add action=accept chain=forward comment="Allow Wireguard to reach DNS"
dst-address=192.168.88.4 dst-port=53 in-interface=wg1 protocol=tcp
add action=accept chain=forward in-interface=wg1 out-interface-list=WAN
add action=accept chain=forward in-interface-list=LAN out-interface-list=WAN
add action=drop chain=forward comment="Drop guest to LAN" in-interface-list=
GUEST out-interface=bridge
add action=drop chain=forward comment="Drop Wireguard to LAN" in-interface=
wg1 out-interface=bridge
add action=drop chain=forward comment="Drop LAN to Wireguard" in-interface=
bridge out-interface=wg1
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
in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade"
ipsec-policy=out,none out-interface-list=WAN
add action=dst-nat chain=dstnat comment="PiServer VPN" dst-port=47111
in-interface=ether1 protocol=udp to-addresses=192.168.88.4 to-ports=47111
/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=fasttrack-connection chain=forward comment="defconf: fasttrack6"
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 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-autodetect=no time-zone-name=America/New_York
/system ntp client
set enabled=yes
/system ntp server
set enabled=yes
/system ntp client servers
add address=pool.ntp.org
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN