可搜索,可注册,可登录,致敬逗比大佬!尽在Lite版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

WireGuard —— 多用户配置教程

逗比 Toyo 319℃ 0评论

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

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


简单说明

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

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

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


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

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

服务端配置文件添加用户

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

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

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

然后查看 WireGuard 状态:

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

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

  1. wgquick save wg0

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


生成对应客户端配置文件

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

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

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

  1. wgquick save wg0

完啦~


是不是很简单咧~ 有问题请在下面留言。

参考教程:https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8

参考视频:https://youtu.be/X4doKJmjE4o

转载请注明:逗比根据地 » WireGuard —— 多用户配置教程

喜欢 (13)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址