I waited for someone to report it but nobody seemed to care!
Before:
dhcp.@dnsmasq[0].domain='lan'
After turn on Tailscale:
dhcp.@dnsmasq[0].domain='tail000.ts.net lan'
-or-'ts.net lan'
Result:
- The router sends "
tail000.ts.net lan
" asoption 15
but this option allows only a single domain. - This also applies if the client requested
option 119
inoption 55
of the request. And no matter whetheroption 119
is requested,option 15
must be a single domain.
- Therefore, DHCP clients make queries like "
hostname.tail000.ts.net lan
" which violates the spec
- Both domain query(like "
hostname.lan
") and MagicDNS would fail
Workaround:
- To use
somedomain
for LAN andguestdomain
for Guest network:
uci add_list dhcp.lan.dhcp_option='15,somedomain'
uci add_list dhcp.guest.dhcp_option='15,guestdomain'
uci commit
- To use MagicDNS only on the LAN:
uci add_list dhcp.lan.dhcp_option='15,tail000.ts.net'
uci commit
Solutions:
(From short thoughts)
-
Give a choice on
tailscaleview
to keep the domain as is or change totail000.ts.net
(Not the best but may an efficient and effective solution) -
Change the domain to
tail000.ts.net
unconditionally
(May problematic for someone, and actually it's already being problematic due to unable to resolve "hostname.lan
") -
Keep the domain as is and notify that MagicDNS won't work
(May inconvenient for someone, but nothing is "more" inconvenient since it never worked anyway) -
Keep the domain as is and make the local resolver queries
hostname.tail000.ts.net.
whenhostname.lan.
is an NXDOMAIN
(Doubt it's practically feasible enough) -
Send both "
tail000.ts.net
" and original one byoption 119
, but still one of 1-4 is needed as fallback
(Doubt this is too)