complexorganizations/wireguard-manager
GitHub: complexorganizations/wireguard-manager
一个基于 Shell 的 WireGuard 自动化管理工具,简化 VPN 部署与日常运维。
Stars: 1849 | Forks: 223
# WireGuard-Manager: 保护您的网络 💻 🖥!
## 🔰 简介
欢迎使用 WireGuard-Manager,这是您设置 WireGuard(一种前沿的 VPN 协议)的解决方案。WireGuard 以其速度、安全性和易用性而闻名,是个人及专业 VPN 需求的理想选择。此工具旨在简化 WireGuard 的安装与管理,确保安全高效的网络体验。
## 质量与可靠性
### 项目信息与状态
- **最新版本**:随时关注我们的最新版本:
[](https://github.com/complexorganizations/wireguard-manager/releases/latest)
- **每月应用发布**:跟踪我们的定期月度发布:
[](https://github.com/complexorganizations/wireguard-manager/actions/workflows/monthly-application-release.yml)
### 构建状态
- **代码质量保证**:通过 ShellCheck 验证可靠性:
[](https://github.com/complexorganizations/wireguard-manager/actions/workflows/shell-check-wireguard-manager.yml)
- **被屏蔽主机**:监控被屏蔽主机更新的状态:
[](https://github.com/complexorganizations/wireguard-manager/actions/workflows/auto-update-blocked-hosts.yaml)
- **命名缓存**:检查命名缓存的更新:
[](https://github.com/complexorganizations/wireguard-manager/actions/workflows/auto-update-named-cache.yml)
- **软件更新**:跟踪最新的软件构建:
[](https://github.com/complexorganizations/wireguard-manager/actions/workflows/build-latest-version.yml)
### 贡献与问题
- **开放问题跟踪**:查看并处理当前开放的问题:
[](https://github.com/complexorganizations/wireguard-manager/issues)
- **贡献机会**:深入参与开放的拉取请求并贡献:
[](https://github.com/complexorganizations/wireguard-manager/pulls)
### 许可证
- **项目许可证**:我们的工作采用 Apache 2.0 许可证:
[](https://github.com/complexorganizations/wireguard-manager/blob/main/license.md)
## 🤷 什么是 VPN?
虚拟专用网络(VPN)允许用户通过共享或公共网络发送和接收数据,就像其计算设备直接连接到私有网络一样。因此,在 VPN 上运行的后端系统(PC、智能手机等)可以受益于个人网络特性、保护和管理。加密是 VPN 连接的标准方面,但不是内在属性。
## 📶 什么是 WireGuard?
WireGuard 是一个直接、快速且现代的 VPN,它使用最先进的加密技术。它旨在比 IPsec 更快、更简单、更精简、更有用,同时避免巨大的麻烦。它打算比 OpenVPN 性能更高。WireGuard 被设计为一个通用目的的 VPN,适用于嵌入式接口和超级计算机,适用于多种场景。最初为 Linux 内核发布,现在跨平台(Windows、macOS、BSD、iOS、Android)且广泛可部署。它目前处于大规模开发阶段,但已经被认为是业界最安全、最易用、最简单的 VPN 解决方案。
## 为何选择 WireGuard-Manager?
- **安全为先**:具备一流的加密和隐私功能。
- **用户友好**:易于安装和管理,无论您的技术水平如何。
- **高性能**:享受快速且可靠的连接。
- **开源**:由社区构建和改进。
## ⛳ 目标
- 稳健且现代的默认安全性。
- 配置最小化,配备必要的管理工具。
- 低延迟和高带宽操作的最优性能。
- 便于集成系统网络操作的简化命令行界面。
## 🌲 前置条件
- 支持多种系统,包括 Alma、Alpine、Arch、CentOS、Debian、Fedora、FreeBSD、Kali、Mint、Manjaro、Neon、Oracle、Pop、Raspbian、RHEL、Rocky、Ubuntu 等。
- 需要 Linux 内核 3.1 或更新版本。
- 需要超级用户权限或具有 `sudo` 权限的用户账户。
## 🚦 快速开始
1. **安装**:简单快速的安装过程。
2. **配置**:易于遵循的配置步骤。
3. **管理**:用于管理 VPN 的用户友好界面。
## 安装指南
https://github.com/complexorganizations/wireguard-manager/assets/102563715/dd539835-2c30-4146-b4f8-940329aa6070
## 🐧 安装
为确保在各种 Linux 系统上成功安装 WireGuard Manager 脚本,必须安装 `curl` 和 `bash`。以下是安装 `curl`、`bash` 和 `resolvconf` 的扩展安装指南,适用于不同 Linux 发行版:
### 在 Linux 系统上安装 `curl` & `bash` & `resolvconf`
#### 基于 Debian/Ubuntu 的系统(例如 Ubuntu、Debian、Linux Mint):
```
sudo apt update
sudo apt install curl bash resolvconf
```
#### 基于 Red Hat 的系统(例如 CentOS、RHEL、Fedora):
```
sudo yum install curl bash resolvconf
```
或
```
sudo dnf install curl bash resolvconf
```
#### 基于 Arch 的系统(例如 Arch Linux、Manjaro):
```
sudo pacman -Sy curl bash resolvconf
```
#### Alpine Linux:
```
sudo apk update
sudo apk add curl bash resolvconf
```
#### 其他发行版:
对于其他 Linux 发行版,您可以使用该发行版特定的包管理器来安装 `curl`、`bash` 和 `resolvconf`。包名称可能略有不同。
### 安装 WireGuard Manager 脚本
现在您已经安装了 `curl` 和 `bash`,可以按照以下说明安装 WireGuard Manager 脚本:
1. 首先,使用 `curl` 下载脚本并保存到 `/usr/local/bin/`:
curl https://raw.githubusercontent.com/complexorganizations/wireguard-manager/main/wireguard-manager.sh --create-dirs -o /usr/local/bin/wireguard-manager.sh
2. 接下来,使脚本对用户可执行:
chmod +x /usr/local/bin/wireguard-manager.sh
3. 最后,执行脚本:
bash /usr/local/bin/wireguard-manager.sh
### 连接到 WireGuard 接口
在您的 `/etc/wireguard/clients` 目录中,您会找到 `.conf` 文件。这些是 peer 配置文件。从您的 WireGuard 接口下载它们,并使用您喜欢的 WireGuard peer 进行连接。
## 🔑 用法
```
usage: bash /usr/local/bin/wireguard-manager.sh # --install
--install Installs the WireGuard interface on your system
--start Starts the WireGuard interface if it's not already running
--stop Stops the WireGuard interface if it's currently running
--restart Restarts the WireGuard interface
--list Lists all the peers currently connected to the WireGuard interface
--add Adds a new peer to the WireGuard interface
--remove Removes a specified peer from the WireGuard interface
--reinstall Reinstalls the WireGuard interface, keeping the current configuration
--uninstall Uninstalls the WireGuard interface from your system
--update Updates the WireGuard Manager to the latest version
--ddns Updates the IP address of the WireGuard interface using Dynamic DNS
--backup Creates a backup of your current WireGuard configuration
--restore Restores the WireGuard configuration from a previous backup
--purge Removes all peers from the WireGuard interface
--help Displays this usage guide
```
## 🥰 功能特性
- WireGuard 接口的流畅安装与配置
- 方便的备份与恢复
- peer 配置自动过期
- 对 IPv4 和 IPv6 的支持,带泄漏保护
- 为 peer 提供多种公共 DNS 选项
- 可选使用 Unbound 自托管解析器以实现 DNS 泄漏预防和 DNSSEC 支持
- 轻松管理 Nftables 规则和转发
- 轻松移除和卸载 WireGuard 接口
- 强制预共享密钥以提供额外安全层
- 众多其他细微功能以增强用户体验
## 💡 配置选项
- `PRIVATE_SUBNET_V4_SETTINGS`:定义 VPN 内部使用的私有 IPv4 子网。默认为 `10.0.0.0/8`,这是一个标准私有 IP 范围。
- `PRIVATE_SUBNET_V6_SETTINGS`:设置私有 IPv6 子网。默认 `fd00:00:00::0/8` 是典型的私有 IPv6 范围。
- `SERVER_HOST_V4_SETTINGS`:用于检测服务器的公共 IPv4 地址,对从本地网络外部建立连接至关重要。
- `SERVER_HOST_V6_SETTINGS`:这是前一个设置的 IPv6 对应项,用于检测服务器的公共 IPv6 地址。
- `SERVER_PUB_NIC_SETTINGS`:使用 `ip` 命令确定本地公共网络接口,对服务器在公共网络上的通信至关重要。
- `SERVER_PORT_SETTINGS`:指定 WireGuard 接口的默认公共端口(`51820`),VPN 流量将通过该端口传输。
- `NAT_CHOICE_SETTINGS`:配置使用 VPN 隧道的 keep-alive 功能,有助于保持连接活跃。
- `MTU_CHOICE_SETTINGS`:为 WireGuard peer 设置最大传输单元(MTU),影响通过网络传输的数据包大小。
- `SERVER_HOST_SETTINGS`:用于定义服务器特定配置的一般设置。
- `CLIENT_ALLOWED_IP_SETTINGS`:定义允许连接到 VPN 的客户端 范围,限制哪些设备可以连接。
- `AUTOMATIC_UPDATES_SETTINGS`:可能涉及系统是否自动更新软件或配置。
- `AUTOMATIC_BACKUP_SETTINGS`:涉及系统配置或数据的自动备份。
- `DNS_PROVIDER_SETTINGS`:设置网络的 DNS 提供商。如果不使用 Unbound,需要指定其他 DNS 服务。
- `CONTENT_BLOCKER_SETTINGS`:可能涉及通过网络安全地阻止某些类型内容的设置。
- `CLIENT_NAME`:在 VPN 中分配给 WireGuard peer(客户端)的名称。
- `AUTOMATIC_CONFIG_REMOVER`:可能是一个设置,用于在不再需要或经过一段时间后自动移除某些配置。
## 👉👈 与 Linux 发行版的兼容性
| 操作系统 | i386 支持 | amd64 支持 | armhf 支持 | arm64 支持 |
|----------|-----------|------------|------------|------------|
| Ubuntu 14 及以下 | 否 | 否 | 否 | 否 |
| Ubuntu 16 及以上 | 是 | 是 | 是 | 是 |
| Debian 7 及以下 | 否 | 否 | 否 | 否 |
| Debian 8 及以上 | 是 | 是 | 是 | 是 |
| CentOS 6 及以下 | 否 | 否 | 否 | 否 |
| CentOS 7 及以上 | 是 | 是 | 是 | 是 |
| Fedora 29 及以下 | 否 | 否 | 否 | 否 |
| Fedora 30 及以上 | 是 | 是 | 是 | 是 |
| RedHat 6 及以下 | 否 | 否 | 否 | 否 |
| RedHat 7 及以上 | 是 | 是 | 是 | 是 |
| Kali 1.0 及以下 | 否 | 否 | 否 | 否 |
| Kali 1.1 及以上 | 是 | 是 | 是 | 是 |
| Arch Linux | 是 | 是 | 是 | 是 |
| Raspbian | 是 | 是 | 是 | 是 |
| PopOS | 是 | 是 | 是 | 是 |
| Manjaro | 是 | 是 | 是 | 是 |
| Mint | 是 | 是 | 是 | 是 |
| AlmaLinux | 是 | 是 | 是 | 是 |
| Alpine | 是 | 是 | 是 | 是 |
| FreeBSD | 是 | 是 | 是 | 是 |
| KDE Neon | 是 | 是 | 是 | 是 |
| Rocky Linux | 是 | 是 | 是 | 是 |
| Oracle Linux | 是 | 是 | 是 | 是 |
## ☁️ 与云提供商的兼容性
| 云服务 | 支持情况 |
|--------|----------|
| AWS | 是 |
| Google Cloud | 是 |
| Linode | 是 |
| Digital Ocean | 是 |
| Vultr | 是 |
| Microsoft Azure | 是 |
| OpenStack | 是 |
| Rackspace | 是 |
| Scaleway | 是 |
| EuroVPS | 是 |
| Hetzner Cloud | 否 |
| Strato | 否 |
## 🛡️ 与虚拟化的兼容性
| 虚拟化 | 支持情况 |
|--------|----------|
| KVM | 是 |
| None | 是 |
| Qemu | 是 |
| LXC | 是 |
| Microsoft | 是 |
| Vmware | 是 |
| OpenVZ | 否 |
| Docker | 否 |
| WSL | 否 |
## 💻 与 Linux 内核的兼容性
| 内核版本 | 兼容性 |
|----------|--------|
| Linux Kernel 3.0 及以下 | 否 |
| Linux Kernel 3.1 及以上 | 是 |
## 🙋 常见问题解答
**您推荐哪些托管提供商?**
- **Google Cloud**:提供全球位置并支持 IPv4,起价每月 3.50 美元。[访问 Google Cloud](https://cloud.google.com)
- **Amazon Web Services (AWS)**:提供全球位置并支持 IPv4,起价每月 5.00 美元。[访问 AWS](https://aws.amazon.com)
- **Microsoft Azure**:提供全球位置并支持 IPv4,起价每月 5.00 美元。[访问 Azure](https://azure.microsoft.com)
- **Linode**:包括全球位置,支持 IPv4 & IPv6,起价每月 5.00 美元。[访问 Linode](https://www.linode.com)
- **Vultr**:提供全球位置,支持 IPv4 & IPv6,起价每月 3.50 美元。[访问 Vultr](https://www.vultr.com)
**您推荐哪些 WireGuard 客户端?**
- **Windows**:可从其[官方网站](https://www.wireguard.com/install)下载 WireGuard。
- **Android**:WireGuard 可在[Google Play 商店](https://play.google.com/store/apps/details?id=com.wireguard.android)获取。
- **macOS**:可从[Mac App Store](https://itunes.apple.com/us/app/wireguard/id1451685025)下载 WireGuard。
- **iOS**:WireGuard 可在[App Store](https://itunes.apple.com/us/app/wireguard/id1441195209)获取。
## 更多信息
**在哪里可以访问全面的 WireGuard 文档?**
- [WireGuard 手册](https://www.wireguard.com) 提供所有可用选项的详细信息。
**如何在没有交互提示的情况下安装 WireGuard(适用于无头安装)?**
- 执行命令:`./wireguard-manager.sh --install`
**是否有自托管 VPN 的替代方案?**
- 是的,[CloudFlare Warp](https://1.1.1.1) 是一个可行的替代方案。
**为什么所有代码都集中在一个地方?**
- 把它想象成一个万能遥控器:拥有一个执行所有功能的单一设备(或代码库),比拥有多个专门的设备更高效。
**WireGuard 需要哪个端口和协议?**
- 您需要转发所选的端口或默认端口 `51820`,使用 UDP 协议。
**是否需要为 Unbound 转发端口?**
- 不需要,因为 Unbound 的 DNS 流量通过 VPN 路由(端口 53)。
**内容屏蔽器限制什么?**
- 内容屏蔽器限制广告、跟踪器、恶意软件和钓鱼尝试。
**收集了哪些信息,如何使用?**
- 不收集或保留任何日志或数据。所有操作都在系统内执行,不传输外部日志。
## 设置您自己的 VPN 服务器
要设置您自己的 VPN 服务器,您需要以下项目:
### Raspberry Pi 5 安装组件
- **Raspberry Pi 5**:[查看产品](https://www.raspberrypi.com/products/raspberry-pi-5/)
- **Raspberry Pi 外壳**:[查看产品](https://www.raspberrypi.com/products/raspberry-pi-5-case/)
- **Raspberry Pi 主动散热器**:[查看产品](https://www.raspberrypi.com/products/active-cooler)
- **Raspberry Pi USB-C 电源适配器**:[查看产品](https://www.raspberrypi.com/products/27w-power-supply/)
- **Micro SD 卡**:[在 Amazon 上查看](https://www.amazon.com/dp/B06XWMQ81P)
- **以太网电缆**:[在 Amazon 上查看](https://www.amazon.com/dp/B00N2VIALK)
- **SD 卡读卡器**:[在 Amazon 上查看](https://www.amazon.com/dp/B0957HQ4D1)
### 构建您自己的 VPN 的预估成本
- 一次性硬件成本约为 100 美元。请注意,将会有持续的电费和网络费用。
## WireGuard 资源
- 主页:[WireGuard 官方站点](https://www.wireguard.com)
- 安装指南:[安装 WireGuard](https://www.wireguard.com/install/)
- 快速入门:[WireGuard 快速入门](https://www.wireguard.com/quickstart/)
- 编译说明:[编译 WireGuard](https://www.wireguard.com/compilation/)
- 白皮书:[WireGuard 白皮书](https://www.wireguard.com/papers/wireguard.pdf)
## VPN 速度对比
本节比较了使用无 VPN、WireGuard 和 OpenVPN 时的互联网速度差异。
### 无 VPN(正常连接)

### WireGuard 速度测试

### OpenVPN 速度测试

## 🙅 内容屏蔽 vs. 无内容屏蔽
https://user-images.githubusercontent.com/16564273/125283630-9845d180-e2e6-11-8b7d-f30a8f2eae8a.mp4
## 📐 架构

## 🤝 代码开发
**在不克隆仓库的情况下开发代码**
您无需克隆仓库即可直接操作代码。这得益于 Visual Studio Code 的在线平台。点击下方链接,即可在浏览器中预览和编辑代码,利用 Visual Studio Code 直观的界面。此方法简化了开发流程,尤其适合希望快速修改代码或不想在本地机器上设置整个仓库的人员。
[](https://open.vscode.dev/complexorganizations/wireguard-manager)
## 🐛 代码调试
**克隆仓库后的详细调试流程**
对于全面的调试流程,您可能需要将仓库克隆到本地系统。此方法允许您在本地环境中彻底测试和调试代码。请按照以下步骤克隆仓库并启动调试流程:
1. **克隆仓库**:使用 Git 命令将仓库克隆到您偏好的目录中,例如本例中的 `/root/`。此步骤将在线仓库的所有代码复制到您的本地机器。
```
git clone https://github.com/complexorganizations/wireguard-manager /root/
```
2. **开始调试**:克隆完成后,进入脚本目录并启动调试流程。脚本将以调试模式执行,提供每一步的详细输出。此输出会重定向到日志文件,便于检查。日志文件位于同一目录中,存储所有调试信息,便于追踪问题或了解脚本行为。
```
bash -x /root/wireguard-manager/wireguard-manager.sh >>/root/wireguard-manager/wireguard-manager.log
```
按照这些步骤,您可以选择不克隆仓库快速在线修改代码,或通过克隆到本地进行更全面的调试。每种方法都有其优势,具体取决于您的需求和工作范围。
### WireGuard Manager 详细调试指南
1. **设置环境**
- 确保系统已安装所有必要软件,包括 Git、Bash 以及 WireGuard Manager 所需的所有依赖项。
- 虽然本例使用 Visual Studio Code,但您可以使用任何支持 Git 和 Bash 的 IDE。
2. **克隆仓库**
- 使用 Git 将 WireGuard Manager 仓库克隆到本地目录:`git clone https://github.com/complexorganizations/wireguard-manager /path/to/local-directory`
- 避免在根目录进行开发。选择用户目录以获得更好的安全性和权限管理。
3. **理解代码库**
- 审查代码以了解其结构、约定和文档。
- 检查仓库中的 README 文件或 Wiki 页面,以获取有关代码库的见解。
4. **设置调试工具**
- 在 IDE 中配置调试工具。设置断点、观察变量并使用逐步调试功能。
- 确保脚本中的日志记录设置正确,以捕获足够的详细信息用于调试。
5. **以调试模式运行脚本**
- 使用 `bash -x` 运行脚本以获取详细跟踪输出:`bash -x /path/to/local-directory/wireguard-manager/wireguard-manager.sh >> /path/to/local-directory/wireguard-manager.log`
- 定期检查日志文件以查找错误或意外行为。
6. **在不同环境中测试**
- 在 Docker 容器或虚拟机等隔离环境中测试脚本,以了解其在不同设置下的行为。
- 如果可能,在不同操作系统上测试以确保兼容性。
7. **协作与寻求反馈**
- 将更改提交到新分支并使用拉取请求进行审查。
- 请求同行代码审查,以从不同角度发现潜在问题。
8. **记录发现**
- 如果发现未记录的行为或修复,请更新项目文档。
- 使用仓库的问题跟踪器报告错误或提出改进建议。
9. **自动化测试**
- 为关键功能创建自动化测试,以便及早发现错误。
- 使用 CI 工具在每次提交或拉取请求时自动运行测试。
10. **保持与仓库同步**
- 定期更新本地仓库,以保持与主项目的同步,避免冲突。
通过遵循这些步骤并根据您自己的开发环境和流程进行调整,开发人员可以更有效地调试并为 WireGuard Manager 项目做出贡献。这种全面的方法适用于各种技能水平和偏好,从而促进更具包容性和高效的开发过程。
## 💋 致谢
此项目得以实现,感谢开源社区的贡献。
## 📱 社区与贡献
加入我们的社区 [](https://discord.gg/CdjBYMScMS) 和 [](https://join.slack.com/t/complexorgani-w5b4873/shared_invite/zt-2e9gz2wh2-dWuylZLgaEgFywNKF_iQRQ) 来为项目贡献力量、分享想法并获得帮助。
## 🤝 赞助商
本项目由以下机构赞助:
[](https://www.digitalocean.com) [](https://cloud.google.com) [](https://aws.amazon.com) [](https://linode.com)
## 备份
https://gitlab.com/complexorganizations/wireguard-manager
## 📝 许可证
WireGuard-Manager 在 Apache License Version 2.0 下授权。更多详细信息,请参考我们的[许可文件](https://github.com/complexorganizations/wireguard-manager/blob/main/license.md)。
标签:Cutter, GitHub Actions, ShellCheck, Shell脚本, VPN, WireGuard, 个人与企业VPN, 主机阻断, 二进制发布, 命名缓存, 安全通信, 屏蔽追踪, 应用安全, 开源工具, 开源框架, 持续集成, 月度发布, 版本发布, 特权提升, 用户友好, 网络安全, 网络虚拟专用网, 网络隐私, 自动化部署, 自动笔记, 远程访问, 隐私保护, 高效网络