Featured image of post Netmarker实现wireguard异地组网和内网穿透的踩坑指南

Netmarker实现wireguard异地组网和内网穿透的踩坑指南

前言

最近在逛论坛的时候发现了一个想法感觉挺不错的,就是核心服务器放在本地,将具有固定公网IP的云服务器作为入口,通过wireguard实现异地组网和内网穿透。同时感觉手动去管理wireguard很麻烦,就发现了netmaker这个项目,坑还是有不少,不过用着确实很方便了。

项目地址:gravitl/netmaker: Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.

原理

  1. 将具有公网IP的云服务器设置为Ingress Gateway,无公网IP的内网设备通过Ingress Gateway接入到netmaker控制wireguard创建的虚拟局域网中:

Gateway

  1. 内网中的设备可以设置为Egress Gateway,从而打通该设备所在的整个内网:

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/tcpmosquitto的端口,若关闭会导致节点无法进行签到、更新wireguard配置等功能

同时节点状态将根据失联时间增长将进行变化:Healthy->Warning->Error

泛域名解析

如果大家使用域名的话,请直接使用*.example.com进行泛域名解析,方便又不易出错

总有人一个一个去解析,导致出错排不出来,但我不说是谁(乐

EDIT

不要EDIT!不要EDIT!不要EDIT!

如果仅为了实现我所说的异地组网和内网穿透无需对节点、网络等进行编辑,否则会出现一些奇奇怪怪的问题,总之,不懂或者一知半解就保持默认的配置即可。

Destination address required error

出现这个问题的原因没找到,且无法复现,就记录下我解决问题的方法:

  1. 删除旧网络,重新创建一个名字不同的新网络
  2. 在客户端重启netclient服务:service netclient restart

貌似仅进行第二步的重启即可解决,但是无法复现该问题,无法验证,大家可以试试看,希望验证过的朋友可以评论进行反馈~

comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计