自建个人服务器---内网穿透 📅 2026/8/9 7:29:35 自建个人服务器—内网穿透摘要本文系统讲解两种主流内网穿透方案——Cloudflare Tunnel与ZeroTier。前者通过加密隧道将本地 Web 服务安全发布到公网无需公网 IP 和端口转发访问端零门槛后者将多台设备组成虚拟局域网支持所有基于 IP 的协议适合远程桌面、NAS 访问等场景。文章从方案选型对比入手分别介绍两者的工作原理、优缺点、适用场景并给出完整的部署步骤与常见问题排查方法帮助读者按需选型并快速落地。 目录 常见方案说明 Cloudflare Tunnel工作原理优点缺点适用场景快速配置示例部署常见问题排查 ZeroTier 详解工作原理优点缺点适用场景快速配置示例部署常见问题排查️ 安全与合规提示提示)本文主要讲述Cloudflare Tunnel与ZeroTier两种内网穿透方案前者将本地服务安全发布到公网后者将设备组成虚拟局域网。下文将分别介绍原理、优缺点、适用场景及完整部署步骤。 常见方案说明先给结论对外发布服务选 Cloudflare Tunnel远程访问设备选 ZeroTier追求极致性能与自控选 FRP。需求场景推荐方案原因个人博客 / 网站对外发布Cloudflare Tunnel免费、自动 HTTPS、访问端零门槛远程桌面 / NAS / 文件共享ZeroTier支持所有协议P2P 直连速度快开发环境公网预览Cloudflare Tunnel配置简单临时域名即可家庭设备远程管理ZeroTier虚拟局域网安全可控高性能自建服务FRP数据完全自控性能最强针对不同的技术背景和使用场景主要有三种成熟的方案我整理了一个表格方便你对比选择方案类型代表工具优点缺点适合人群️ 自建高性能方案FRP数据走自己的服务器安全可控性能强大配置灵活。需要一台有公网IP的云服务器有成本技术门槛较高需要配置文件和命令行操作。有一定技术基础追求高性能和完全掌控的开发者。 商业便捷方案Ngrok, 花生壳开箱即用无需自己购买服务器和复杂配置提供图形化界面和固定域名。免费版通常有速度和流量限制数据经过第三方服务器存在一定隐私考量。新手希望快速、简单地实现外网访问愿意为便捷性付费的用户。 服务发布方案Cloudflare Tunnel免费、自动 HTTPS、无需公网 IP 和端口转发访问端零门槛。仅支持 HTTP/HTTPS国内访问延迟较高需要域名。个人博客、网站、API 服务对外发布开发环境公网预览。 虚拟组网方案ZeroTier将所有设备组成一个虚拟局域网就像在家里的内网一样访问安全性极高。需要在所有访问端如你的手机、办公电脑安装客户端对分享给他人访问不友好。主要是自己或少数信任的家人/朋友需要远程访问设备。注花生壳方案网络慢每次登陆还有10秒升级花生壳vip广告。本文重点讲解Cloudflare Tunnel与ZeroTier两种方案完整部署步骤见各方案章节。入客户端 | Cloudflare Tunnel工作原理你的笔记本 (cloudflared) 加密隧道 Cloudflare 边缘网络 用户访问你的域名笔记本安装cloudflared守护进程建立一条出站隧道直连 Cloudflare 全球网络在 Cloudflare 后台将域名指向该隧道外网用户通过https://你的域名.com访问优点优点说明免费且强大Cloudflare 免费套餐已包含 CDN、DDoS 防护、WAF 规则自动 HTTPS无需自己购买或配置 SSL 证书无需公网 IP任何能上网的网络都能用公司、校园网均可无端口转发不用在路由器做任何 NAT 配置访问端零门槛任何能上网的设备都能访问无需安装客户端缺点缺点说明国内延迟高Cloudflare 国内节点少且不稳定部分地区访问较慢仅支持 Web 协议无法转发 SSH、RDP、数据库等 TCP/UDP 流量数据经过第三方所有流量经 Cloudflare 服务器但全程加密需要域名拥有一个托管在 Cloudflare 的域名(非必须托管适用场景yaml✅ 个人博客 / 静态网站 ✅ 开发环境的公网预览给客户演示 ✅ 微信/企业微信/钉钉的本地开发回调 ✅ 无状态 API 服务 ❌ SSH 远程登录 ❌ 远程桌面 (RDP) ❌ Minecraft / 联机游戏 ❌ 文件共享 (SMB/NFS)快速配置示例# 1. 安装 cloudflared# macOSbrewinstallcloudflared# Linux (amd64)wgethttps://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64sudomvcloudflared-linux-amd64 /usr/local/bin/cloudflaredsudochmodx /usr/local/bin/cloudflared# 2. 登录绑定域名cloudflared tunnel login# 3. 创建隧道cloudflared tunnel create my-tunnel# 4. 配置域名解析 (config.yml)tunnel: my-tunnel credentials-file: /path/to/credentials.json ingress: - hostname: blog.yourdomain.com service: http://localhost:8080 - service: http_status:404# 5. 运行隧道cloudflared tunnel run my-tunnel部署https://blog.leihub.cn/archives/873部署前置准备在开始部署前请确保你已具备以下条件准备项说明获取方式一个域名用于对外提供访问入口阿里云、腾讯云、Namecheap 等注册Cloudflare 账号用于管理域名和隧道官网注册一台可联网的电脑运行cloudflared守护进程本机即可无需公网 IP部署步骤完整版是否准备域名和 Cloudflare 账号安装 cloudflaredcloudflared tunnel login 登录创建隧道 cloudflared tunnel create配置 config.yml 域名映射cloudflared tunnel run 启动隧道浏览器访问域名验证验证成功?✅ 部署完成排查常见问题Step 1注册域名并接入 Cloudflare在域名注册商如阿里云购买一个域名。注册 Cloudflare 账号官网注册。在 Cloudflare 控制台添加你的域名并按提示将域名的 DNS 服务器NS修改为 Cloudflare 提供的两个地址。等待 DNS 生效通常几分钟到几小时。Step 2安装 cloudflared# macOSbrewinstallcloudflared# Linux (amd64)wgethttps://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64sudomvcloudflared-linux-amd64 /usr/local/bin/cloudflaredsudochmodx /usr/local/bin/cloudflared# 验证安装cloudflared--versionStep 3登录并授权cloudflared tunnel login执行后浏览器会打开 Cloudflare 授权页面选择你的域名并点击授权即可。Step 4创建隧道cloudflared tunnel create my-tunnel创建成功后会在~/.cloudflared/目录下生成一个credentials.json文件请记住它的完整路径。Step 5配置域名映射创建配置文件~/.cloudflared/config.ymltunnel:my-tunnelcredentials-file:/home/你的用户名/.cloudflared/credentials.jsoningress:-hostname:blog.yourdomain.comservice:http://localhost:8080-service:http_status:404注意credentials-file路径必须填写你机器上的实际路径可通过ls ~/.cloudflared/查看。Step 6配置 DNS 解析cloudflared tunnel route dns my-tunnel blog.yourdomain.comStep 7启动隧道cloudflared tunnel run my-tunnel看到Registered tunnel connection日志即表示启动成功。Step 8验证访问浏览器访问https://blog.yourdomain.com如果能看到你的本地服务说明部署成功。常见问题排查问题现象可能原因解决方法cloudflared命令找不到未正确安装或 PATH 未配置重新执行安装命令或使用sudo /usr/local/bin/cloudflared绝对路径登录时浏览器无法打开网络问题或未登录 Cloudflare手动复制终端输出的 URL 到浏览器打开credentials.json路径错误配置文件路径与实际不符执行ls ~/.cloudflared/确认文件名并更新 config.yml访问域名返回 404域名未正确解析到隧道重新执行cloudflared tunnel route dns命令访问域名返回 502本地服务未启动或端口错误确认本地服务已启动且 config.yml 中的端口与本地一致国内访问速度慢Cloudflare 国内节点少可尝试使用 Cloudflare 优选 IP 工具或考虑 ZeroTier 方案隧道启动后立即退出配置错误或凭据失效查看日志cloudflared tunnel run my-tunnel --loglevel debug ZeroTier 详解工作原理text你的笔记本 (ZeroTier) ---虚拟网络层--- 你的手机 (ZeroTier) | | (虚拟IP: 10.147.x.1) (虚拟IP: 10.147.x.2) 点对点直连 (P2P) 成功打洞后不经过任何服务器ZeroTier 创建虚拟二层网络类似 VLAN每个设备获得一个虚拟 IP如10.147.x.x设备之间尝试建立 P2P 直连UDP 打洞失败时通过官方行星服务器中转ZTN优点优点说明支持所有协议TCP/UDP/ICMP 全支持就像真在同一台交换机下安全性极高流量端到端加密未经授权的设备无法接入P2P 直连速度快打洞成功后不经过中转跑满双方带宽跨平台支持完善Windows/macOS/Linux/Android/iOS/群晖/OpenWrt免费版够用25 台设备/网络个人使用绰绰有余自建中转Moon可用国内云服务器自建中转解决打洞失败问题缺点缺点说明访问端必须装客户端公司电脑不能装软件就无法使用不适合分享给他人每新增一个访客都要让他注册、加网络、审批依赖官方行星服务器初始连接需访问官方服务器国内可自建 Moon 缓解NAT 打洞可能失败对称型 NAT 环境如部分校园网/公司网可能无法直连适用场景yaml✅ 远程桌面 (RDP/VNC/TeamViewer 替代) ✅ NAS 文件访问 (SMB/WebDAV) ✅ SSH 远程登录服务器 ✅ 家庭打印机远程使用 ✅ 局域网联机游戏Minecraft、帝国时代等 ✅ 数据库远程管理 (MySQL/PostgreSQL) ✅ 个人代码仓库 (Git SSH) ❌ 给客户/外人展示的公开服务 ❌ 无法安装客户端的受限设备快速配置示例bash# 1. 安装 ZeroTier (Linux) curl -s https://install.zerotier.com | sudo bash # 2. 加入网络 sudo zerotier-cli join [你的网络ID] # 3. 在 ZeroTier 官网授权该设备 # 登录 my.zerotier.com - 找到你的网络 - 勾选 Auth # 4. 查看分配的虚拟 IP sudo zerotier-cli listnetworks # 5. 现在可以用虚拟 IP 访问了 # 例如ssh 10.147.18.3部署部署前置准备准备项说明获取方式ZeroTier 账号用于创建和管理虚拟网络官网注册需要组网的设备至少两台设备如笔记本、手机、NAS本机即可各设备安装客户端支持 Windows/macOS/Linux/Android/iOS官网下载对应版本部署步骤完整版是否注册 ZeroTier 账号创建虚拟网络获取网络 ID各设备安装客户端设备加入网络 join官网授权设备 Auth查看虚拟 IPP2P 直连成功?✅ 部署完成自建 Moon 中转Step 1注册账号并创建网络访问 ZeroTier 官网 注册账号。登录后点击Create A Network创建一个新网络。创建成功后你会看到一个Network ID16 位十六进制字符串记下它。Step 2安装客户端# Linux (Debian/Ubuntu)curl-shttps://install.zerotier.com|sudobash# macOSbrewinstallzerotier-one# Windows / Android / iOS# 从官网下载对应安装包Step 3加入网络sudozerotier-clijoin[你的网络ID]Step 4授权设备登录 my.zerotier.com。找到你的网络点击进入管理页面。在Members列表中找到刚加入的设备勾选Auth列。设备会自动获得一个虚拟 IP如10.147.x.x。Step 5验证连接# 查看本机虚拟 IPsudozerotier-cli listnetworks# 从另一台设备 ping 测试ping10.147.x.xStep 6使用虚拟 IP 访问服务# SSH 远程登录ssh用户名10.147.x.x# 访问 NAS 文件共享# 在文件管理器中输入 \\10.147.x.x\共享目录 (Windows)# 或 smb://10.147.x.x/共享目录 (macOS)常见问题排查问题现象可能原因解决方法zerotier-cli命令找不到客户端未正确安装重新执行安装命令或重启设备后重试加入网络后无法获得 IP设备未在官网授权登录 my.zerotier.com勾选该设备的Auth选项P2P 直连失败速度慢NAT 类型为对称型打洞失败自建 Moon 中转服务器或使用官方行星服务器中转设备之间无法互通防火墙拦截或未加入同一网络检查各设备防火墙确认 Network ID 一致公司网络无法连接公司防火墙屏蔽 UDP 流量尝试使用 TCP 模式zerotier-cli set [网络ID] allowTcpFallback true手机端无法加入未安装客户端或未授权安装 ZeroTier 官方 App登录后加入网络并授权最强️ 安全与合规提示数据安全使用 Cloudflare Tunnel 时所有流量经第三方服务器请勿传输敏感数据ZeroTier 流量端到端加密相对更安全。合规使用请确保你的服务内容符合当地法律法规不得用于传播违法信息、侵犯他人隐私或从事任何非法活动。账号安全妥善保管 Cloudflare 和 ZeroTier 账号密码开启两步验证2FA。访问控制ZeroTier 网络请及时审批设备加入请求移除不再使用的设备。免责声明本文仅用于技术学习与交流请合理合法使用相关工具因使用不当产生的后果由使用者自行承担。