这几天构建vpn网络的血泪史
起因是zerotier挂掉了,到了经常不可用的状态,这个就头疼了,毕竟谁没几台服务器呢。
于是开始上openvpn,大名鼎鼎,但是配置过于复杂,好多好多警告,还有error,程序员真的忍不了。
折腾openvpn累的时候偶然看到了wireguard,立马被它精简的设计理念所吸引,于是马上上马。
配置过程非常顺利,但是从2peers到5peers的时候发现mesh有点机械重复的工作,想着应该有人解决这个问题,于是掉进netmaker这个惊天大坑。
蛋疼的是netmaker名气还挺大,所以爬坑的时候我还一步三回头,血泪啊。
Netmaker为什么被我抛弃
- Netmaker因为同时提供商业版,所以骗了不少人,但这是下面几点原因的根本。
- 本来只是一个配置管理+状态监控的服务,本来可以很轻巧,硬生生加进了coredns、加进了MQ,这里赞一下它用的MQ轻量级是真的,而且特别适合小规模应用,这些功能的耦合把wg本身轻巧和低到可以忽视的资源占用给糟蹋了
- 最新版本舍弃了grpc,搞笑的是另几个类似功能的项目还在用,配置管理的精髓就是pull和push就和git一样,之前它甚至才用wg内网而不是公网api来通信,这不是死循环了么
- 第3点是改进,这里就是退步了,它强制要求api所在节点启用wg,更坑的是docker版本还跟宿主不可见,据说是直接调用内核速度更快,快不快的我不知道,但是这个该死的节点根本不可用,谁会把一台服务器单独拿来当netmaker的管理节点呢?
- 没错还有第五点,上面的4官方已经承认是bug了,它在设置hub模式时每次都会重复添加管理节点的wg,哎
- 这个不是所有人都会碰到,它的很多默认规则无法定制化,这时候wg的灵活也被糟蹋了,常见的场景就是wg的出口我打算通过我的代理走,netmaker就无法做到。
Wireguard为什么还要上vmess
wg非常容易识别,虽然咱不干坏事,但是容易被殃及池鱼,所以海外主机的组网最好通过vmess走。
建议,虽然理论上不必要,跨外网的最好另建一个net,比如我的组网方式就是大陆abc服务器是一个net,然后abc和海外d主机零件一个hub 中继网络。
这里就体现出wg强大的地方了,精简的设置外,可以通过叠加多个网路实现复杂的路由功能,虽然很死板,但是类似netmaker这样的总有一天能开窍,知道自己正确的roadmap足可以解决手动配置的痛苦。
wireguard 的dns设置
本来linux dns管理挺麻烦的,wg顺带支持的这个小功能可以很稳定的重写服务器dns配置,然后就舒坦了。