前言
最近在逛论坛的时候发现了一个想法感觉挺不错的,就是核心服务器放在本地,将具有固定公网IP的云服务器作为入口,通过wireguard实现异地组网和内网穿透。同时感觉手动去管理wireguard很麻烦,就发现了netmaker这个项目,坑还是有不少,不过用着确实很方便了。
原理
- 将具有公网IP的云服务器设置为Ingress Gateway,无公网IP的内网设备通过Ingress Gateway接入到netmaker控制wireguard创建的虚拟局域网中:
- 内网中的设备可以设置为Egress Gateway,从而打通该设备所在的整个内网:
部署
使用文档:Welcome to the Netmaker Documentation — Netmaker 0.12.0 documentation
跟着使用文档,一步一步搭建部署即可。
踩坑指南
防火墙设置
使用大厂的服务器需要开放对应的安全组/防火墙
不仅需要开通文档中所说的这些端口:
- allow 443/tcp from all
- allow 80/tcp from all
- (optional) allow 53/udp and 53/tcp from all
- allow 51821-51830/udp from all
还需要开放这个端口:
- allow 8883/tcp from all
8883/tcp
是mosquitto
的端口,若关闭会导致节点无法进行签到、更新wireguard配置等功能同时节点状态将根据失联时间增长将进行变化:
Healthy
->Warning
->Error
泛域名解析
如果大家使用域名的话,请直接使用*.example.com
进行泛域名解析,方便又不易出错
总有人一个一个去解析,导致出错排不出来,但我不说是谁(乐
EDIT
不要EDIT!不要EDIT!不要EDIT!
如果仅为了实现我所说的异地组网和内网穿透无需对节点、网络等进行编辑,否则会出现一些奇奇怪怪的问题,总之,不懂或者一知半解就保持默认的配置即可。
Destination address required error
出现这个问题的原因没找到,且无法复现,就记录下我解决问题的方法:
- 删除旧网络,重新创建一个名字不同的新网络
- 在客户端重启netclient服务:
service netclient restart
貌似仅进行第二步的重启即可解决,但是无法复现该问题,无法验证,大家可以试试看,希望验证过的朋友可以评论进行反馈~