基础配置
在 Sing-box 中集成 Tailscale 需要配置 Endpoint、DNS 和路由规则。
逻辑:
- 新建 Endpoint:类型为
tailscale,auth_key需从 Tailscale 管理后台获取。 - 处理 DNS:新建一个 tag 为
dns-tailscale的 DNS 服务器,关联到上述 Endpoint。配置 DNS 规则,仅将ts.net和100.in-addr.arpa交由该服务器处理。 - 处理路由:新建路由规则,匹配 Tailscale 域名后缀及内网 CIDR 地址,出站流量指向新建的 Tailscale Endpoint。
配置文件示例
{ "log": {}, "experimental": {}, "inbounds": [ {} ], "outbounds": [ {} ], "endpoints": [ { "type": "tailscale", "tag": "tailscale-in", // auth_key 需在 Tailscale 后台生成 "auth_key": "tskey-auth-..." } ], "dns": { "servers": [ { "tag": "dns-tailscale", "type": "tailscale", "endpoint": "tailscale-in" } ], "rules": [ { "domain_suffix": [ "ts.net", "100.in-addr.arpa" ], "server": "dns-tailscale" } ] }, "route": { "rules": [ { "domain_suffix": [ "ts.net", "100.in-addr.arpa" ], "outbound": "tailscale-in" }, { "ip_cidr": [ "100.64.0.0/10" ], "outbound": "tailscale-in" } ] }}配置完成后,可通过 Tailnet 地址或 Tailscale IP 访问内网资源。使用设备名称无后缀这种sing-box似乎实现不了。
自定义域名
Tailnet 原生地址难以记忆,用 Cloudflare API 将解析记录同步至自定义域名
https://github.com/marc1307/tailscale-cloudflare-dnssync
API申请:
https://dash.cloudflare.com/profile/api-tokens
https://login.tailscale.com/admin/settings/authkeys
Docker Compose:
services: tailscale-dns-sync: image: ghcr.io/marc1307/tailscale-cloudflare-dnssync:latest container_name: tailscale-dns-sync restart: unless-stopped environment: - mode=tailscale # 目标主域名 - cf_domain=example.com # 子域名设置,例如填 home 则生成 device.home.example.com - cf_sub=home - prefix= - postfix= # Tailscale 控制台显示的 Tailnet 地址 - ts_tailnet=tail03afd1.ts.net # 具备 Zone DNS Edit 权限的 CF Token - cf_key=YOUR_CF_KEY # Tailscale API Key - ts_key=YOUR_TS_KEY适配自定义域名的 Sing-box 配置
使用自定义域名后,需在 Sing-box 规则中添加自定义域名。
主要调整:
- Route 规则:将自定义域名加入路由匹配列表,强制走
tailscale-in出站。 - DNS 规则:自定义域名(如
home.example.com)的 A 记录托管在 Cloudflare(公网),使用Local-DNS(本地/公网 DNS)进行查询。
调整后的配置片段:
{ "route": { "rules": [ { "domain_suffix": [ "ts.net", "100.in-addr.arpa", "你的域名" // 新增:将自定义域名流量导入 Tailscale 接口 ], "outbound": "tailscale-in" }, { "ip_cidr": [ "100.64.0.0/10" ], "outbound": "tailscale-in" } ] }, "dns": { "servers": [ // ... 其他 DNS 服务器配置 ], "rules": [ { "domain_suffix": [ "ts.net", "100.in-addr.arpa" ], "server": "dns-tailscale" }, { "domain_suffix": [ "你的域名" // 新增:自定义域名走本地 DNS 查询公网 A 记录 ], "server": "Local-DNS" } ] }}和ai折腾了一下午,终于是能用了,这样在手机上访问内网也不需要关了代理再打开tailscale了
评论 (0)