适配当前主机Debian 13网页服务 8080

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互联网上任何拿到链接的人,不需要安装 Tailscalehttps://主机名.你的网络.ts.net/只适合确实要公开的内容
本指南推荐:长期使用 Serve。只有临时给外人看时才开启 Funnel,用完立即关闭。
关于“没有域名”:Tailscale 会自动提供 *.ts.net 域名并配置 HTTPS,不需要购买域名。Funnel 不能用你家的公网 IP 代替这个域名。若只在安装了 Tailscale 的设备间使用,也能用 100.x.x.x 地址,但 Serve 的 HTTPS 域名更方便。

2. 当前环境与关键兼容点

关键点:Tailscale Serve/Funnel 的 HTTP 反向代理目标只支持本机回环地址 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

不要在路由器上把 8080 端口映射到公网,也不要启用 DMZ。Tailscale 不需要路由器端口转发。

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
这套参数不会使用出口节点,不接受其他设备发布的子网路由,也不替换系统 DNS,因此普通网页仍按原来的 127.0.0.1:7897 代理工作。
不要启用 Exit Node(出口节点)。出口节点会接管默认互联网流量,最容易与现有代理/TUN 模式发生路由和 DNS 冲突。

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、手机或外地电脑访问

  1. 安装官方 Tailscale App。
  2. 登录同一个 Tailscale 账户,或加入同一 tailnet。
  3. 连接 Tailscale。
  4. 用 Safari/Chrome 打开上面的 https://...ts.net/ 地址。
Serve 是“从外网远程访问”,但不是“公开互联网网站”。访问者必须先通过 Tailscale 身份验证。

6. 可选:公开给任何互联网用户(Funnel)

开启后主页目录及全部子链接都会公开。当前网页中心没有账号密码,不要放家庭隐私、孩子信息、未公开课件、密钥或管理页面。

6.1 开启 Funnel

sudo tailscale funnel --bg 8080
sudo tailscale funnel status

首次执行通常会弹出网页,要求批准 Funnel、MagicDNS 和 HTTPS。批准后会得到稳定的 https://...ts.net/ 公网链接,访问者无需安装 Tailscale。

6.2 用手机蜂窝网络验证

  1. 手机关闭 Wi-Fi。
  2. 断开手机上的 Tailscale。
  3. 用浏览器打开 Funnel 地址。
  4. 确认主页与子链接均能打开。

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 保持这四条原则

  1. 保留现有 HTTP_PROXY/HTTPS_PROXY=http://127.0.0.1:7897,不要把它改成 Tailscale。
  2. Tailscale 只负责 100.64.0.0/10fd7a:115c:a1e0::/48*.ts.net,不启用出口节点。
  3. 保持 --accept-routes=false --accept-dns=false
  4. 本地和 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 的内核网络接口冲突。

在 iPhone/iPad 上,某些代理 App 和 Tailscale 都会申请系统 VPN 通道,可能不能同时启用。若发生冲突,访问私人 Serve 链接时保留 Tailscale、临时关闭另一 VPN;访问公开 Funnel 链接则不需要开启 Tailscale。

8. 验证、开机恢复与故障排查

8.1 一次性检查清单

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
上述操作不会删除网页文件,也不会修改你现有的 7897 代理配置。

官方资料

安全建议:长期使用私人 Serve;Funnel 公开前先审查主页目录中的每个子页面。