Setup overview
- LAN1: OpenWRT router
- Subnet:
192.168.1.0/24 - Gateway:
192.168.1.1
- Subnet:
- Subnet router: OpenWRT + Tailscale client
- LAN IP:
192.168.1.50 - Installed via LuCI (System → Software)
- LAN IP:
- LAN2: Remote site (OpenWRT + Tailscale)
- Subnet:
192.168.10.0/24
- Subnet:
Tailscale configuration (subnet router)
On 192.168.1.50:
tailscale up \
--accept-dns=false \
--accept-routes \
--advertise-routes=192.168.1.0/24 \
What happens
When the subnet router comes online, Tailscale installs a routing table (table 52 on OpenWRT).
This causes all traffic for 192.168.1.0/24 to be routed through Tailscale instead of staying local.
Result:
- LAN devices still work normally outbound
- But LAN devices can no longer reach the subnet router via LAN IP
Example:
ssh user@192.168.1.50
fails
ssh user@100.x.y.z
works (Tailscale IP)
Problem
Tailscale route injection overrides local LAN routing.
Even though the device is physically on the same LAN, traffic to it gets pulled into the Tailscale routing table.
Fix
Force local LAN traffic to use the main routing table.
LuCI:
Network → Routing → IPv4 Rules
Or in /etc/config/network:
config rule
option priority ‘50’
option dest ‘192.168.1.0/24’
option lookup ‘main’
Effect
This forces traffic for 192.168.1.0/24 to stay in the main routing table instead of being affected by Tailscale’s table 52.
Result:
- LAN connectivity is restored
- Subnet router is reachable via
192.168.1.50 - Tailscale routing still works for remote access
Extra (site-to-site routing)
To complete full routing between sites:
On LAN1 router (192.168.1.1):
192.168.10.0/24 via 192.168.1.50
On LAN2 router (192.168.10.1):
192.168.1.0/24 via its local Tailscale/OpenWRT router
Result
- Tailscale handles inter-site routing
- LAN routing stays intact locally
- Devices can reach subnet routers via LAN IP and Tailscale IP
(This fix might seem obvious in hindsight, but it took months to figure out.)