13

WireGuard 多用户配置教程

 3 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.
neoserver,ios ssh client

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

发表评论 取消回复

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

评论 *

显示名称 *

电子邮箱地址 *

网站地址

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


Recommend

  • 6
    • yuanfentiank789.github.io 4 years ago
    • Cache

    mac下多用户使用ssh管理配置

    如果你的工作环境中有多个git项目,而且每个项目上git的用户名,邮箱等,都不一样,那么有两种方法,一是使用https的方式,但是这个方式的话,基本每次push的时候,都要输入密码,太麻烦了。所以还是比较喜欢直接使用ssh的方式,本地托管个ssh的密钥。既不要输...

  • 91

    去年出过一期在 OpenWRT 上部署 OpenConnect VPN 的详细教程,主要用于在外办公方便VPN 回家的使用场景.博主几乎每天使用持续了一年多,在 macOS 和 iOS 上体验都非常的稳定.而今天的主角是已经火了几年的...

  • 11

    Git 多用户笔者有多个 GitHub 账号,一个是放出来贴一些东西的,另一个才是自己平时使用的账号。但是在同一台计算机下操控两个账号总是会有些不方便,我们要特殊配置一下。Global Config如果以前为了方便设置了全部变量,如 use...

  • 15

    WireGuard 的 Windows/Android 客户端简单使用教程 目前 WireGuard 还只有个 Android 版的官方客户端,而 Windows 和 Android(另一个) 以及 IOS 客户端都是由第三方(TunSafe)制作(开源)的。至于 Mac 和 Linux 都还没有可视化的程序,...

  • 2

    如何配置wireguard服务端及客户端 发表于 2020-04-05...

  • 7
    • blog.51cto.com 2 years ago
    • Cache

    pfSense配置WireGuard VPN

    ​ ​WireGuard​​是一种 VPN 工具,它比其它VPN之类的工具更快、更简单、更精简。在本教程中我们将深入研究如何在pfSense上安装WireGuard。以下的教程在pfSense2.6系统上完成。安装配置Wire...

  • 8
    • www.ioiox.com 2 years ago
    • Cache

    CentOS 7 安装 WireGuard 详细教程

    网上虽然有很多 WireGuard 的安装教程,而实际上我查找的很多都写的不够详细或者完整,本来在 OpenWrt 上已经很稳定的在使用了,但还是折腾在 Linux 服务器上尝试安装,此次教程适用于安装在内网 ESXi 的虚拟机上以及公网境外服务器上,都能根据需求配置好所需要的路...

  • 12

    首页技术宅X-UI 安装使用教程,支持多协议多用户的 Xray 可视化面板X-UI 安装使用教程,支持多协议多用户的 Xray 可视化面板

  • 12

    前两天赶上阿里云搞活动,薅了一个 99 一年的 ECS。因为要接进咱的探针,就得跟我的服务器组个网。之前都是用 NAS 上装的 wgeasy,这回想想,咱的 RouterOS 也有 Wireguard,那干脆吃个螃...

  • 3
    • blog.lucien.ink 1 year ago
    • Cache

    WireGuard 配置备忘

    WireGuard 配置备忘 本文地址:blog.lucien.ink/archives/545最近学会了用 WireGuard 来打洞,在此记录...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK