Access to LAN resources via WireGuard tunnel

Hi all,

Been getting to know my new MT router over the last month or so and decided to take on a project which has…stalled somewhat for reasons I can’t place.

Basic network setup: Modem ↔ MT Router ↔ LAN on standard 192.168.88.x subnet.

Project: Create a WireGuard interface to enable access to the LAN (resources like NAS) from outside, making the new network setup (notionally) this:

Modem ↔ MT Router <|> LAN on standard 192.168.88.x subnet
|> WG on subnet 192.168.100.x

Currently I can connect successfully and access internet through the WG setup and I can access the router IP with no issues. However access to the rest of the 88 subnet still eludes me. The test scenario I’m using is attempting to access the NAS on the 88 subnet via my Android phone, which can access the NAS within the network under normal circumstances without trouble.

Current state of the config file:

# 2024-01-25 09:19:37 by RouterOS 7.12.1
# software id = UK4L-EXMV
#
# model = RBD53iG-5HacD2HnD
# serial number = 
/interface bridge
add admin-mac=XX:XX:XX:XX:XX:XX auto-mac=no comment=defconf name=bridge
/interface ethernet
set [ find default-name=ether1 ] name="ether1 (modem)"
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-XX \
    country="united states" disabled=no distance=indoors frequency=auto \
    installation=indoor mode=ap-bridge ssid=Tardis_Blue wireless-protocol=\
    802.11
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=\
    20/40/80mhz-XXXX country="united states" disabled=no distance=indoors \
    frequency=auto installation=indoor mode=ap-bridge ssid=Tardis_Bluer \
    wireless-protocol=802.11
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\
    dynamic-keys supplicant-identity=MikroTik
/ip pool
add name=dhcp ranges=192.168.88.10-192.168.88.254
/ip dhcp-server
add address-pool=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=wlan1
add bridge=bridge comment=defconf interface=wlan2
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface detect-internet
set detect-interface-list=all
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface="ether1 (modem)" list=WAN
add interface=wireguard1 list=LAN
/interface wireguard peers
add allowed-address=192.168.100.2/32 interface=wireguard1 public-key=\
    "XXXX"
add allowed-address=192.168.100.3/24 interface=wireguard1 public-key=\
    "YYYY"
/ip address
add address=192.168.88.1/16 comment=defconf interface=bridge network=\
    192.168.0.0
add address=192.168.100.1/24 interface=wireguard1 network=192.168.100.0
/ip dhcp-client
add comment=defconf interface="ether1 (modem)"
/ip dhcp-server lease
add address=192.168.88.246 client-id=1:c0:25:a5:14:27:33 mac-address=\
    C0:25:A5:14:27:33 server=defconf
add address=192.168.88.243 client-id=1:b8:27:eb:80:fe:bb mac-address=\
    B8:27:EB:80:FE:BB server=defconf
add address=192.168.88.242 client-id=1:0:11:32:eb:da:fe mac-address=\
    00:11:32:EB:DA:FE server=defconf
add address=192.168.88.251 client-id=1:b0:25:aa:44:c1:30 mac-address=\
    B0:25:AA:44:C1:30 server=defconf
/ip dhcp-server network
add address=192.168.0.0/16 comment=defconf dns-server=192.168.88.239,9.9.9.9 \
    gateway=192.168.88.1 netmask=16
/ip dns
set allow-remote-requests=yes servers=192.168.88.239,9.9.9.9
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=input comment="allow WireGuard" dst-port=13231 \
    protocol=udp
add action=accept chain=input comment="allow WireGuard traffic" src-address=\
    192.168.100.0/24
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" 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
add action=accept chain=forward dst-address=192.168.100.0/24 src-address=\
    192.168.88.0/24
add action=accept chain=forward dst-address=192.168.88.0/24 src-address=\
    192.168.100.0/24
add action=accept chain=forward dst-address=192.168.100.0/24 src-address=\
    192.168.88.0/24 src-address-list=""
add action=accept chain=forward dst-address=192.168.88.0/24 in-interface=\
    wireguard1
/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" 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=America/New_York
/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

And in case anyone has questions about the device-side accesses, the allowed IP range is 0.0.0.0/0, so I am reasonably confident that the issue isn’t there.

Hi,
Having the LAN network as 192.168.0.0/16 will stop wireguard working

All the devices on the LAN network will be arping for 192.168.100.x expecting it to be a neighbour.

You can enable proxy arp on the mikrotik bridge which will likely get it to work.

Though I think you should reduce the address range (and move other devices into the .88 range)
unless you really really need it that broad.

Switched the ARP option in the bridge from enabled to proxy-arp and that literally did the trick, thank you very much.

The observation about the .0 subnet is interesting, because I have no idea where it came from. Everything in Winbox has been in the .88 range, which was basically the out of the box configuration, until I inserted the .100 subnet for Wireguardian purposes. I didn’t even notice it when I was scanning the config file as I was writing the post, and I have zero clue what it could be there for. My assumption is that it was there originally but nothing uses that range at the moment.

Sounds like it would be safe to make it go away?

Yes I think so.

I have no idea how they would have got there.
There looks to be only a couple of items that need to be changed.