在过去很长一段时间里,我的NIC都建立在基于SoftEther VPN的虚拟局域网上。虽然后来扩展了几个专用于对外的节点,但其核心依然是从2021年沿用至今的VPN网络(这么说其实也不完全准确,因为承载VPN服务器的节点已经变动过好几次了)。
SoftEther作为一套完整的VPN方案,提供了从网络管理、用户管理和鉴权等等近乎企业级的VPN管理方案,但在几乎只有我一个人使用的NIC上,这套方案显得稍微有点“重”了:
- 我在大多数时候不需要进行用户和网络配置
- 我只使用了SoftEther自带的鉴权,并未接入第三方认证或安全卡
- 我不是专业的IT人员,没法持续维护这套系统的安全
- 我不确定我是否正确配置了SoftEther提供的大量可配置项,一些从数年前沿用至今的配置可能并不安全
由于我准备继续基于自建VPN构建NIC核心网络,其它一些更轻或者更重的方案(例如frp或更完整的零信任方案)就不在讨论范围内了。在办公环境中试用过WireGuard后,它几乎立刻成为了下一个选择。
一、为什么选择WireGuard
相比SoftEther,WireGuard轻量化了很多:由于几乎只有VPN功能本身,用户管理和鉴权被通通简化为了手动的公钥交换。可配置项相当精简,服务端和客户端都仅需要一个不长的配置文件即可运行起来。
相较SoftEther基于TCP的连接,WireGuard的纯UDP协议在实际使用中抗网络波动和干扰效果略胜一筹,同时在服务端和客户端的资源占用都显著降低。
WireGuard可能还有其它令其得到广泛接受的亮点,但对我而言,在满足我的使用需求的情况下解决了SoftEther的现有痛点,以及足以让我进行这次切换了。
二、那么,代价是什么?
这次切换并不是生硬的取而代之,而是在SoftEther之外额外建立了与之平行的WireGuard NIC核心网,整套配置过程不超过3个小时。
相较拥有全套解决方案的SoftEther,WireGuard简单到有些简陋,几乎所有管理都是带外的,在不使用第三方配置/管理工具的情况下约等于全程手填配置文件。
作为“按需”建立连接的VPN,WireGuard的官方客户端甚至连断线自动重连都没有(是的PersistentKeepAlive存在,但它不是这么用的)。例如:我家经历了一次意外的网络中断,此后我的NAS并不会主动重连到WireGuard——作为一台服务器设备,它能有什么对外连接的需求呢?但此时其它客户端就没法通过WireGuard网络访问到NAS了。由于NIC最主要的目的便是我的个人网络互通,服务器掉线不重连是完全不能接受的。至于解决方案?写一个crontab任务每分钟ping一下WireGuard网关,就足以充当心跳检查唤起连接了。
WireGuard只支持自家的协议,不像SoftEther还额外支持了OpenVPN和L2TP等,所以移动设备上使用就没法直接添加系统VPN了,对于国内的iOS用户会有些麻烦,但也并非无法解决。至于电脑,我想绝大多数日常使用的电脑都是能安装WireGuard客户端的,至少我没有用那少部分不被支持的设备。
三、为什么不考虑Mesh VPN呢?
事实上我考虑过,甚至在使用SoftEther建设初版NIC之前就开始陆续尝试各类Mesh VPN。该品类中被提及最多的便是ZeroTier和Tailscale,我都尝试使用过,但问题无非是两个:效果差,不开源。
在国内ISP环境下NAT打洞效果有多骇人我就不赘述了,由于ISP借反诈和打击PCDN之名挥舞大棒,近几年的网络环境可能比几年前还要更差。同时ZeroTier和Tailscale都没有开源自家的VPN管理平面,市面上兼容它们的开源管理服务均是通过逆向工程构建的,且搭建起来很难说得上快捷明了。
在“每月稍微多出点流量费,且稍微增加延迟”和“NAT打洞不一定稳定,可能会fallback到服务器中转,且服务端软件是不算好用的逆向版本”之间,我暂且选择了自建传统VPN。
四、为什么不完全取代SoftEther
问题还是出在兼容性和稳定性上。
虽然上面提到,我是NIC的主要、甚至是多数情况下的唯一使用者,但我的家人会偶尔通过NIC访问我搭建的内网服务,教他们配置手机自带的L2TP比配置WireGuard(哪怕光是“从哪下载WireGuard”)要简单得多。而且SoftEther自带的用户管理也便于我为他们开通临时账号并限制访问权限。此外,NIC内网服务配置的域名解析目前还使用SoftEther的地址,突然切换很容易导致问题。
SoftEther经过了过去四年多的检验,暴露出了一些问题,大多数情况下是能用的——但不算那么好用。WireGuard在使用中是否会遇到问题,只有足够长时间的使用后才能回答。
所以我现在将基础架构节点之间的、以及我日常使用的NIC网络迁移到了WireGuard,保留SoftEther作为(WireGuard带外管理控制的)备份和给家人使用,逐渐将其淡出NIC核心网络。我可能会不定期更新一下使用体验,希望下一个五年里NIC能够一切正常。