ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ZeroTier异地组网从零到一:无公网IP也能轻松实现虚拟局域网互访

ZeroTier异地组网从零到一:无公网IP也能轻松实现虚拟局域网互访 前阵子帮一个朋友搞定家里NAS异地访问的问题折腾了半个多小时发现网上关于ZeroTier的教程要么只讲安装不讲配置要么通篇原理看得人犯困真正能把下载、装好、能连、能用这条链路讲清楚的很少。正好我自己过去几年用这套东西踩过不少坑流程也反复验证过很多次干脆整理一篇从零到一的实操教程出来把ZeroTier连接和简单配置这件事一次讲透。ZeroTier本质上是一套基于SDN软件定义网络思路的虚拟局域网组网工具核心作用是把分散在不同物理位置、不同网络环境下的设备通过加密的虚拟链路组成一个虚拟局域网让它们彼此访问的时候就像坐在同一台路由器下面一样。它解决的问题很直接没有公网IP、没有端口映射权限、设备分布在不同网络也能安全地互相直连。适合三类人看手上有NAS想出门也能访问的需要远程连回办公室电脑的以及有多台服务器或设备想统一互访的。1. 内容整体设计与思路拆解1.1 什么场景下你确实需要异地组网先说最典型的场景。很多人以为远程访问就是打开某个软件连一下但实际上大多数家用宽带根本没有公网IP路由器上所谓的端口映射在这种网络下效果非常差就算映射成功把某个内网端口暴露到公网也等于给攻击者开门。我自己就见过有人把NAS的Web管理端口直接映射出去两周后被暴力破解到失控这类教训太常见了。真正可靠的做法是让两台设备各自主动连接到同一个虚拟网络里再由它们之间建立加密通道。这样一来不需要公网IP双方都是主动出站连接对NAT环境友好不需要在路由器上开放任何端口安全性高一个量级设备之间是点到点直连带宽和延迟取决于双方网络质量而不是依赖某个中间服务器这就是零信任网络互访的基本思路也是ZeroTier这类虚拟组网工具的价值所在。1.2 为什么选ZeroTier而不是其他方案能组网的工具其实不少但选型时我建议把简单、免费额度、平台覆盖这三个维度摆到前面。拿几种常见方案对比一下方案优点缺点路由器端口映射配置简单需要公网IP端口暴露风险高运营商封80后基本没法用云服务器自建中继服务可控性强要维护服务端按流量付费延迟高成本不低集中式远程控制软件上手快免费版限速、限设备和会话时长ZeroTier免公网IP、P2P直连、免费版25台设备、全平台首次配置需要理解虚拟网络概念部分运营商NAT严格时直连率稍低第一次用ZeroTier时我最大的感受是它把网络配置这件事的复杂度从路由器面板搬到了网页后台而且设备一旦授权完后面几乎不需要再管。这种控制平面和数据平面分离的设计对个人和小团队来说非常友好这也是我最终把它作为主力组网方案的原因。1.3 ZeroTier的核心原理用大白话拆一遍不用被SDN、虚拟平面这些词吓到理解ZeroTier只需抓住三个点。第一每台设备装上客户端后会生成一个全球唯一的设备ID同时多出一块虚拟网卡。这块网卡在系统看来就像普通网卡一样有IP地址、有MAC地址但它里面的数据不是走实体网线而是被加密封装后通过设备的真实网络发送出去。第二管理页面创建的网络会分配一个16位十六进制的网络ID所有加入同一个网络ID的设备相当于被拉进了同一个虚拟二层网络。你可以理解成大家进了一个微信群群里每个成员都有一个群名片也就是分配好的虚拟IP。第三设备之间优先尝试直连。ZeroTier会在后台自动打洞如果你的家庭宽带NAT类型允许两台设备可以建立加密P2P连接速度很快如果直连打洞失败流量会经官方根服务器中继转发连接仍然可用但延迟和带宽会受中继影响。这套机制用一句话总结就是控制走网页数据走P2P直连连不上就用中继兜底。理解了这三层后面配置遇到问题就能顺着思路排查。2. 部署准备与全平台安装2.1 准备工作账号注册与网络规划动手之前先花一分钟做两件事。第一件事是注册ZeroTier账号直接去官网注册即可免费计划包含25台设备对个人和家庭场景完全够用。注册之后用来登录管理后台创建网络后续所有配置都在网页上完成。第二件事是提前想好虚拟网络的网段。ZeroTier默认的网络段通常是10.147.20.x如果你没有特殊要求直接用默认网段就行。但如果你有多台设备、以后还可能加入更多设备建议在创建网络前大概规划一下IP分配表比如谁用10.147.20.10、谁用10.147.20.11避免后面IP冲突。规划得当的话后续排查问题会比别人省一半时间。2.2 Windows端安装与基本启停Windows安装没什么难度去官网下载对应系统的MSI安装包双击一路Next装完即可。安装完成后系统托盘会出现ZeroTier图标右键可以看到菜单项。有几个细节值得注意。Windows安装完成后虚拟网卡默认是自动启动的但有些系统的防火墙会拦截ZeroTier的入站流量安装后如果发现ping不通其他设备第一件事就是检查防火墙是否放行了ZeroTier主程序和虚拟网卡。做法是在Windows安全中心的防火墙设置里确认允许应用通过防火墙列表中ZeroTier条目处于勾选状态。另一个细节是Windows服务状态。打开任务管理器可以看到ZeroTier One服务默认是自动运行。如果你长时间不用可以右键托盘图标选择退出需要时再启动能省一部分后台资源占用。2.3 Linux与macOS安装Linux安装最简单的方式是使用官方安装脚本在终端执行curl -s https://install.zerotier.com | sudo bash脚本会自动添加软件源并安装好服务。安装后建议先执行sudo systemctl enable zerotier-one让它开机自启再执行sudo systemctl start zerotier-one启动服务。之后加入网络用命令sudo zerotier-cli join 你的网络ID查看状态用sudo zerotier-cli status sudo zerotier-cli listnetworksmacOS同样支持可以在官网下载pkg安装包也可以用Homebrewbrew install zerotier-onebrew安装后需要通过brew services start zerotier-one启动服务。无论哪种系统装完的验证方式都一样先看后台设备列表是否出现这台设备再ping虚拟IP确认连通。2.4 手机端与移动设备安装ZeroTier在iOS和Android上都有官方客户端应用商店直接搜索ZeroTier就能找到。安装后打开App登录账号点击加号输入网络ID即可加入。移动端有个使用习惯想提醒一下手机端不是所有时候都需要保持连接。ZeroTier客户端在后台会持续维护虚拟网络通道对电池有一定消耗如果只是临时访问NAS或远程桌面建议用完就退出或关闭连接需要常用的话再考虑保持连接并开启系统省电白名单。3. 核心配置创建网络、加入授权、固定IP3.1 创建你的第一个虚拟网络打开ZeroTier管理后台my.zerotier.com登录后点击Create Network按钮系统会生成一个以a或b开头、共16位的网络ID这个ID就是你虚拟网络的唯一标识。创建完成后点击网络名进入详情页目前网络处于私有状态意味着设备必须被授权才能接入这一点默认设置很好不用改。页面上的Network ID就是后续要填到客户端的那个ID复制好备用。这里有一点要强调网络ID不是密码它更像一个群号知道群号的人可以申请加入但进不进得来由管理员在后台审批。所以分享网络ID给朋友或同事时不用太紧张只要后续没有勾选授权他们始终进不来。3.2 让设备加入网络并完成授权在每台需要组网的设备上执行加入操作。Windows和手机端在客户端界面输入网络IDLinux/macOS使用之前提到的zerotier-cli join命令。加入后刷新管理后台的Members列表可以看到新设备以ONLINE/OFFLINE的状态出现此时设备ID是那串20位字符对应的是具体哪台设备建议认清楚再操作。接下来就是整个配置里最关键的步骤在Members列表中找到这台设备把Auth?列的勾选框打上勾。没有勾选的设备只显示在列表里实际上无法访问虚拟网络内任何资源。这一步漏掉后面会反复出现设备在线但连不通的诡异情况其实原因就这么简单。勾选授权后等待10到30秒设备就会获得虚拟网络分配的IP。刚加入的网络通常在Managed IPs列能看到一条分配记录比如10.147.20.2这个IP就是以后访问这台设备的入口。3.3 固定IP分配与几种分配方式的区别ZeroTier后台成员列表里的Managed IPs列有两种工作方式。第一种是自动分配系统会从网络预留的IP池里随机分配一个IP设备每次加入都可能会变化。对于偶尔访问的场景问题不大但如果要长期固定访问某台设备还是建议用静态分配。第二种是手动指定点击成员行编辑按钮在Managed IPs区域填一个手动指定的IP保存后设备会优先使用这个IP。比如我可以把NAS固定成10.147.20.50把办公电脑固定成10.147.20.60这样以后写连接配置就非常稳定。建议一上手就把可能长期使用的设备手动分配IP。理由很简单ZeroTier的IP一旦固定下来你在路由器、SMB共享、远程桌面、脚本里都能直接引用不会因为网络重建导致全局配置失效。另外你还可以顺便在后台顶部给网络设置一个范围更清晰的IP段比如10.147.25.0/24一样的道理提前规划比事后补救省事太多。3.4 快速验证连通性第一步验证看虚拟网卡状态。Windows下命令行执行ipconfig /allLinux下执行ip addr能看到类似ZT字样的虚拟网卡并且有对应IP地址说明客户端工作正常。第二步验证设备间连通执行ping 对方虚拟IP。能ping通说明二层和三层的通路都已经打通。ping不通也不要慌先返回管理后台确认对方设备是否已授权、是否在线。第三步是真正的能用验证尝试直接访问服务。比如NAS上开了Samba或WebDAV用虚拟IP在文件管理器里访问比如想远程桌面直接用虚拟IP连接。只要服务本身配置正确这一步通过就说明整个组网链路已完全打通。建议每加入一台新设备都按这个顺序走一遍。很多人说ZeroTier连不上其实绝大多数卡在没有勾选授权或者ping通了但服务没开这两个环节前者属于组网环节后者属于服务环节要区分开。4. 落地实战三个常见场景的配置参考4.1 远程访问家里NAS这是最常见的需求也是我最初组网的理由。假设家里的NAS在本地局域网的真实IP是192.168.1.100系统是群晖或威联通先在NAS上安装ZeroTier客户端并加入网络到管理后台完成授权并固定IP为10.147.20.50。配置完成后出门在外用笔记本或手机通过ZeroTier访问NAS的问法就变成不填192.168.1.100改填10.147.20.50。SMB路径、DS file、WebDAV地址、甚至跑docker的URL全部换成这个虚拟IP就行。有一个点提醒一下NAS上的服务如果默认只监听局域网网段建议检查服务端防火墙规则是否放行ZeroTier虚拟网卡对应的网段。群晖的防火墙如果开了默认只放行局域网你需要把10.147.20.0/24加入允许列表否则虚拟IP到了NAS门口也会被拦下来。4.2 远程桌面连接办公电脑这个场景对带宽和延迟特别敏感。Windows的远程桌面RDP在虚拟局域网里跑得相当流畅只要办公室电脑的ZeroTier在线家里笔记本连过去就能获得接近局域网内操作的感觉。配置上没什么特殊工作电脑装上客户端、加入网络、授权即可。需要留意的是Windows远程桌面服务本身要开启右键此电脑进入属性勾选允许远程桌面连接。如果你连接的时候提示内部错误多数是Windows防火墙没有放行3389端口到ZeroTier虚拟网卡在防火墙高级设置里放行对应端口即可。如果人在外面想用手机临时远程操作一下电脑也可以用ZeroTier官方的App连上后在手机远程桌面客户端里填电脑的虚拟IP一样能连。注意屏幕键盘操作不如电脑方便应急够用。4.3 多设备跨区域互访与共享第三个场景是真正把ZeroTier的优势发挥出来家里一台NAS、工作室一台台式机、笔记本、手机还有一台云服务器全部加入同一个虚拟网络。加入后几台设备之间可以自由互访。手机往家里NAS传文件、笔记本读取云服务器上的Git仓库、台式机直接SMB连笔记本共享目录路径里全部用虚拟IP。整个过程不需要在各自路由器上做任何端口映射也不需要申请公网IP。这个场景里我建议多做一步统一各设备固定IP并按类型划分。我的习惯是NAS类设备用10.147.20.100~110服务器用10.147.20.120~130电脑终端用10.147.20.50~80。这样数字一出现就能知道是哪种设备排查问题会快很多。5. 常见问题与排查技巧实录5.1 设备一直显示离线后台Members列表里设备状态列有ONLINE和OFFLINE两种。显示离线时先到装客户端的那台机器上看服务是否正常运行。Windows看托盘图标Linux执行sudo zerotier-cli status如果返回200 info ... ONLINE说明服务正常。服务没问题但后台仍离线接下来检查出站网络。ZeroTier需要一个出站的UDP通道如果你在办公网络或某些企业网络里UDP出站可能被限制。最直接的排查办法是换一个网络环境试试比如用手机热点连一下如果上线了说明原网络对UDP不友好这种一般只能换网络环境或者后续考虑投入部署自建中继服务的方案。5.2 设备在线但ping不通这个问题出现的频率最高原因就几类按优先级排查。第一看后台是否勾选了Auth?。没勾选的话设备虽然显示在线但逻辑上还没有被拉进虚拟网络。第二看两台设备是否处于同一个网络ID下有时候复制ID手滑多了位或少了位两台设备其实在不同网络里。第三看防火墙是否拦截了虚拟网卡上的通信临时把防火墙关掉测试一下就能确认但记得测试完重新开启。第四类原因是IP冲突数量不多但很隐蔽。如果网络里有两台设备都拿到了同一个虚拟IP客户端会正常在线但互访时通时不通或者只有一台能通。检查方式是在后台Members列表里看有没有重复的Managed IPs有就改掉其中一个。5.3 网络时通时不通延迟忽高忽低这类问题大概率跟直连失败走了中继有关。ZeroTier在直连失败时会自动通过官方根服务器中继流量中继模式下延迟和丢包都比较明显视频或远程桌面能感觉到卡顿。想确认当前连接路径Linux下可以执行sudo zerotier-cli peers输出里会列出各设备的链路类型DIRECT表示直连RELAY表示中继。如果关键设备之间一直是RELAY说明UDP打洞没成功。通常与所在网络的NAT类型有关比如对称型NAT环境直连成功率就低。提升直连率有几个技巧尽量让设备使用同一运营商网络或者一方在相对宽松的家庭宽带环境在Windows和Linux上确保出站UDP端口没有被本地防火墙阻断另外ZeroTier的管理后台默认允许所有健康网络流量默认的Flow Rules一般不用改不要为了优化去乱删默认规则反而容易把数据面搞坏。5.4 移动端耗电与流量异常手机端加入ZeroTier后如果一直保持连接虚拟网络里如果有广播或多播流量手机为维护通道会产生额外的耗电和数据流量。这在局域网传输大文件时更明显。日常使用建议是不访问时随手断开客户端连接。iOS端在控制中心或App里关闭连接即可Android端在App主界面切换开关。如果确实需要长期挂在后台建议在系统设置里允许ZeroTier的后台运行防止长时间待机后被系统杀掉反而出现手机在线但连不通的假象。5.5 安全与权限管理提醒把设备接入同一个虚拟网络等同于将它们放入了同一台交换机里安全性必须重视。三个习惯建议从一开始就养成一是不要在公开场合分享你的网络ID和后台地址避免陌生人申请加入二是定期登录后台检查Members列表发现不认识的设备立刻取消授权三是给网络开启私有网络模式默认就是不要图方便改成公开网络。另外ZeroTier后台有Flow Rules这个高级功能新手建议保持默认。默认规则是允许所有成员互访对大多数个人和团队场景足够。等理解了ACL模型后再考虑做隔离限制不要一上来就改规则改错了容易把所有设备都断开排查起来很痛苦。6. 个人经验小结与进阶方向这套ZeroTier连接和简单配置的流程我反反复复用下来最大的体会是网络组网这件事配置越简单越稳定。新手阶段只要把安装客户端、加入网络、后台勾选授权、固定IP这四步做好90%的日常需求都能解决完全不需要碰复杂路由和流规则。最后再分享两个实操小技巧。第一如果在管理后台改了IP分配或授权状态本地网络偶尔不会立即刷新可以在Windows上禁用再启用虚拟网卡或者在Linux上执行sudo zerotier-cli leave 网络ID再重新加入能强制触发同步。第二如果你的使用场景确实有大量数据长期互传而运营商NAT又比较严格导致中继居多可以考虑后续研究自建根服务器Moon来优化转发路径但那是进阶话题建议先把基础的连接、授权、固定IP、排查顺手了再说。工具永远是为业务服务的组网的最终目标是让远程访问像本地操作一样自然。把这套基础流程跑通你会发现异地访NAS、远程连电脑这种以前折腾半天的事其实几步就能搞定。
返回列表