Home

Awesome

Wireguard VPN配置文件分发工具

Auto Build

原理

Wireguard是一个P2P VPN,与传统VPN最大的区别就是任意两个节点都是直接通信的,不需要服务器。
不过目前Wireguard配置还是比较麻烦的,如果节点多了,每个节点都要写其他所有节点的信息,特别难修改。
所以就做了这么个玩意。

不过这个问题估计很快wireguard官方就会解决,所以这里还做了一些官方不可能提供的功能。

这是一个服务器+客户端模式的自动配置工具,附带一些其他功能。其中必须有一个公网可访问的“配置服务器”。
公网仅能通过IPv6地址访问的情况也可以,而且IP不需要固定。
这个服务器不需要加入wireguard网络,而是只提供配置功能(也可以选择加入)。

主要功能有:

用法

安装

首先需要手动安装wireguard:https://www.wireguard.com/install/

github release中下载,只提供最新master版本。

各种脚本

scripts

运行

完整参数列表:

所有参数都可以通过环境变量传入,推荐这么做,详见help内容。
程序运行需要管理员权限(或linux的CAP_NET_ADMIN),Windows上如果发现没有会自动提权。

服务端

服务器程序只支持linux(包括wrt)直接启动即可。
普通linux推荐直接使用./scripts/services/server.service文件解决(但是必须手动修改里面的Environment=们传入正确的参数)

服务器有2种工作模式:

  1. 明文模式:--insecure参数,用于有nginx之类的工具处理SSL的情况,当监听unix socket时只能用这个模式
  2. 独立服务器模式:可以自签名(默认),或载入现有SSL证书

如果使用提供的service文件,则服务器会在/var/lib/wireguard-config-server文件夹中存放数据。其他方法调用时一般会存放在~/.wireguard-config-server

客户端

wireguard-config-client --server=x.x.x.x:1234 --其他参数

客户端(Windows)

Windows既可以用/参数 值也可以用--参数=值

开发

准备

  1. 需要比较新的golang、powershell
  2. 在项目的某个目录运行:
    go get -u github.com/GongT/go-generate-struct-interface/cmd/go-generate-struct-interface
    
  3. 运行:
    ./scripts/run.ps1 [client|server|tool] (...arguments)