No worries, you are good shape.
I would probably use the most stable internet connection ( with a public IP ) as the main Wireguard Server.
Assuming its your VPS, since normally there is built-in redundancy available 24/7 and usually decent enough throughput.
So I am talking about putting a licensed CHR on the VPS.
The CHR becomes the central peer where all others connect to.
With proper firewall rules, and ip routes, we can connect all sites via the VPS site.
Since in the very odd case where for some reason VPS is not available, I would set up a secondary wireguard at the home site as a backup.
It would be live but idling, except I can see you may end up using that to remote connect to home directly while away…
VPS SETUP basic:
/interface wireguard
add listen-port=52344 mtu=1420 name=wgServer
/interface wireguard peers
add allowed-address=172.16.0.2/32 interface=wgServer comment=“admin remote laptop” public-key=“"
add allowed-address=172.16.0.3/32 interface=wgServer comment=“admin remote smartphone/tablet” public-key="–"
add allowed-address=172.16.0.4/32,subnetA,subnetB interface=wgServer comment=“admin HOME” public-key="–"
add allowed-address=172.16.0.5/32,subnetC interface=wgServer comment=“parents” public-key="**=="
add allowed-address=172.16.0.6/32,subnetD,subnetE interface=wgServer comment=“Church” public-key="##==”
add allowed address=172.16.0.7/32 interface=wgServer comment=“church person access to something?” public-key=“@@@@”
add allowed address=172.16.0.8/32 interface=wgServer comment=“parent access to something?” public-key=“^^^^^”
/ip route
add dst-address=subnetA interface=wgServer routing-table=main
add dst-address=subnetB interface=wgServer routing-table=main
add dst-address=subnetC interface=wgServer routing-table=main
add dst-address=subnetD interface=wgServer routing-table=main
add dst-address=subnetE interface=wgServer routing-table=main
/ip address
add address=172.16.0.1/24 interface=wgServer network=172.16.0.0
/ip firewall
add chain=input action=accept comment=“wireguard handshake” dst-port=52344 protocol=udp
add chain=input action=accept comment=“admin access only” src-address-list=TRUSTED
add chain=forward action=accept comment=“server relay” in-interface=wgServer out-interface=wgServer { key rule in forward chain }
/ip firewall address-list ( static DHCP leases where applicable )
add address=subnetA-address/32 list=TRUSTED comment=“admin home remote desktop wired”
add address=subnetA-address/32 list=TRUSTED comment=“admin home remote device WIFI”
add address=subnetC-address/32 list=TRUSTED comment=“admin remote device while at parents house network”
add address=subnetD-address/32 list=TRUSTED comment=“admin remote device while using church network”
add address=172.16.0.2-172.16.0.3 list=TRUSTED comment=“remote admin access while away”
/ip interface list
add interface=wgServer list=LAN
HOME basic setup:
/interface wireguard
add listen-port=13331 mtu=1420 name=wgVPS
add listen-port=45679 mtu=1420 name=wgHome-Backup
/interface wireguard peers
add allowed-address=172.16.0.0/24,subnetC,subnetD,subnetE interface=wgVPS comment=“access to all sites”
public-key=“****” endpointaddress=VPS-endpoint endpoint-port=52344 persistent-keep-alive=45s
++++++++++++++++++++++++++++++++++++
add allowed-address=10.10.20.2/32 interface=wgHome-Backup comment=“admin remote laptop” public-key=“–"
add allowed-address=10.10.20.3/32 interface=wgHome-Backup comment=“admin remote smartphone/tablet” public-key="–”
add allowed-address=10.10.20.4/32,subnetC interface=wgHome-Backup comment=“parents” public-key=“–"
add allowed-address=10.10.0.5/32,subnetD,subnetE interface=wgHome-Backup comment=“church” public-key="==”
add allowed-address=10.10.0.6/32 interface=wgHome-Backup comment=“church person access to something?” public-key=“@@@@”
add allowed address=10.10.0.7/32 interface=wgHome-Backup comment=“parent access to something?” public-key=“^^^^^”
/ip address
add address=172.16.0.4/24 interface=wgVPS network=172.16.0.0
add address=10.10.20.1/24 interface=wgHome-Backkup network=10.10.20.0
/ip firewall
add chain=input action=accept comment=“wireguard handshake” dst-port=45679 protocol=udp
add chain=input action=accept comment=“admin access only” src-address-list=TRUSTED
add chain=forward action=accept comment=“server relay” in-interface=wgHome-Backup out-interface=wgHome-Backup { key rule in forward chain }
/ip firewall address-list ( static DHCP leases where applicable )
add address=subnetA-address/32 list=TRUSTED comment=“admin local desktop wired”
add address=subnetA-address/32 list=TRUSTED comment=“admin local device WIFI”
add address=subnetC-address/32 list=TRUSTED comment=“admin remote device while at parents house network”
add address=subnetD-address/32 list=TRUSTED comment=“admin remote device while using church network”
add address=172.16.0.2-172.16.0.3 list=TRUSTED comment=“remote admin wg access while away”
add address=10.10.20.2-10.10.20.3 list=TRUSTED comment=“backup remote admin wg access while away”
/ip route
{recursively check if routes to main VPS wireguard are available}
add check-gateway=ping dst-address=subnetC gateway=172.16.0.1 routing-table=main s=10 ts=12
add check-gateway=ping dst-address=subnetD gateway=172.16.0.1 routing-table=main s=10 ts=12
add check-gateway=ping dst-address=subnetE gateway=172.16.0.1 routing-table=main s=10 ts=12
add dst-address=172.16.0.1 gateway=wgVPS routing-table=main s=10 ts=11
add dst-address=172.16.0.1 gateway=wgVPS routing-table=main s=10 ts=11
add dst-address=172.16.0.1 gateway=wgVPS routing-table=main s=10 ts=11
add distance=2 dst-address=subnetC interface=wgHome-Backup routing-table=main
add distance=2 dst-address=subnetD interface=wgBackup-Home routing-table=main
add distance=2 dst-address=subnetE interface=wgBackup-Home routing-table=main
++++++++++++++++++
PARENTS basic setup:
/interface wireguard
add listen-port= 13131 mtu=1420 name=wgParents
add listen-port=13232 mtu=1420 name=WgBackup
/interface wireguard peers
add allowed-address=172.16.0.0/24,subnetA interface=wgParents comment=“access to Home via VPS”
public-key=“~~~" endpointaddress=VPS-endpoint endpoint-port=52344 persistent-keep-alive=45s
++++++++++++++++++++++++++++++++++++
add allowed-address=10.10.20.0/24,subnetA interface=wgParents comment=“access to Home direct”
public-key="—” endpointaddress=HOME-endpoint endpoint-port=45679 persistent-keep-alive=35s
/ip address
add address=172.16.0.5/24 interface=wgParents network=172.16.0.0
add address=10.10.20.4/24 interface=wgBackup network=10.10.20.0
/ip firewall
add chain=input action=accept comment=“admin access only” src-address-list=TRUSTED
/ip firewall address-list ( static DHCP leases where applicable )
add address=subnetA-address/32 list=TRUSTED comment=“admin remote desktop wired”
add address=subnetA-address/32 list=TRUSTED comment=“admin remote device WIFI”
add address=subnetC-address/32 list=TRUSTED comment=“admin local device while at parents house network”
add address=subnetD-address/32 list=TRUSTED comment=“admin remote device while using church network”
add address=172.16.0.2-172.16.0.3 list=TRUSTED comment=“remote admin wg access while away”
add address=10.10.20.2-10.10.20.3 list=TRUSTED comment=“backup remote admin wg access while away”
/ip route
{recursively check if routes to main VPS wireguard is available}
add check-gateway=ping dst-address=subnetA gateway=172.16.0.1 routing-table=main s=10 ts=12
add dst-address=172.16.0.1 gateway=wgVPS routing-table=main s=10 ts=11
add distance=2 dst-address=subnetA interface=wgHome-Backup routing-table=main
Now the Firewall rules get as intricate as you need them.
The admin list can be used in the forward chain to allow admin to all resources on each router as applicable.
One may have to add the individual wireguard remote users ( church rep, parent access) to servers etc…
These are separate firewall rules denoting exactly who and exactly to where at the recieving router.
On the originating router easiest simply to allow applicable subnets to enter the tunnel…