跳转到主要内容

一款帮助您生成WireGuard网状网络对等配置文件的工具

项目描述

wg-meshconf

wg-meshconf是一款帮助您生成WireGuard网状网络对等配置文件的工具。您可以使用此工具轻松快速地创建WireGuard网状网络。

安装(PyPI)

这是推荐用户安装wg-meshconf的方法。 此安装方法从PyPI安装wg-meshconf的最新版本和所有必需的依赖项。

# installing the program with pip
# note that Pip for Python3 might be named "pip3" on some systems
pip install --user -U wg-meshconf

# running the program
wg-meshconf showpeers

您现在可以通过执行wg-meshconf命令来运行程序。

安装(GitHub)

如果您希望直接从源代码安装程序,可以按照以下步骤进行。如果您想直接从Git仓库安装

# install the HEAD (latest) commit
pip install 'wg-meshconf@git+https://github.com/k4yt3x/wg-meshconf.git'

# install from a specific tag or commit
pip install 'wg-meshconf@git+https://github.com/k4yt3x/wg-meshconf.git@2.5.1'
pip install 'wg-meshconf@git+https://github.com/k4yt3x/wg-meshconf.git@aa16407'

您也可以克隆它并在本地安装。

# cloning the repository with git
git clone https://github.com/k4yt3x/wg-meshconf.git

# enter the directory
cd wg-meshconf

# install the program with Pip
# Pip and PDM will take care of dependency installation
pip install -U .

通过示例学习

使用方法很无聊。让我们看看这个工具在实际生活中的应用。本节将展示如何使用wg-meshconf创建一个由四个节点组成的基本网状网络。

对于这个例子,假设您有四个服务器,如下所示。这些服务器可以通过端点地址相互访问。例如,服务器tokyo1可以使用地址shanghai1.comping服务器shanghai1

image

步骤1:添加基本对等信息

首先,您需要将节点信息添加到数据库中。有两种方法可以实现:通过Excel和通过命令行界面。

方法A:使用Excel

从版本2.4.0开始,wg-meshconf将数据库格式从JSON改为CSV,并添加了init命令。这意味着用户现在可以直接使用Excel或其他CSV兼容编辑器编辑数据库文件,以创建/读取/更新/删除节点信息。

(提示:我曾考虑为wg-meshconf制作一个类似于其他工具的华丽GUI,但后来我想,为什么不简单地“借用”Excel的GUI呢?)

运行以下命令以初始化新的数据库文件。默认情况下,数据库文件名为database.csv。您也可以通过-d指定文件名。

wg-meshconf init

使用类似于Excel或LibreOffice Calc的编辑器打开数据库CSV文件。您应该看到以下列标题。

image

然后您可以填写节点的信息。您需要填写至少节点的NameAddressEndpoint值。这些值不能自动生成。

image

完成之后,保存文件并再次执行init命令以自动生成所需的其他信息,如节点私钥。

wg-meshconf init

再次检查文件,您会发现必要的字段已自动填写。

image

方法B:使用终端

如果您出于某种原因不想直接编辑数据库文件,您也可以仅通过其命令行界面使用此工具。

首先,我们需要将所有节点添加到数据库中。添加新节点的基本语法是

wg-meshconf addpeer NAME --address IP_ADDRESS --address IP_ADDRESS_2 --endpoint ENDPOINT
  • 如果没有指定,将自动生成新的私钥
  • 监听端口默认为WireGuard标准的51820
  • 所有其他值默认为空

还有更多选项可供指定。使用wg-meshconf addpeer -h命令获取更多详细信息。

将所有节点添加到数据库后,您可以使用wg-meshconf showpeers命令验证它们是否已正确添加。这里的simplify开关省略了所有仅包含None的列。

image

第二步:导出配置文件

使用genconfig命令为所有节点生成配置文件。您也可以通过指定节点名称仅导出单个节点的配置。

配置文件将以节点的名称命名。默认情况下,所有配置文件都导出到名为output的子目录中。您可以通过指定输出目录使用-o--output选项来更改此设置。

image

第三步:将配置文件复制到节点

将每个配置文件复制到相应的节点。

image

第四步:启动WireGuard服务

使用wg-quick命令启动WireGuard接口。您还可以通过WireGuard的wg-quick@systemd服务控制WireGuard接口。WireGuard接口设置后,可以通过wg命令验证WireGuard状态。

image

第五步:验证连接性

验证所有端点是否已正确配置并可以相互连接。

image

完成。现在四个服务器之间已创建了一个网状网络。

更新节点信息

如果您想更新一个节点的信息,请使用updatepeer命令。updatepeer的语法与addpeer相同。此命令不是添加新节点,而是覆盖现有条目中的值。

以下示例中,假设您想更新tokyo1的端点地址并将其更改为tokyo321.com。使用updatepeer命令并指定新的端点为tokyo321.com。这将覆盖tokyo1现有的Endpoint值。

image

显示节点信息

默认情况下,showpeers命令打印所有节点的信息。

image

现在信息量很大,很多不必要的列都只包含None。因此,我添加了-s/--simplify命令,以省略这些无用的列。

image

您还可以查询有关特定对等节点的信息。

image

明文模式有类似的用法。至少对我来说,它有点难以阅读。

image

删除对等节点

使用delpeer命令删除对等节点。语法是delpeer PEER_NAME

以下示例显示了如何从数据库中删除对等节点tokyo1

image

数据库文件

与wg-meshconf的1.x.x版本不同,2.0.0版本不需要用户保存或加载配置文件。相反,所有添加对等节点、更新对等节点和删除对等节点的操作都是文件操作。更改将立即保存到数据库文件。可以通过-d--database选项指定要使用的数据库文件。如果没有指定数据库文件,将使用database.csv

数据库文件基本上只是CSV文件(在2.4.0版本之前是JSON格式)。下面是一个示例。

"Name","Address","Endpoint","AllowedIPs","ListenPort","PersistentKeepalive","FwMark","PrivateKey","DNS","MTU","Table","PreUp","PostUp","PreDown","PostDown","SaveConfig"
"tokyo1","10.1.0.1/16","tokyo1.com","","51820","","","yJndNh80ToNWGOfDlbtho1wHAEZGa7ZhNpsHf7AJVUM=","","","","","","","",""
"germany1","10.2.0.1/16","germany1.com","","51820","","","SEOaOjTrhR4do1iUrTTRRHZs6xCA3Q/H0yHW3ZpkHko=","","","","","","","",""
"canada1","10.3.0.1/16","canada1.com","","51820","","","2D34jpbTsU+KeBqfItTEbL5m7nYcBomWWJGTYCT6eko=","","","","","","","",""
"shanghai1","10.4.0.1/16","shanghai1.com","","51820","","","CGyR7goj/uGH3TQHgVknpb9ZBR+/yMfkve+kVNGBYlg=","","","","","","","",""

详细用法

您可以参考程序的帮助页面了解用法。使用-h切换或--help切换以打印帮助页面。

$ wg-meshconf -h
usage: wg-meshconf [-h] [-d DATABASE] {addpeer,updatepeer,delpeer,showpeers,genconfig} ...

positional arguments:
  {addpeer,updatepeer,delpeer,showpeers,genconfig}

optional arguments:
  -h, --help            show this help message and exit
  -d DATABASE, --database DATABASE
                        path where the database file is stored (default: database.json)

在命令后指定-h--help以查看此命令的用法。

$ wg-meshconf addpeer -h
usage: wg-meshconf addpeer [-h] --address ADDRESS [--endpoint ENDPOINT] [--privatekey PRIVATEKEY] [--listenport LISTENPORT] [--fwmark FWMARK] [--dns DNS] [--mtu MTU] [--table TABLE] [--preup PREUP] [--postup POSTUP] [--predown PREDOWN] [--postdown POSTDOWN] [--saveconfig] name

positional arguments:
  name                  Name used to identify this node

optional arguments:
  -h, --help            show this help message and exit
  --address ADDRESS     address of the server
  --endpoint ENDPOINT   peer's public endpoint address
  --privatekey PRIVATEKEY
                        private key of server interface
  --listenport LISTENPORT
                        port to listen on
  --fwmark FWMARK       fwmark for outgoing packets
  --dns DNS             server interface DNS servers
  --mtu MTU             server interface MTU
  --table TABLE         server routing table
  --preup PREUP         command to run before interface is up
  --postup POSTUP       command to run after interface is up
  --predown PREDOWN     command to run before interface is down
  --postdown POSTDOWN   command to run after interface is down
  --saveconfig          save server interface to config upon shutdown

许可证

本项目遵循GNU通用公共许可证版本3(GNU GPL v3)
版权所有(c)2018-2023 K4YT3X和贡献者。

GPLv3 Icon

本项目包含或依赖于以下软件和项目

项目 许可证
Rich MIT许可证
WireGuard MIT许可证
cryptography BSD许可证

相关项目:wg-dynamic

wg-dynamic是由WireGuard开发团队官方设计的工具。这个新实用程序将为配置动态网络提供一种便捷的方式,其中网状网络是其中之一。如果您感兴趣,请访问wg-dynamic@githubwg-dynamic@官方仓库。您还可能想阅读这个项目的想法页面

本节以前在页面顶部,但由于自2019年以来该项目没有观察到任何新提交,因此已经移动。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

wg-meshconf-2.5.1.tar.gz (26.3 kB 查看哈希值)

上传时间 源代码

构建分发

wg_meshconf-2.5.1-py3-none-any.whl (24.3 kB 查看哈希值)

上传时间 Python 3

由以下支持