← 返回博客

2026年软路由异地组网完全指南:ZeroTier、Tailscale、WireGuard实战(从安装配置到异地访问内网设备)

📌 一分钟总结

软路由异地组网实战指南:ZeroTier、Tailscale、WireGuard、frp四种方案对比与OpenWrt配置,异地访问NAS、远程办公、多地点组网一篇搞定。

出差在外想连回家里 NAS 拷文件,人在办公室想访问公司内网的 ERP,父母家、自己家、工作室三地想把设备连成一张网——这些需求有一个共同的答案:异地组网。把分布在不同地理位置的设备,通过隧道技术组成一张逻辑上的「虚拟局域网」,让它们像在同一个路由器下一样互相访问,这就是异地组网的核心价值。

很多朋友一开始会把异地组网和科学上网搞混。其实两者是不同层面的东西:科学上网解决的是「访问境外服务」的问题,异地组网解决的是「访问自己设备」的问题。但在软路由上,两者经常要共存——你的 OpenWrt 软路由既当科学上网出口,又想当异地组网的接入点,这就需要在配置上做好协调。无论组网还是出口,底层网络连接的稳定性都是前提,这也是我推荐在软路由上先保证一条稳定的出口线路(比如自由猫这类 IEPL 专线机场)再折腾组网的原因——组网协调服务器大多在境外,出口不稳会直接影响组网隧道的建立和维护。

一、异地组网到底解决什么问题

先明确需求边界。异地组网最常见的几类场景:

1. 异地访问家庭内网设备。家里有 NAS、摄像头、打印机、智能家居网关,出差或上班时想访问它们。公网 IP 被运营商收回后,直接端口映射越来越难,组网是更稳的方案。

2. 多地点办公网络互联。工作室、家里、客户现场三个地点,希望像在同一个局域网里一样共享文件服务器、打印机和内部系统。这本质上是轻量级的 SD-WAN。

3. 远程运维自己的服务器和设备。自建了 VPS 或家里有软路由,需要随时 SSH 进去管理。组网后 VPS 和软路由都在同一张虚拟网里,运维不再依赖公网 IP 和端口暴露。

4. 跨国场景的双向访问。人在国外访问国内内网,或者跨境电商团队需要稳定的多地点协同。

注意区分:异地组网和局域网内 Mesh 组网不是一回事。Mesh 是解决「家里 Wi-Fi 覆盖」的问题,异地组网是解决「跨地域设备互联」的问题,两者在拓扑和协议上完全不同。想先把家里基础网络打牢的,可以参考家庭网络改造指南里光猫桥接、Mesh 组网的完整做法。

二、四种主流方案全景对比

软路由上可用的异地组网方案,按实现原理可以分成四大类:P2P 虚拟局域网(ZeroTier)、商业托管组网(Tailscale)、内核级隧道(WireGuard)、中转穿透(frp 等)。下面这张表先把关键差异摆出来:

方案架构上手难度需要公网IP吗性能典型场景
ZeroTierP2P + 行星根服务器协调中不需要直连高,中继低多地点虚拟局域网、异地访问 NAS
TailscaleWireGuard 内核 + 协调服务 + DERP 中继低不需要直连高,中继一般个人多设备、远程办公、子网共享
WireGuard 自建内核级点对点隧道高需要至少一端有公网最高固定节点少、对延迟敏感的场景
frp 内网穿透客户端-服务器中转中需要一台公网 VPS取决于 VPS临时暴露单个端口/服务

四种方案的定位差异很关键:ZeroTier 和 Tailscale 都是「无公网 IP 也能组网」的 overlay 方案,区别在于 ZeroTier 需要自己维护网络规则、自由度更高,Tailscale 开箱即用、控制台功能完善;WireGuard 是底层协议,性能最好但要自己解决打洞和中继问题;frp 严格说不是组网而是端口转发,适合「我就想暴露一个 Web 服务」的简单需求。

对软路由用户来说,我建议的默认路径是:优先 Tailscale(省心),追求完全自主可控选 ZeroTier,节点固定且有一端公网 IP 时用 WireGuard,只有临时暴露服务才考虑 frp。下面三节分别给完整实战。

三、ZeroTier 实战:软路由上的虚拟局域网

ZeroTier 的原理可以通俗理解为:每台设备装一个虚拟网卡,通过全球的「行星根服务器」交换路由信息,设备之间优先尝试 P2P 直连,打洞失败才走根服务器中继。OpenWrt 上部署 ZeroTier 是官方支持的一等公民,步骤很清晰。

第一步:安装。SSH 登录软路由后:

opkg update
opkg install zerotier
/etc/init.d/zerotier enable
/etc/init.d/zerotier start

第二步:注册网络并加入。登录 my.zerotier.com 创建一个 Network,拿到 16 位 Network ID。然后在软路由上执行:

zerotier-cli join 你的网络ID
zerotier-cli listnetworks   # 确认加入成功

回到网页控制台,在 Members 列表里勾选授权这台软路由(Auth)。此时软路由会获得一个 10.x.x.x 的 ZeroTier 内网 IP。

第三步:配置子网路由,让虚拟网内的其他设备能访问你家的局域网。这是「异地访问内网」的关键一步。在控制台 Network Settings 的 Managed Routes 里添加一条路由:

目标网段: 192.168.1.0/24   (你家软路由的 LAN 网段)
经由: 10.x.x.x             (软路由自己的 ZeroTier IP)

这样,任何加入该网络的设备,访问 192.168.1.x 时都会把流量交给软路由转发。注意这里有个前提:软路由必须开启 IP 转发,并允许 ZeroTier 接口与 LAN 接口之间的流量互通。

第四步:防火墙放行。OpenWrt 默认防火墙会挡住新接口的转发。在 /etc/config/firewall 里加一条 zone 规则,或者用 nftables 直接放行:

nft add rule inet fw4 forward iifname "zt*" oifname "br-lan" accept
nft add rule inet fw4 forward iifname "br-lan" oifname "zt*" accept

同时确认 /etc/sysctl.conf 里有 net.ipv4.ip_forward = 1。

这里要特别提醒一个国内用户常见的坑:ZeroTier 的行星根服务器(planet)和网页控制台都在境外,国内网络直连时握手经常超时,表现为 zerotier-cli join 后一直 PENDING、节点永远 UNREACHABLE。这种问题不是配置错误,而是协调链路不稳定。解决思路有两个:一是换用国内社区维护的 moon 节点或自建 planet(进阶操作,后面细说);二是在组网初始化、节点授权这类关键操作时,保证软路由有一条稳定的出口线路——我实测过用万达云的中转线路时,planet 握手和 P2P 打洞的成功率明显比裸连高,节点状态从 PENDING 到 ONLINE 基本是秒级。这也是「先稳定出口、再折腾组网」这条经验的实际体现。

进阶:自建 moon 节点。如果你家里有一台有公网 IP 的 VPS(或者你的软路由本身有公网),可以把它配置成 moon 节点,让其他设备优先通过它协调,能显著降低对境外根服务器的依赖。配置方法:在软路由上执行 zerotier-cli orbit <moon_id> <moon_id>,moon 节点本身需要在有公网的机器上用 zerotier-idtool initmoon 生成。

四、Tailscale 实战:最省心的组网方案

Tailscale 本质上是「WireGuard 协议 + 托管协调服务」的组合:设备之间用 WireGuard 内核隧道直连,协调服务器只负责交换公钥和地址,打洞失败时走 DERP 中继。相比 ZeroTier,Tailscale 的控制台(login.tailscale.com)功能更完善,ACL、子网路由、MagicDNS 都是图形化配置。

第一步:安装并登录。OpenWrt 官方源和社区源都有 tailscale 包:

opkg update
opkg install tailscale
/etc/init.d/tailscale enable
/etc/init.d/tailscale start
tailscale up

执行 tailscale up 后终端会输出一个登录链接,在浏览器打开并用你的账号授权即可。软路由出现在 Tailscale 管理台的设备列表里就算成功了。

第二步:开启子网路由(Subnet Router)。想让异地设备通过软路由访问你家的 192.168.1.0/24 网段,需要两步:先让软路由广播这个网段,再在管理台勾选允许。

tailscale up --advertise-routes=192.168.1.0/24

然后到管理台 Devices 里找到软路由,点击「Edit route settings」,把 192.168.1.0/24 的 Subnet routes 开关打开。远端设备上再执行 tailscale up --accept-routes(或对应客户端勾选接受子网路由),就能通过虚拟网访问你家内网了。

第三步:开启 MagicDNS。管理台 DNS 页打开 MagicDNS,并建议开启 HTTPS 证书(MagicDNS 提供 *.ts.net 域名),这样你在外网可以直接用 nas.tailnet-name.ts.net 这样的域名访问家里的 NAS,比记 IP 方便得多,也为后面配合反向代理访问内网 Web 服务铺路。

第四步:用 ACL 控制访问范围。Tailscale 默认所有设备互通,安全要求高的话建议在 Access Controls 里收紧。比如只允许「笔记本」访问「软路由 + NAS」:

"acls": [
  {"action": "accept", "src": ["tag:laptop"], "dst": ["tag:router:*", "tag:nas:*"]}
]

Tailscale 的 DNS 和 ACL 配置思路,和软路由上科学上网的 DNS 分流是两套体系,想彻底搞懂 DNS 在代理场景里怎么工作的,可以配合DNS 解析优化指南一起读。

五、WireGuard 原生组网:内核级性能与跨境延迟

如果节点数量少(三五台以内)、拓扑固定、且至少一端有公网 IP,WireGuard 自建是性能和可控性最优的方案。WireGuard 在 Linux 内核里实现,加密用 ChaCha20Poly1305,开销极低,在软路由这种性能有限的小机器上优势尤其明显。

OpenWrt 上的 WireGuard 配置。新版 OpenWrt(22.03+)自带 wireguard 内核模块,用 LuCI 图形界面或直接编辑 /etc/config/network 都行。核心配置段:

config interface 'wg0'
    option proto 'wireguard'
    option private_key '软路由的私钥'
    option listen_port '51820'
    list addresses '10.66.66.1/24'

config wireguard_wg0
    option public_key '对端公钥'
    option endpoint_host '对端公网IP或域名'
    option endpoint_port '51820'
    option persistent_keepalive '25'
    list allowed_ips '10.66.66.0/24, 192.168.2.0/24'

对端(比如另一台软路由或 VPS)用同样的方式配置,双方的公钥互换、allowed_ips 指向对方网段即可。注意几点:MTU 建议设 1420(避免分片);NAT 后面的一端必须设 persistent_keepalive 保持隧道存活;防火墙要放行 UDP 51820 端口。

跨境场景的延迟问题。WireGuard 本身协议开销很小,但跨境裸跑 WireGuard 有两个现实问题:一是 UDP 流量特征明显,晚高峰容易被 QoS 限速,延迟和丢包率会明显劣化;二是如果两端都是国内家宽,公网质量本身波动就大。我在实测中把 WireGuard 隧道跑在普通家宽上,晚高峰 ping 抖动经常超过 30ms,而走 IEPL 专线(比如SS-ID这类全 IEPL 线路机场)时,跨境隧道的延迟和丢包就稳定得多——专线走的是独立承载网,不走公共互联网的拥塞路径,这对远程桌面、数据库连接这类延迟敏感操作影响很大。关于线路类型的原理,IEPL/IPLC/BGP 线路科普里有完整对比。

WireGuard 与科学上网共存。WireGuard 组网隧道和科学上网出口可以共存:让科学上网的流量走代理策略组,组网流量走 wg0 接口,靠策略路由按目标网段分流。更复杂的「机场 + 自建 VPS + WireGuard 混合架构」,可以参考机场与 VPS 混合架构指南的做法。

六、软路由落地:防火墙、策略路由与科学上网共存

无论选哪种组网方案,落到软路由上都有几个共通的落地问题,处理不好会出现「组网通了但访问不了」「隧道流量被代理劫持」之类的怪问题。

1. 接口与转发。组网方案创建的虚拟接口(zt*、tailscale0、wg0)默认不在 OpenWrt 的 lan 区域里,需要决定:是加入 lan 区域(完全信任,像内网一样互通),还是单独建 zone(精细控制)。家用场景建议加入 lan 区域,省心;公司/多租户场景建议单独 zone 加白名单。

2. 策略路由,避免流量黑洞。这是最常踩的坑:软路由上科学上网插件(PassWall、OpenClash 等)会劫持所有转发流量做分流,组网隧道的内网流量如果不加排除规则,会被送进代理甚至直接丢弃。解决思路是在 mwan3 或 ip rule 里加一条高优先级规则:目标网段是组网虚拟网段(如 10.66.66.0/24)的流量,强制走主路由表,不经过代理。用 nftables 实现:

nft add rule inet fw4 mangle_prerouting ip daddr 10.66.66.0/24 meta mark set 0x1
ip rule add fwmark 0x1 table 1
ip route add default via 192.168.1.1 table 1

3. 防止隧道环路。如果家里既有旁路由又有主路由,组网流量可能在两台设备之间来回跳。原则是:虚拟网段的路由只在一台设备上宣告(上面说的 Managed Routes / advertise-routes 只开一台),避免重复广播。旁路由模式的搭建细节可以看旁路由与透明网关指南。

4. 开机自启与断线重连。OpenWrt 的 init 脚本(/etc/init.d/zerotier、tailscale)默认 enable 后开机自启,但断线后的自动重连建议配 cron 定时检查:

*/5 * * * * zerotier-cli listnetworks | grep -q OK || /etc/init.d/zerotier restart

七、场景实战:异地访问 NAS、远程办公与跨境电商多账号

把方案落到具体场景里,你才能判断自己到底需要什么。

场景 A:出差访问家里 NAS。这是最典型的个人场景。推荐 Tailscale:笔记本、手机装官方客户端,软路由上开 subnet router 广播家里网段,MagicDNS 开起来后用域名访问 NAS 的 Web 界面、SMB 共享、相册服务。全程不需要公网 IP,也不需要在路由器上开任何端口映射,安全性比端口暴露高一个量级。

场景 B:公司/工作室多地点互联。三个办公点各有一台软路由,想共享内部文件服务器和 OA。推荐 ZeroTier:三个点加入同一个 Network,各自广播自己的 LAN 网段,用 Managed Routes 打通全网。好处是拓扑完全可控,节点多、网段多时比 Tailscale 的免费额度更宽松(Tailscale 免费版个人 100 设备也够用,但团队协作功能要收费)。

场景 C:远程办公访问公司内网 + 需要稳定的海外出口。这类用户往往是跨境电商运营、外贸从业者:白天在公司内网办公,晚上在家还要登录海外平台处理订单。组网解决「访问公司内网」,但海外平台的登录环境同样重要——多账号登录最怕 IP 不纯净导致风控。我的建议是组网 + 纯净出口双管齐下:组网负责内网访问,海外平台的操作走仙路湾这类提供住宅 IP/原生 IP 线路的机场,账号环境更接近真实用户,触发风控的概率低很多。跨境电商多账号的完整网络方案,可以看跨境多账号网络方案。

场景 D:留学生双向访问。人在国外访问国内内网(网盘、家里的 NAS、国内网站),ZeroTier 和 Tailscale 都支持,选一个就行。这个场景下「组网 + 回国线路」的组合方案在出差旅行网络方案里有更详细的讨论。

八、性能与安全:延迟、吞吐、加密与审计对比

选型时除了功能,性能和安全的差异也要心里有数。

延迟与吞吐。WireGuard 原生组网性能最好(内核态、零拷贝),同一条链路上比用户态方案少 5-15% 开销;ZeroTier 和 Tailscale 直连时底层也是 P2P 隧道,速度接近 WireGuard;一旦打洞失败走中继(ZeroTier 根服务器 / Tailscale DERP),延迟和带宽都会明显下降,所以中继服务器的位置很重要。frp 全程中转,吞吐完全取决于你的 VPS 带宽。

加密与指纹。WireGuard 用 ChaCha20Poly1305,ZeroTier 用 AES-GCM 类算法,Tailscale 底层也是 WireGuard,三者加密强度都没问题。但在跨境场景下,「加密强度」不是唯一考量,「流量特征是否容易被识别」同样重要——这就是前面说的裸 WireGuard 容易被 QoS 的原因。对安全审计要求高的场景,Tailscale 的 ACL + 审计日志最完善。

管理复杂度。从低到高排序:Tailscale(托管控制台,全图形化)→ ZeroTier(控制台 + 命令行,规则灵活)→ frp(纯配置文件)→ WireGuard(全手工)。对非技术用户,Tailscale 几乎是唯一推荐;对喜欢折腾的软路由玩家,ZeroTier 的可控性更香。

九、决策框架:按需求选方案

把前面所有分析浓缩成一张决策路径,照着选就行:

1. 我只有三五台设备,想要最简单的方案?→ Tailscale。安装、登录、开子网路由,十分钟搞定。

2. 我要多地点、多网段组成一张大虚拟局域网,且不想依赖任何商业服务?→ ZeroTier + 自建 moon,完全自主可控。

3. 我有一端公网 IP,节点固定,追求极致性能和低延迟?→ WireGuard 自建。

4. 我只要临时暴露一个服务给朋友访问?→ frp 或 Tailscale Funnel,别为临时需求搭整套组网。

5. 我既想组网,又对跨境网络质量有要求?→ 组网方案照选,同时给软路由配一条稳定的 IEPL 专线出口(前面提到的几家专线机场都属于这类),组网协调和科学上网两不误。

最后提醒一句:无论选哪个方案,组网隧道本身只解决了「连通性」,安全性还要靠你的防火墙策略、ACL 和密钥管理来保障。把组网当基础设施来维护,定期检查节点授权列表和路由宣告,比任何单次配置都重要。

FAQ:异地组网常见问题

Q1:没有公网 IP 能异地组网吗?能。ZeroTier 和 Tailscale 都内置 NAT 打洞(UDP 打洞)和中继兜底,只要设备能上网就能组网。打洞成功是 P2P 直连,速度最快;打洞失败走中继,也能通但慢一些。

Q2:ZeroTier 和 Tailscale 有什么区别,怎么选?底层都类似,差别在管理和生态:Tailscale 控制台开箱即用、ACL/MagicDNS 全图形化,适合个人和快速上手;ZeroTier 网络规则更灵活、可以自建 planet/moon 完全脱离官方服务,适合多网段、多节点的进阶用户。日常家用首选 Tailscale,折腾党选 ZeroTier。

Q3:组网后访问内网很慢,卡在哪?先看是不是走了中继:ZeroTier 看节点状态是不是 RELAY,Tailscale 看连接是不是 DERP。如果是,说明 P2P 打洞失败,检查两端的 NAT 类型(对称 NAT 最难打洞)、UDP 是否被防火墙拦截。另外跨境组网慢,还要排查是不是晚高峰 QoS 导致。

Q4:组网流量会被科学上网插件劫持吗?可能。PassWall/OpenClash 这类插件默认劫持全部转发流量,如果你的组网目标网段没有加排除规则,隧道流量可能被送进代理或丢弃。解决办法就是第六节说的策略路由:给组网网段加高优先级路由规则,绕过代理。

Q5:软路由重启后组网失效怎么办?确认服务已 enable(开机自启),再配一条 cron 定时检查重连(第六节给了 ZeroTier 的示例)。Tailscale 的 init 脚本一般自带断线重连,WireGuard 靠 persistent_keepalive 保持隧道。

Q6:异地组网安全吗?会不会被别人扫描到?组网隧道默认不暴露任何端口到公网,比端口映射安全得多。但要注意:ZeroTier 的 Network 默认允许成员互访,记得在控制台收紧权限;Tailscale 用 ACL 控制访问;WireGuard 全靠密钥,私钥一定要保管好。定期检查节点列表,踢掉不认识的设备。

Q7:人在国外,用组网访问国内内网,速度受什么影响?取决于隧道路径:P2P 直连成功就是两端家宽的实际质量,走中继则是中继服务器的位置和带宽。如果经常卡顿,考虑用回国专线(比如 IEPL 线路)承载组网隧道的跨境段,稳定性会好很多。

推荐阅读