What it does

One SSID, anywhere in the world — you land on your own home LAN.

One SSID, everywhere

Join AnchorPoint Home Network on your laptop or phone and you are on your home network — same DNS, same exit IP, same geolocation.

Firewall-friendly

The tunnel runs over UDP/443, indistinguishable from HTTPS. Hotel, airport and corporate firewalls that block "real" VPN ports still let it out.

Automatic uplink failover

Wired LAN if present, else venue Wi-Fi, else your phone hotspot. Priority-based, self-healing, no manual switching.

Self-hosted & open

Home end is a plain FRITZ!Box or any Linux box. No cloud VPN provider, no subscription. Every command is on GitHub under MIT.

Two networks, one tunnel

Keep home (the exit point) and travel (where the MikroTik is) separate — everything else follows.

TRAVEL NETWORKHotel · café · airport · client site Laptop192.168.20.x Phone / TV192.168.20.x MikroTik hAP ax2WireGuard clientSSID: AnchorPoint Home NetworkLAN 192.168.20.1/24 UPLINK — best available1 · Wired LAN (ether1)2 · Venue Wi-Fi → 3 · Phone hotspot (wifi2) INTERNET WireGuard tunnel · UDP 443 HOME NETWORKYour house / office — the EXIT POINT The whole internetreached as if you were at home FRITZ!Box / LinuxWireGuard server · listens UDP 443DDNS hostnameTunnel 10.0.80.1/24 Home internet lineYour home IP · your home DNS

Travel devices sit on 192.168.20.0/24, tunnel over UDP 443 to the home WireGuard server (10.0.80.1), and exit onto the home internet line.

Home networkTravel network
WhereYour house / officeHotel, café, airport, client site
HardwareFRITZ!Box or Linux + WireGuard serverMikroTik hAP ax2 — WireGuard client
RoleExit point — traffic reaches the internet hereEntry point — collects your devices
WireGuardListens on UDP 443Dials out to home on UDP 443
Subnet10.0.80.0/24 (tunnel), server 10.0.80.1192.168.20.0/24, gateway 192.168.20.1

Prerequisite: a home WireGuard server

AnchorPoint consumes a WireGuard server — it does not create one. Build the home end first.

The home network is the exit point. You need a WireGuard server running at home before the travel router has anything to dial into. The easiest path is a FRITZ!Box (FRITZ!OS 7.50+ has WireGuard built in); any Linux host works too.

AFRITZ!Box WireGuard server

  1. Open http://fritz.boxInternet → Permit Access → VPN (WireGuard)Add connection.
  2. Choose the custom / "specific application" option (not the guided MyFRITZ!-app one) so you can export a raw config.
  3. Name it anchorpoint-travel-router. The box generates a key pair and a client config — download / copy it.
  4. Set the public-facing listener to UDP 443 so client-side firewalls treat it as HTTPS. If the FRITZ!Box sits behind another modem, add a port forward UDP 443 → FRITZ!Box there.
  5. Set up DDNS so the travel router always finds home: Internet → MyFRITZ!-Account gives a free xxxx.myfritz.net name, or use Internet → Permit Access → DynDNS for your own provider.

Verify before you leave home. Import the client config into the WireGuard phone app over mobile data and connect, then open ifconfig.me. It must show your home IP — that proves home is the exit point.

Exported home client config (redacted)
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address    = 10.0.80.3/24
DNS        = 10.0.80.1

[Peer]
PublicKey           = <SERVER_PUBLIC_KEY>
Endpoint            = home.example.myfritz.net:443
AllowedIPs          = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

BLinux WireGuard server (alternative)

Prefer a Raspberry Pi / mini-PC / VPS? Run WireGuard on ListenPort = 443, masquerade the tunnel out to the internet, forward UDP 443 on the router in front of it, and add DDNS. Full server snippet is in the repo at config/wireguard-client.conf.example.

Travel router: MikroTik hAP ax2

Configure in WinBox → New Terminal. Paste in order; replace every <PLACEHOLDER>.

1Time & timezone (WireGuard needs a correct clock)
/system/ntp/client/set enabled=yes
/system/ntp/client/servers/add address=pool.ntp.org
/system/clock/set time-zone-name=Europe/Berlin
2Type in the WireGuard client config
/interface/wireguard/wg-import config-string="
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address    = 10.0.80.3/24
DNS        = 10.0.80.1

[Peer]
PublicKey           = <SERVER_PUBLIC_KEY>
Endpoint            = home.example.myfritz.net:443
AllowedIPs          = 0.0.0.0/0,::/0
PersistentKeepalive = 25
"

The import creates interface wg1. AllowedIPs = 0.0.0.0/0 is a full tunnel — that is what makes home the exit point. Endpoint … :443 dials out on the HTTPS port so venue firewalls allow it.

3Travel LAN 192.168.20.0/24, routed through the tunnel
# dedicated VPN bridge on ether2
/interface bridge port remove [find interface=ether2]
/interface bridge add name=bridge-vpn
/interface bridge port add bridge=bridge-vpn interface=ether2
/ip address add address=192.168.20.1/24 interface=bridge-vpn

# policy route: whole travel LAN exits via the tunnel
/routing table add name=to-vpn fib
/ip route add dst-address=0.0.0.0/0 gateway=wg1 routing-table=to-vpn
/routing rule add src-address=192.168.20.0/24 action=lookup-only-in-table table=to-vpn
/ip firewall nat add action=masquerade chain=srcnat out-interface=wg1

# DHCP for your devices, DNS pointed at home (no DNS leak)
/ip pool add name=vpn-pool ranges=192.168.20.10-192.168.20.100
/ip dhcp-server add address-pool=vpn-pool interface=bridge-vpn name=dhcp-vpn
/ip dhcp-server network add address=192.168.20.0/24 dns-server=10.0.80.1 gateway=192.168.20.1
4MTU / MSS — prevents "connects but nothing loads"
/interface wireguard set wg1 mtu=1412
/ip firewall mangle add action=change-mss chain=forward new-mss=1280 out-interface=wg1 protocol=tcp tcp-flags=syn tcp-mss=1281-65535
/ip firewall mangle add action=change-mss chain=forward new-mss=1280 in-interface=wg1  protocol=tcp tcp-flags=syn tcp-mss=1281-65535
5Broadcast the "AnchorPoint Home Network" SSID
/interface/wifi/add name=wifi-vpn-5ghz master-interface=wifi1 \
    configuration.ssid="AnchorPoint Home Network" \
    security.passphrase="<HOME_NETWORK_PASSWORD>" \
    security.authentication-types=wpa2-psk,wpa3-psk disabled=no
/interface/bridge/port add bridge=bridge-vpn interface=wifi-vpn-5ghz

The 5 GHz radio (wifi1) broadcasts your home network. The 2.4 GHz radio (wifi2) is reserved as the uplink radio for venue Wi-Fi / hotspot below. (Use both radios for the home SSID only when your uplink is the wired ether1 port.)

The router keeps the highest-priority uplink that has working internet — and heals itself.

Uplink priority & failover The router keeps the highest-priority uplink that has working internet. 1Wired LANether1 · route distance 1RJ45 wall port / desk switchHighest priority — always wins if plugged in 2Venue Wi-Fiwifi2 station · distance 10Hotel / café / airport SSID 3Phone hotspotwifi2 station · fallbackYour phone's personal hotspot if no cableif Wi-Fi dead How it decides ether1 carries the route at distance 1; wifi2 at distance 10. RouterOS always uses the lowest-distance uplink that has areachable gateway — so a plugged-in cable instantly wins. check-gateway=ping drops ether1 the moment the cable isunplugged, falling back to wireless automatically. WAN-Watchdog pings 8.8.8.8 every 30 s. If the current wirelessuplink is dead it flips wifi2 to the other profile. Probe-Venue runs every 15 min to climb back to venue Wi-Fi,so you stop burning phone data as soon as it recovers. Self-healing · no manual switching needed

Priority: wired LAN (ether1) → venue Wi-Fi (wifi2) → phone hotspot (wifi2). Wired always wins when a cable is present.

1Turn wifi2 into a WAN station (uplink radio)
/interface/bridge/port/remove [find interface=wifi2]
/interface/list/member/add interface=wifi2 list=WAN
/interface/wifi/unset wifi2 configuration.mode
/interface/wifi/unset wifi2 configuration.ssid
/interface/wifi/unset wifi2 security.authentication-types
/interface/wifi/unset wifi2 security.passphrase
/interface/wifi/set wifi2 security.ft=no
/interface/wifi/set wifi2 security.ft-over-ds=no
2Type in the venue Wi-Fi SSID + password
/interface wifi security add name=wifi-sec-venue \
    authentication-types=wpa2-psk,wpa3-psk passphrase="<VENUE_WIFI_PASSWORD>"
/interface wifi configuration add name=wifi-cfg-venue mode=station \
    ssid="<VENUE_WIFI_SSID>" security=wifi-sec-venue disabled=no datapath.bridge=none
3Type in the phone hotspot SSID + password
/interface wifi security add name=wifi-sec-hotspot \
    authentication-types=wpa2-psk,wpa3-psk passphrase="<PHONE_HOTSPOT_PASSWORD>"
/interface wifi configuration add name=wifi-cfg-hotspot mode=station \
    ssid="<PHONE_HOTSPOT_SSID>" security=wifi-sec-hotspot disabled=no datapath.bridge=none
4Start on venue Wi-Fi (distance 10); keep wired ether1 top priority (distance 1)
/interface/wifi set wifi2 configuration=wifi-cfg-venue
/ip/dhcp-client/add interface=wifi2 disabled=no default-route-distance=10 comment="WiFi-WAN-Uplink"
/ip/dhcp-client/set [find interface=ether1] check-gateway=ping

The failover scripts (Switch-To-Venue, Switch-To-Hotspot), the WAN-Watchdog netwatch and the 15-minute Probe-Venue scheduler are in the repo file config/mikrotik-uplink-failover.rsc. To change hotels: /interface wifi configuration set wifi-cfg-venue ssid="<NEW_SSID>" then /system/script/run Switch-To-Venue.

Ports used — home vs. travel

Home exposes exactly one inbound port; travel needs exactly one outbound port.

Home network (WireGuard server — exit point)

PortProtoDirectionPurpose
443UDPInbound (internet → server)WireGuard listener — port-forward this to the server. The only inbound port. Looks like HTTPS so client firewalls allow it.
53UDP/TCPInternalDNS resolver (10.0.80.1) that tunnel clients use. Stays on the LAN.
123UDPOutboundNTP time sync.
DDNSOutboundHostname (e.g. myfritz.net) tracking the changing home IP.

Travel network (MikroTik hAP ax2 — client)

PortProtoDirectionPurpose
443UDPOutbound (router → home)The only port the tunnel needs. Dials home.example.myfritz.net:443. UDP/443 survives restrictive venue/corporate firewalls.
67 / 68UDPBothDHCP — client on the uplinks (ether1, wifi2); server on bridge-vpn handing out 192.168.20.x.
53UDP/TCPInternal → tunnelDNS from your devices, forwarded to home's resolver. Does not leak to the venue.
123UDPOutboundNTP — correct time is mandatory or the WireGuard handshake fails.

In one line: home opens only UDP/443 inbound; travel needs only UDP/443 outbound. Both 10.0.80.0/24 (tunnel) and 192.168.20.0/24 (travel LAN) stay private and are never reachable from the venue.