Tailscale 安装与外网发布配置指南
目标:保留现有局域网地址 http://192.168.3.123:8080/,同时增加安全的远程访问;不接管普通互联网流量,不干扰本机 127.0.0.1:7897 代理。
编制日期:2026-07-31。命令按 Tailscale 1.52 之后的新 Serve/Funnel 语法编写。
目录
1. 先选访问方式 2. 当前环境与关键兼容点 3. 让本地服务同时接受回环连接 4. 安装并登录 Tailscale 5. 推荐:仅自己的设备远程访问 6. 可选:公开给任何互联网用户 7. 与本机代理稳定共存 8. 验证、开机恢复与故障排查 9. 停用与回滚1. 先选访问方式
| 方式 | 谁能访问 | 访问地址 | 建议 |
|---|---|---|---|
| Tailscale Serve | 只有登录同一 Tailscale 网络并获准的设备 | https://主机名.你的网络.ts.net/ | 默认推荐,适合家庭课程、攻略和私人材料 |
| Tailscale Funnel | 互联网上任何拿到链接的人,不需要安装 Tailscale | https://主机名.你的网络.ts.net/ | 只适合确实要公开的内容 |
*.ts.net 域名并配置 HTTPS,不需要购买域名。Funnel 不能用你家的公网 IP 代替这个域名。若只在安装了 Tailscale 的设备间使用,也能用 100.x.x.x 地址,但 Serve 的 HTTPS 域名更方便。2. 当前环境与关键兼容点
- 主机系统:Debian GNU/Linux 13。
- 网页服务:
lan-html-hub.service,当前监听192.168.3.123:8080。 - 网页目录:
/home/fatcamera/Documents/develop/webroot。 - 本机 HTTP/HTTPS 代理:
127.0.0.1:7897。 - 当前网页程序只允许本机和私有网段来源,并且只提供 GET/HEAD,已有基本收口。
127.0.0.1。现有服务只监听局域网 IP,因此要先让它同时能从 127.0.0.1:8080 访问。3. 让本地服务同时接受回环连接
以下做法把 Node 服务监听地址改为所有本机接口。现有程序仍会拒绝非本机、非局域网来源;局域网旧链接继续可用,Tailscale 也能通过回环地址转发。
3.1 创建 systemd 用户服务覆盖项
systemctl --user edit lan-html-hub.service
在编辑器中填入:
[Service]
Environment=LAN_HOST=0.0.0.0
保存后执行:
systemctl --user daemon-reload
systemctl --user restart lan-html-hub.service
systemctl --user status lan-html-hub.service --no-pager
3.2 两种路径都要通过
curl --noproxy '*' -I http://127.0.0.1:8080/
curl --noproxy '*' -I http://192.168.3.123:8080/
两条命令都应返回 HTTP/1.1 200 OK。
4. 安装并登录 Tailscale
4.1 安装
官方 Linux 安装方式:
curl -fsSL https://tailscale.com/install.sh | sh
sudo systemctl enable --now tailscaled
如果下载脚本受网络影响,可显式使用现有代理完成“下载”这一步:
HTTPS_PROXY=http://127.0.0.1:7897 \
curl -fsSL https://tailscale.com/install.sh | sh
tailscaled 的长期服务配置。4.2 用不抢路由、不改 DNS的方式登录
sudo tailscale up \
--hostname=lan-html-hub \
--accept-routes=false \
--accept-dns=false
终端会显示登录网址。用浏览器打开并登录 Tailscale 账户,然后检查:
tailscale status
tailscale ip -4
tailscale netcheck
127.0.0.1:7897 代理工作。5. 推荐:仅自己的设备远程访问(Serve)
5.1 发布网页服务
sudo tailscale serve --bg 8080
sudo tailscale serve status
命令会给出类似下面的地址:
https://lan-html-hub.你的-tailnet.ts.net/
--bg 会保存配置;主机重启或 Tailscale 重启后会自动恢复。
5.2 在 iPad、手机或外地电脑访问
- 安装官方 Tailscale App。
- 登录同一个 Tailscale 账户,或加入同一 tailnet。
- 连接 Tailscale。
- 用 Safari/Chrome 打开上面的
https://...ts.net/地址。
6. 可选:公开给任何互联网用户(Funnel)
6.1 开启 Funnel
sudo tailscale funnel --bg 8080
sudo tailscale funnel status
首次执行通常会弹出网页,要求批准 Funnel、MagicDNS 和 HTTPS。批准后会得到稳定的 https://...ts.net/ 公网链接,访问者无需安装 Tailscale。
6.2 用手机蜂窝网络验证
- 手机关闭 Wi-Fi。
- 断开手机上的 Tailscale。
- 用浏览器打开 Funnel 地址。
- 确认主页与子链接均能打开。
Funnel 目前是 Beta,只支持 HTTPS,公网监听端口仅限 443、8443、10000,并有不可自定义的带宽限制。你的后端仍是 8080,Tailscale 会在外部使用 HTTPS 443 转发,无需更改后端端口。
6.3 用完关闭
sudo tailscale funnel --https=443 off
sudo tailscale funnel status
如果只想彻底清空 Funnel 配置:
sudo tailscale funnel reset
7. 与本机代理稳定共存
7.1 保持这四条原则
- 保留现有
HTTP_PROXY/HTTPS_PROXY=http://127.0.0.1:7897,不要把它改成 Tailscale。 - Tailscale 只负责
100.64.0.0/10、fd7a:115c:a1e0::/48和*.ts.net,不启用出口节点。 - 保持
--accept-routes=false --accept-dns=false。 - 本地和 Tailscale 地址绕过 HTTP 代理,避免请求被送进 7897。
7.2 当前终端临时设置 NO_PROXY
export NO_PROXY="localhost,127.0.0.1,::1,192.168.3.123,.ts.net,100.64.0.0/10"
export no_proxy="$NO_PROXY"
验证时也可以直接使用:
curl --noproxy '*' -I https://lan-html-hub.你的-tailnet.ts.net/
7.3 如果代理软件启用了 TUN/VPN 模式
只有在代理软件使用 TUN、虚拟网卡或“全局 VPN”时,才需要在其分流规则中把以下网段设为 DIRECT/直连:
100.64.0.0/10
fd7a:115c:a1e0::/48
*.ts.net
若只是像当前主机这样通过环境变量连接 127.0.0.1:7897,通常不会与 Tailscale 的内核网络接口冲突。
8. 验证、开机恢复与故障排查
8.1 一次性检查清单
- 局域网旧地址仍能打开
curl http://127.0.0.1:8080/返回 200tailscale status显示已登录tailscale netcheck能完成检测- 外地设备可打开 Serve 地址
- 普通 Google/YouTube 流量仍按原代理工作
- 重启后网页服务与 Serve 自动恢复
8.2 常用状态命令
systemctl --user status lan-html-hub.service --no-pager
sudo systemctl status tailscaled --no-pager
tailscale status
tailscale netcheck
sudo tailscale serve status
sudo tailscale funnel status
journalctl --user -u lan-html-hub.service -n 100 --no-pager
sudo journalctl -u tailscaled -n 100 --no-pager
8.3 常见问题
| 现象 | 处理 |
|---|---|
| Serve/Funnel 显示链接,但打开是 502 | 先确认 curl --noproxy '*' http://127.0.0.1:8080/ 是否为 200;若失败,检查第 3 节的监听地址和服务日志。 |
| 登录或控制面连接失败 | 运行 tailscale netcheck;确保允许主机向外访问 TCP 443。通常不需要开放任何入站公网端口。 |
| 能连接但速度慢 | tailscale status 若显示 relay,表示正在走 DERP 中继;功能仍可用,只是速度较慢。优先保证 TCP 443,UDP 41641/3478 可用有助于直连。 |
| 开启后代理失效 | 确认没有启用 Exit Node;再次运行 sudo tailscale set --accept-routes=false --accept-dns=false,并按第 7 节设置分流。 |
| Funnel 刚启用打不开 | 公共 DNS 最多可能需要约 10 分钟传播;检查 Funnel 权限、MagicDNS、HTTPS 和 tailscale funnel status。 |
9. 停用与回滚
只关闭公开访问,保留私人 Serve
sudo tailscale funnel reset
关闭 Serve
sudo tailscale serve reset
让本机退出 Tailscale
sudo tailscale down
恢复网页服务原来的固定监听地址
再次执行下面的编辑命令,删除第 3 节加入的两行覆盖内容并保存:
systemctl --user edit lan-html-hub.service
systemctl --user daemon-reload
systemctl --user restart lan-html-hub.service
官方资料
安全建议:长期使用私人 Serve;Funnel 公开前先审查主页目录中的每个子页面。