WireGuard 配置参数说明

46 min read

WireGuard 是一种现代的 VPN (虚拟私人网络) 协议,旨在提供比传统 VPN 解决方案更高的安全性、速度和简便性。它使用了最新的加密技术,设计上追求最小化,易于配置且性能优异。WireGuard 的设计目标是比目前流行的 VPN 协议,如 OpenVPN 和 IPSec,更快、更简单、更轻量级,同时提供强大的安全性能。

  • 简洁高效:WireGuard 代码基非常精简,大约只有 OpenVPN 的 1/10,这使得它易于审计和验证安全性。
  • 高级加密:采用了最先进的加密技术,包括 Curve25519、ChaCha20、Poly1305、BLAKE2s 等,确保了数据传输的安全。
  • 快速且可靠:WireGuard 旨在提供高性能,减少延迟,提高连接的稳定性,使其成为处理高速网络连接的理想选择。
  • 易于配置:配置过程简单直观,相比其他 VPN 解决方案,WireGuard 的配置文件更加简洁明了。
  • 跨平台支持:支持包括 Linux、Windows、macOS、BSD、iOS 和 Android 在内的多个平台。

WireGuard 工作在网络层,可以看作是一种安全的 IP 隧道技术。它在客户端和服务器之间建立一个虚拟的网络接口,通过这个接口,数据包在发送前会被加密,并在接收时解密,从而实现两端之间的安全通信。

WireGuard 的设计充分考虑了安全性,采用了无状态协议,意味着不会记录任何关于连接状态的信息,这有助于减少潜在的安全漏洞。同时,它也支持最新的加密算法,以确保通信过程的安全。

WireGuard 适用于多种网络环境和场景,包括但不限于:

  • 个人隐私保护:在公共 Wi-Fi 环境下保护网络通信,防止数据泄露。
  • 企业远程工作:为远程工作者提供安全的访问企业内部网络资源的能力。
  • 跨地域网络连接:连接分布在不同地区的网络资源,实现网络的互联互通。

WireGuard安装

WireGuard 支持多种操作系统平台,下面是在一些主流平台上安装 WireGuard 的指南:

对于大多数 Linux 发行版,WireGuard 可以直接通过官方的包管理器安装。例如,在基于 Debian(如 Ubuntu)和基于 RPM 的发行版(如 Fedora)上的安装命令如下:

  • Debian/Ubuntu:

    sudo apt update
    sudo apt install wireguard
    
  • Fedora:

    sudo dnf install wireguard-tools
    
  • Arch Linux:

    sudo pacman -S wireguard-tools
    

在 Windows 上,WireGuard 提供了一个简单的安装程序,您可以从官方网站下载。

  1. 访问 WireGuard 官网 下载页面
  2. 下载适用于 Windows 的安装程序。
  3. 运行下载的安装程序并按照指示完成安装。

在 macOS 上,WireGuard 可以通过 Homebrew 安装,或者下载官方提供的 macOS 客户端。

  • 使用 Homebrew 安装:

    brew install wireguard-tools
    
  • 下载安装:

    1. 访问 WireGuard 官网下载页面。
    2. 下载适用于 macOS 的客户端。
    3. 打开下载的 .dmg 文件,将 WireGuard 应用拖到应用程序文件夹中。

在 iOS 设备上,您可以直接从 App Store 安装 WireGuard 应用程序。

  1. 打开 App Store。
  2. 搜索 “WireGuard” 并找到 WireGuard VPN 应用。
  3. 点击获取或下载,然后按照屏幕上的指示安装。

在 Android 设备上,WireGuard 可以通过 Google Play Store 或 F-Droid 安装。

  • Google Play Store:

    1. 打开 Google Play Store 应用。
    2. 搜索 “WireGuard” 并选择 WireGuard VPN 应用。
    3. 点击安装。
  • F-Droid:

    1. 在支持 F-Droid 的设备上添加 F-Droid 仓库。
    2. 搜索 WireGuard 并安装。

手动配置 WireGuard

  1. 生成密钥对:为每个设备生成公钥和私钥。
    • 生成命令:wg genkey | tee privatekey | wg pubkey > publickey
  2. 服务器配置
    • 创建 /etc/wireguard/wg0.conf 配置文件。
    • 配置内容包括服务器私钥、监听端口、客户端公钥等。
  3. 客户端配置
    • 创建客户端配置文件,通常命名为 wg0.conf
    • 配置包括客户端私钥、服务器公钥、VPN IP 地址、DNS 等。
  4. 启动 WireGuard 服务
    • 启动命令:sudo wg-quick up wg0
    • 设置自动启动:sudo systemctl enable wg-quick@wg0

配置文件说明

[Interface]
Address = 10.0.0.2/24
PrivateKey = <客户端私钥>

[Peer]
PublicKey = <服务器公钥>
AllowedIPs = 0.0.0.0/0
Endpoint = <服务器的IP地址或域名>:51820

WireGuard Easy

WireGuard Easy (wg-easy) 是一个简化 WireGuard VPN 配置和管理的工具,提供了一个用户友好的 web 界面。它使得创建和管理 WireGuard VPN 服务器和客户端配置变得更加容易和直观。以下是关于如何使用 wg-easy 的基本指导。

wg-easy 可以作为 Docker 容器运行,这使得安装过程非常简单。首先,确保您的系统上已经安装了 Docker。然后,可以使用以下命令来运行 wg-easy 的 Docker 容器:

docker run -d \
  --name=wg-easy \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e WG_HOST=my-vpn.example.com \
  -e PASSWORD='your_password' \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  -v /path/to/wg-easy/data:/etc/wireguard \
  --restart=unless-stopped \
  weejewel/wg-easy
  • --name=wg-easy 设置容器的名称为 wg-easy
  • --cap-add=NET_ADMIN--cap-add=SYS_MODULE 为容器添加必要的权限以管理网络接口和加载内核模块。
  • -e WG_HOST=my-vpn.example.com 设置您的 WireGuard 服务器的公共域名或IP地址。
  • -e PASSWORD='your_password' 设置进入 wg-easy 管理界面的密码。
  • -p 51820:51820/udp 映射 WireGuard 的默认端口。
  • -p 51821:51821/tcp 映射 wg-easy 管理界面的端口。
  • -v /path/to/wg-easy/data:/etc/wireguard 将 WireGuard 的配置文件目录映射到宿主机上,以便持久化数据。
  • weejewel/wg-easy 是 wg-easy 的 Docker 镜像。

安装并运行 wg-easy 后,您可以通过访问 http://your-server-ip:51821 来打开 wg-easy 的 web 界面。首次访问时,系统会提示您输入上述命令中设置的密码。

在 wg-easy 的 web 界面中,您可以:

  • 查看服务器信息:包括公钥、监听端口等。
  • 添加客户端:通过简单的表单输入客户端名称,自动生成配置文件。
  • 管理客户端:查看客户端的详细信息,下载客户端配置文件,或删除不再需要的客户端。
  • 修改服务器配置:调整一些基本设置,如服务器的监听端口、DNS 服务器等。

wg-easy 旨在简化 WireGuard VPN 的部署和管理,使得即使是没有太多网络知识的用户也能轻松设置 VPN。通过其直观的 UI,用户可以快速配置和管理 VPN,无需直接编辑配置文件或使用命令行工具。

WireGuard EASY 配置参数说明

以下是通过设置环境变量 (-e KEY="VALUE") 配置的选项:

  • PORT:Web UI 的 TCP 端口,默认为 51821
  • WEBUI_HOST:Web UI 绑定的 IP 地址,默认为 0.0.0.0
  • PASSWORD:设置后,登录 Web UI 时需要密码。
  • WG_HOST:VPN 服务器的公共主机名。
  • WG_DEVICE:WireGuard 流量应通过的以太网设备,默认为 eth0
  • WG_PORT:VPN 服务器的公共 UDP 端口,默认为 51820(Docker 容器内始终监听 51820)。
  • WG_MTU:客户端将使用的 MTU,默认服务器使用 WireGuard 默认 MTU。
  • WG_PERSISTENT_KEEPALIVE:保持“连接”开放的秒数,默认为 0(不保持)。
  • WG_DEFAULT_ADDRESS:客户端 IP 地址范围,默认为 10.8.0.x
  • WG_DEFAULT_DNS:客户端将使用的 DNS 服务器,默认为 1.1.1.1
  • WG_ALLOWED_IPS:客户端将使用的允许 IP,默认为 0.0.0.0/0, ::/0(路由所有流量)。
  • WG_PRE_UPWG_POST_UPWG_PRE_DOWNWG_POST_DOWN:分别在接口启动前后和关闭前后执行的命令。

WireGuard 全局配置选项

  • [Interface] 部分:定义了关于 VPN 接口本身的设置。

    • PrivateKey:接口的私钥,用于 WireGuard 加密。必须保密。
    • Address:分配给此接口的 IP 地址。可以是 IPv4 或 IPv6 地址,也可以同时指定多个地址。
    • ListenPort:(可选)WireGuard 侦听的端口。如果未指定,将随机选择端口。
    • DNS:(可选)通过 VPN 连接时使用的 DNS 服务器地址。可以指定多个 DNS 服务器,用逗号分隔。
    • MTU:(可选)指定接口的最大传输单元(MTU)大小。如果未指定,WireGuard 会尝试自动确定最佳值。
    • Table:(可选)指定路由表 ID,用于配置路由规则。特殊值 off 可以禁止自动添加路由。
  • [Peer] 部分:定义了与此接口连接的对等方(即远程设备)的设置。

    • PublicKey:对等方的公钥。用于 WireGuard 加密的公开部分。
    • PresharedKey:(可选)一个预共享密钥,用于增加连接的安全性。必须在双方配置中匹配。
    • AllowedIPs:定义了哪些 IP 地址应该通过这个特定的对等方路由。这可以用于分流。
    • Endpoint:对等方的公网地址和端口,格式为 IP:port
    • PersistentKeepalive:(可选)发送保活数据包的间隔(秒)。用于保持 NAT 映射,对于经常变动的网络环境很有用。
    • ExcludePrivateIPs:(可选,较新版本的 WireGuard 特性)如果设置为 true,则不会通过 VPN 路由私有(本地)IP 地址。
  • PostUpPostDown 脚本:这些是在接口启动(wg-quick up)或关闭(wg-quick down)时执行的 shell 命令。它们可以用于配置防火墙规则、设置路由等。

    • 例如,PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 会在接口启动时设置 NAT 和转发规则。
    • PostDown 通常包含相应的命令来清除或撤销 PostUp 中设置的规则。