6

WireGuard 多用户配置教程

 2 years ago
source link: https://xtrojan.org/bgfw/wireguard/wireguard-multi-user-configuration-tutorial.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

WireGuard 多用户配置教程

前几天写过 WireGuard 手动服务端教程后,一部分人想知道如何配置多用户,即多个客户端账号。

同一个账号可以多个设备链接,但是如果你要分享给朋友使用,为了方便管理,建议配置多个账号,这样如果不想要某个人使用的话,直接删除账号即可。

其实 WireGuard 的多用户配置特别简单,只需要生成一对客户端密匙(公匙+私匙),在服务端配置文件中新增一段 [Peer] 写上新的客户端公匙和客户端的内网IP地址即可。

当然我们可以用命令快捷添加,或者手动修改服务端配置文件也行。

而各客户端账号配置文件的区别也只是 [Interface] 中的客户端私匙和客户端内网IP地址不同罢了。


另外我们需要明白一个对等原则:

  • 服务端配置文件中的 [Interface] 是保存自己的服务端私匙,而客户端配置文件中的 [Interface] 同样保存自己的客户端私匙。
  • 服务端配置文件中的 [Peer] 是保存客户端的公匙,而客户端配置文件中的 [Peer] 是保存服务端的公匙。
  • 即,服务端与客户端都是互相保存自己的私匙在 [Interface] 中,互相保存对方公匙在 [Peer] 中。

服务端配置文件添加用户

以下步骤是动态添加客户端配置(以下配置前提是你已经配置过 WireGuard 配置文件并启动了)。

你也可以手动修改配置文件 [/etc/wireguard/wg0.conf],记得修改完重启一下。以下动态添加无需重启。

  1. # 重新生成一对客户端密匙
  2. # cprivatekey1 为客户端私匙,cpublickey1 为客户端公匙
  3. wg genkey | tee cprivatekey1 | wg pubkey > cpublickey1
  1. # 服务器上执行添加客户端配置代码(新增一个 [peer]):
  2. # $(cat cpublickey1) 这个是客户端公匙,10.0.0.3/32 这个是客户端内网IP地址,按序递增最后一位(.3),不要重复
  3. wg set wg0 peer $(cat cpublickey1) allowed-ips 10.0.0.3/32

然后查看 WireGuard 状态:

  1. # 执行命令后输出内容如下(仅供参考,下面的不是让你执行的命令):
  2. interface: wg0
  3. public key: xxxxxxxxxxxxxxxxx #服务端私匙
  4. private key: (hidden)
  5. listening port: 443
  6. peer: xxxxxxxxxxxxxxxxxxxx #旧客户端账号的公匙
  7. allowed ips: 10.0.0.2/32 #旧客户端账号的内网IP地址
  8. peer: xxxxxxxxxxxxxxxxxxxx #新客户端账号的公匙
  9. allowed ips: 10.0.0.3/32 #新客户端账号的内网IP地址
  10. # 以上内容仅为输出示例(仅供参考)

如果显示正常,那么我们就保存到配置文件:

  1. wg-quick save wg0

然后我们就要开始生成对应的客户端配置文件了。


生成对应客户端配置文件

新客户端配置文件,和其他客户端账号的配置文件只有 [Interface] 中的客户端私匙、内网IP地址参数不一样。

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3. echo “[Interface]
  4. # 客户端的私匙,对应服务器配置中的客户端公匙(自动读取上面刚刚生成的密匙内容)
  5. PrivateKey = $(cat cprivatekey1)
  6. # 客户端的内网IP地址(如果上面你添加的内网IP不是 .3 请自行修改)
  7. Address = 10.0.0.3/24
  8. # 解析域名用的DNS
  9. DNS = 8.8.8.8
  10. # 保持默认
  11. MTU = 1420
  12. [Peer]
  13. # 服务器的公匙,对应服务器的私匙(自动读取上面刚刚生成的密匙内容)
  14. PublicKey = $(cat spublickey)
  15. # 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
  16. Endpoint = X.X.X.X:443
  17. # 因为是客户端,所以这个设置为全部IP段即可
  18. AllowedIPs = 0.0.0.0/0, ::0/0
  19. # 保持连接,如果客户端或服务端是 NAT 网络(比如国内大多数家庭宽带没有公网IP,都是NAT),那么就需要添加这个参数定时链接服务端(单位:秒),如果你的服务器和你本地都不是 NAT 网络,那么建议不使用该参数(设置为0,或客户端配置文件中删除这行)
  20. PersistentKeepalive = 25″|sed ‘/^#/d;/^\s*$/d’ > client1.conf
  21. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

接下来你就可以将这个客户端配置文件 [/etc/wireguard/client.conf] 通过SFTP、HTTP等方式下载到本地了。

不过我更推荐,SSH中打开显示配置文件内容并复制出来后,本地设备新建一个文本文件 [xxx.conf] (名称随意,后缀名需要是 .conf) 并写入其中,提供给 WireGuard 客户端读取使用。

  1. cat /etc/wireguard/client.conf

服务端配置文件删除用户

要删除呢也很简单,首先你需要知道你要删除用户的客户端公匙(例如上面刚刚生成的 cpublickey1)。

当然,你也可以手动打开配置文件删除,记得修改后重启。下面的动态删除无需重启。

  1. wg set wg0 peer $(cat cpublickey1) remove
  2. # 如果客户端公匙文件还在,那么可以执行这个命令删除。
  3. # 注意:该命令执行后,就可以跳过下面这段命令了,直接保存配置文件即可。
  4. ——————————————
  5. # 如果客户端公匙文件已删除,那么可以通过 wg 命令看到客户端的公匙:
  6. # 执行命令后输出内容如下(仅供参考,下面的不是让你执行的命令):
  7. interface: wg0
  8. public key: xxxxxxxxxxxxxxxxx #服务端私匙
  9. private key: (hidden)
  10. listening port: 443
  11. peer: xxxxxxxxxxxxxxxxxxxx #客户端账号的公匙
  12. allowed ips: 10.0.0.2/32 #客户端账号的内网IP地址
  13. peer: xxxxxxxxxxxxxxxxxxxx #客户端账号的公匙
  14. allowed ips: 10.0.0.3/32 #客户端账号的内网IP地址
  15. # 以上内容仅为输出示例(仅供参考)
  16. # 复制你要删除的客户端账号的公匙(peer 后面的字符),替换下面命令中的 xxxxxxx 并执行即可
  17. wg set wg0 peer xxxxxxx remove
  18. # 执行后,我们在用 wg 命令查看一下是否删除成功。

如果删除成功,那么我们就保存到配置文件:

  1. wg-quick save wg0
标签:WireGuard

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论 *

显示名称 *

电子邮箱地址 *

网站地址

在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK