引子
推荐虚拟组网工具前先说一下个人网络环境。
在前司工作时,由于一直是远程工作,几乎随时都要联通公司内网,前司的 VPN 用的深信服的 SSL VPN。Mac 端的客户端非常难用,几乎隔几小时就要断一次,于是写了个 AppleScript 自动重连脚本续了一段时间。但有个问题,手机上很难访问公司内网,且不说其手机客户端有多难用,深信服 VPN 限定了一个用户只能有一个设备在线,想在手机上测试时非常痛苦。
另外,一直使用 Surge 作为代理客户端,增强模式真的是非常强大,除了强大的规则、代理功能之外,日常用来抓包也非常方便。
于是有了个想法,能不能把公司的内网转发也交给 Surge 处理呢?
说干就干,在公有云申请了一台 Windows Server 主机作为 Gateway,之所以用 Windows 是因为深信服 VPN 的 Windows 客户端相对更稳定一些,然后在 WinServer 运行 VPN 客户端,又写了一个 AutoIT 脚本守护这个客户端,一旦断开自动重连。最后,通过 SS 暴露给 Surge 使用,非常完美!从此以后彻底摆脱了深信服的 VPN 客户端,手机端也可以非常顺滑的访问公司内网资源。
有了带公网 IP 的 Gateway 后,我又盯上了家里的 NAS !这玩意怎样在保证安全的前提下载公网使用呢?
虚拟组网
本地组网相比大家都非常熟悉,一堆设备挂在交换机或者路由器下面,就可以组成一个简单的局域网,各设备直接可通过局域网 IP 访问。
与本地组网不同的是,虚拟组网设备之间没有通过网线连接,甚至不在一个机房、国家甚至地区。但通过 P2P 或者中转节点,实现了局域网的效果。
下面列一下从开始使用到目前为止遇到的组网工具机器优缺点。
ZeroTier
我目前用的工具,放在最开始并不意味着它是最好的,但它是最适合我的个人场景的。
优点
- P2P 通信
- 支持自建 moon 节点,用于服务发现(已自建)
- 当无法建立 P2P 通信时,流量也会通过 moon 节点转发
- 国内运营商会限制 UDP 流量,甚至分配假的公网 IP,导致无法建立 P2P 链接
- 所以还是用自己的更放心 :)
- 有 Windows、NAS GUI 客户端,配对简单
- 有在线 Central 管理功能,强大又方便(相对于下面方案需要自己手写配置配置文件)
- 在线路由管理很强大
缺点
- 商业公司(各有利弊吧)
- 免费套餐有节点数目限制
2021-04-28 更新:
文章刚发出不久就发现 ZeroTier 的官方节点被拦截了,然后花了些时间把家庭网络切换到了 WireGuard
Nebula
Slack 出品的开源项目
优点
- 开源
- P2P 通信
- 命令行生成配置文件,相对简单
- 完全自建 Lighthouse 节点,安全信得过
缺点
- 人工管理证书,人工分发,相对麻烦
- 无法统一管理授信客户端,只能增加黑名单
- 证书泄露了会很危险,需要更新所有节点配置文件
- 只支持 P2P 通信
- 无法通过 Lighthouse 节点转发流量,遇到国内奇葩的网络环境时就废了
Tinc
老牌 VPN ,看官网样式就能 GET 到了。我在另一个生产环境用到了 Tinc,虽然 ZeroTier 也不错,但毕竟是个商业服务,不如开源项目用起来放心 + 便宜。
优点
- 开源
- P2P
- main 节点支持流量转发
- 支持在 main 节点统一管理授信节点
缺点
- 人工管理证书,人工分发,相对麻烦
WireGuard
优点
- 开源
- P2P
- Interface 节点支持流量转发
- Windows 平台带 UI 界面
- 老牌子,tailscale 基于它开发的
- 安装简单
- 支持连接保活,可以设定每 x 秒发起一次通信,保证连接不断开
现阶段轻度使用没遇到太明显的缺点
SoftEther
很强大的 VPN 软件,小型企业完全可以用来实现多办公室局域网和日常 VPN 需求。
优点
- 开源
- 安装简单
- 管理软件很好很强大
- 目前用到了用户管理、访问列表、安全策略,即强大又灵活
- 备份简单(只需要备份一个文本文件)
- 跨平台客户端
- 支持 IPsec/L2TP、OpenVPN/MS-SSTP 常见 VPN 协议接入
缺点
- 管理软件有点复杂(好像也不是缺点)
其他
tailscale,https://tailscale.com
- 也是个商业服务,没有使用过,暂不评价
内网穿透代理
下面两个工具和前面提到的虚拟组网并不是一类工具,但在特定场景用起来会非常方便。例如,在本地开发时需要接受第三方服务的 callback 时,可以使用下面工具临时暴露本地服务到公网。
配置过程中的一些参考文章
题图:由 TheAndrasBarta 在 Pixabay 上发布