一款帮助您生成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.com
ping服务器shanghai1
。
步骤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文件。您应该看到以下列标题。
然后您可以填写节点的信息。您需要填写至少节点的Name
、Address
和Endpoint
值。这些值不能自动生成。
完成之后,保存文件并再次执行init
命令以自动生成所需的其他信息,如节点私钥。
wg-meshconf init
再次检查文件,您会发现必要的字段已自动填写。
方法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
的列。
第二步:导出配置文件
使用genconfig
命令为所有节点生成配置文件。您也可以通过指定节点名称仅导出单个节点的配置。
配置文件将以节点的名称命名。默认情况下,所有配置文件都导出到名为output
的子目录中。您可以通过指定输出目录使用-o
或--output
选项来更改此设置。
第三步:将配置文件复制到节点
将每个配置文件复制到相应的节点。
第四步:启动WireGuard服务
使用wg-quick
命令启动WireGuard接口。您还可以通过WireGuard的wg-quick@
systemd服务控制WireGuard接口。WireGuard接口设置后,可以通过wg
命令验证WireGuard状态。
第五步:验证连接性
验证所有端点是否已正确配置并可以相互连接。
完成。现在四个服务器之间已创建了一个网状网络。
更新节点信息
如果您想更新一个节点的信息,请使用updatepeer
命令。updatepeer
的语法与addpeer
相同。此命令不是添加新节点,而是覆盖现有条目中的值。
以下示例中,假设您想更新tokyo1
的端点地址并将其更改为tokyo321.com
。使用updatepeer
命令并指定新的端点为tokyo321.com
。这将覆盖tokyo1
现有的Endpoint
值。
显示节点信息
默认情况下,showpeers
命令打印所有节点的信息。
现在信息量很大,很多不必要的列都只包含None
。因此,我添加了-s
/--simplify
命令,以省略这些无用的列。
您还可以查询有关特定对等节点的信息。
明文模式有类似的用法。至少对我来说,它有点难以阅读。
删除对等节点
使用delpeer
命令删除对等节点。语法是delpeer PEER_NAME
。
以下示例显示了如何从数据库中删除对等节点tokyo1
。
数据库文件
与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和贡献者。
本项目包含或依赖于以下软件和项目
项目 | 许可证 |
---|---|
Rich | MIT许可证 |
WireGuard | MIT许可证 |
cryptography | BSD许可证 |
相关项目:wg-dynamic
wg-dynamic
是由WireGuard开发团队官方设计的工具。这个新实用程序将为配置动态网络提供一种便捷的方式,其中网状网络是其中之一。如果您感兴趣,请访问wg-dynamic@github或wg-dynamic@官方仓库。您还可能想阅读这个项目的想法页面。
本节以前在页面顶部,但由于自2019年以来该项目没有观察到任何新提交,因此已经移动。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
wg-meshconf-2.5.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c73b57b4da0ba9d32835fd4cff8d6fae99c15a50115499c896686b364065650 |
|
MD5 | d5f9c8dc71c7f35edc8dfcb8a0c6c170 |
|
BLAKE2b-256 | e927e6c4ed83f23b2825b4bbee1881be0872f7714fc6663046c884ad0d3f804b |