- 简单的架构和现代加密:用于路由的每个对等密钥和 AllowedIP。
- 在 Linux 上快速安装桌面和移动设备的官方应用程序。
- 性能优于 IPsec/OpenVPN,具有漫游和低延迟。
如果你正在寻找一个 VPN 快速、安全且易于部署, WireGuard 这是目前最好的产品。它采用简约设计和现代加密技术,是家庭用户、专业人士和企业环境的理想选择,适用于电脑、移动设备和路由器。
在本实用指南中,您将找到从基础知识到 高级设置:Linux(Ubuntu/Debian/CentOS)上的安装、密钥、服务器和客户端文件、IP 转发、NAT/防火墙、Windows/macOS/Android/iOS 上的应用程序, 分裂隧道、性能、故障排除以及与 OPNsense、pfSense、QNAP、Mikrotik 或 Teltonika 等平台的兼容性。
什么是 WireGuard 以及为什么选择它?
WireGuard 是一个开源 VPN 协议和软件,旨在创建 通过 UDP 的 L3 加密隧道。它与 OpenVPN 或 IPsec 相比,凭借其简单性、性能和较低的延迟脱颖而出,并依赖于现代算法,例如 Curve25519、ChaCha20-Poly1305、BLAKE2、SipHash24 和 HKDF.
它的代码库非常小(大约 数千行),这有助于审计、减少攻击面并改善维护。它还集成到 Linux 内核中,允许 高传输速率 即使在普通硬件上也能实现敏捷响应。
它是多平台的:有官方应用程序 Windows、macOS、Linux、Android 和 iOS并支持面向路由器/防火墙的系统(如 OPNsense)。它还适用于 FreeBSD、OpenBSD、NAS 和虚拟化平台等环境。
内部工作原理
WireGuard 在对等体之间建立加密隧道(同行) 由密钥标识。每个设备都会生成一个密钥对(私钥/公钥),并只共享其 公钥 与另一端;从那里,所有流量都经过加密和验证。
指示 允许的IP 定义传出路由(哪些流量应该通过隧道)以及远程对等体在成功解密数据包后将接受的有效源列表。这种方法被称为 加密密钥路由 并大大简化交通政策。
WireGuard 非常出色, 漫游- 如果客户端 IP 发生变化(例如,从 Wi-Fi 切换到 4G/5G),会话将以透明且快速的方式重新建立。它还支持 终止开关 如果 VPN 出现故障,则阻止隧道外的流量。
Linux 上的安装:Ubuntu/Debian/CentOS
在 Ubuntu 上,WireGuard 可以在官方仓库中找到。更新软件包,然后安装软件即可获取模块和工具。 wg 和 wg-quick.
apt update && apt upgrade -y
apt install wireguard -y
modprobe wireguard
在 Debian 稳定版中,如果需要,您可以依赖不稳定的分支存储库,按照推荐的方法并使用 生产关怀:
sudo sh -c 'echo deb https://deb.debian.org/debian/ unstable main > /etc/apt/sources.list.d/unstable.list'
sudo sh -c 'printf "Package: *\nPin: release a=unstable\nPin-Priority: 90\n" > /etc/apt/preferences.d/limit-unstable'
sudo apt update
sudo apt install wireguard
在 CentOS 8.3 中,流程类似:如有必要,请激活 EPEL/ElRepo 存储库,然后安装软件包 WireGuard 以及相应的模块。
密钥生成
每个对等体必须有自己的 私钥/公钥对. 应用umask来限制权限并为服务器和客户端生成密钥。
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
在每台设备上重复此操作。切勿共享 私钥 并安全地保存两者。如果您愿意,可以创建不同名称的文件,例如 私钥服务器 y 公共服务器密钥.
服务器配置
在以下位置创建主文件 /etc/wireguard/wg0.conf. 分配一个 VPN 子网(不用于你的真实 LAN)、UDP 端口并添加一个块 [同行] 每个授权客户。
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <clave_privada_servidor>
# Cliente 1
[Peer]
PublicKey = <clave_publica_cliente1>
AllowedIPs = 10.0.0.2/32
您还可以使用另一个子网,例如 192.168.2.0/24并与多个同伴一起成长。为了快速部署,通常使用 快速工作组 使用 wgN.conf 文件。
客户端配置
在客户端创建一个文件,例如 wg0-客户端.conf,其中包含其私钥、隧道地址、可选 DNS 以及服务器的对等方及其公共端点和端口。
[Interface]
PrivateKey = <clave_privada_cliente>
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = <clave_publica_servidor>
Endpoint = <ip_publica_servidor>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
如果你把 允许的IPs = 0.0.0.0/0 所有流量都将通过 VPN;如果您只想访问特定的服务器网络,请将其限制在必要的子网内,这样可以减少 潜伏期 和消费。
服务器上的 IP 转发和 NAT
启用转发,以便客户端可以通过服务器访问互联网。使用 系统控制.
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.conf
sysctl -p
使用 iptables 为 VPN 子网配置 NAT,设置 WAN 接口(例如, eth0):
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
使其持久化 使用适当的软件包并保存规则以便在系统重启时应用。
apt install -y iptables-persistent netfilter-persistent
netfilter-persistent save
启动和验证
启动接口并启用服务随系统启动。此步骤将创建虚拟接口并添加 RUTAS 必要的。
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
wg
连接器 wg 您将看到对等点、密钥、传输和上次握手时间。如果您的防火墙策略限制较多,请允许通过该接口进入。 wg0 以及服务的 UDP 端口:
iptables -I INPUT 1 -i wg0 -j ACCEPT
官方应用程序:Windows、macOS、Android 和 iOS
在桌面上,您可以导入 .conf 文件。在移动设备上,该应用程序允许您从 QR码 包含配置;对于非技术客户来说非常方便。
如果您的目标是公开自托管服务,例如 Plex/雷达/声纳 通过您的 VPN,只需在 WireGuard 子网中分配 IP 并调整 AllowedIPs,以便客户端可以访问该网络;如果所有访问都是通过 隧道.
优缺点
WireGuard 非常快速且简单,但根据具体用例,务必考虑其局限性和特殊性。以下是一些最均衡的概述 相应.
优点 | 缺点 |
---|---|
清晰简短的配置,非常适合自动化 | 不包含本机流量混淆 |
即使在 移动 | 在某些传统环境中,高级选项较少 |
现代密码学和小代码使其变得简单 审计 | 隐私:IP/公钥关联可能很敏感,具体取决于政策 |
客户端提供无缝漫游和终止开关 | 第三方兼容性并不总是同质的 |
分割隧道:只引导必要的内容
拆分隧道允许您仅通过 VPN 发送所需的流量。使用 允许的IP 您可以决定是否对一个或多个子网进行完全重定向或选择性重定向。
# Redirección completa de Internet
[Peer]
AllowedIPs = 0.0.0.0/0
# Solo acceder a recursos de la LAN 192.168.1.0/24 por la VPN
[Peer]
AllowedIPs = 192.168.1.0/24
有反向分割隧道等变体,通过 网址 或通过应用程序(通过特定的扩展/客户端),尽管 WireGuard 中的本机基础是通过 IP 和前缀进行控制。
兼容性和生态系统
WireGuard 是为 Linux 内核而生的,但如今它 跨平台OPNsense 原生集成了它;pfSense 因审计而暂时停止,随后根据版本作为可选包提供。
在 QNAP 等 NAS 上,您可以通过 QVPN 或虚拟机安装它,利用 10GbE NIC 来 高速MikroTik 路由器板自 RouterOS 7.x 起就已纳入 WireGuard 支持;在其早期版本中,它处于测试阶段,不建议用于生产,但它确实允许设备甚至最终客户端之间的 P2P 隧道。
像 Teltonika 这样的制造商有一个软件包可以将 WireGuard 添加到他们的路由器中;如果您需要设备,可以在 shop.davantel.com 并遵循制造商的安装指南 包 额外的费用。
性能和延迟
得益于其简约的设计和高效的算法选择,WireGuard 实现了非常高的速度和 低延迟,通常优于 L2TP/IPsec 和 OpenVPN。在使用强大硬件的本地测试中,实际速率通常是替代方案的两倍,非常适合 流媒体、游戏或 VoIP.
企业实施和远程办公
在企业中,WireGuard 适用于在办公室之间创建隧道、远程员工访问以及 CPD 和云 (例如,用于备份)。其简洁的语法使版本控制和自动化变得简单。
它使用中间解决方案与 LDAP/AD 等目录集成,并可与 IDS/IPS 或 NAC 平台共存。一个常用的选项是 数据包围栏 (开源),它允许您在授予访问权限和控制 BYOD 之前验证设备的状态。
Windows/macOS:注意事项和提示
官方 Windows 应用程序通常运行正常,但在某些版本的 Windows 10 中,使用时会出现问题 允许的IPs = 0.0.0.0/0 由于路由冲突。作为临时替代方案,一些用户选择基于 WireGuard 的客户端(例如 TunSafe)或将 AllowedIPs 限制在特定子网内。
Debian 快速入门指南及示例密钥
为服务器和客户端生成密钥 /etc/wireguard/ 并创建 wg0 接口。确保 VPN IP 与本地网络或客户端上的任何其他 IP 不匹配。
cd /etc/wireguard/
wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor
wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1
wg0.conf 服务器,子网 192.168.2.0/24,端口 51820。如果要自动化,请启用 PostUp/PostDown NAT 在启动/关闭接口时使用 iptables。
[Interface]
Address = 192.168.2.1/24
PrivateKey = <clave_privada_servidor>
ListenPort = 51820
#PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <clave_publica_cliente1>
AllowedIPs = 0.0.0.0/0
客户端地址为 192.168.2.2,指向服务器的公共端点,并带有 活着 如果有中间 NAT,则为可选。
[Interface]
PrivateKey = <clave_privada_cliente1>
Address = 192.168.2.2/32
[Peer]
PublicKey = <clave_publica_servidor>
AllowedIPs = 0.0.0.0/0
Endpoint = <ip_publica_servidor>:51820
#PersistentKeepalive = 25
拉起接口并观察 MTU、路由标记和 标记 以及路由策略规则。使用以下命令查看 wg‑quick 输出和状态: wg秀.
Mikrotik:RouterOS 7.x 之间的隧道
MikroTik 自 RouterOS 7.x 起支持 WireGuard。在每个路由器上创建一个 WireGuard 接口,应用它,它将自动生成。 按键. 将 IP 分配给 Ether2 作为 WAN,并将 wireguard1 作为隧道接口。
通过在客户端交叉服务器的公钥来配置对等体,反之亦然,定义允许的地址/允许的IP地址(例如 0.0.0.0/0 (如果您希望允许任何源/目标通过隧道)并设置远程端点及其端口。ping 远程隧道 IP 将确认 握手.
如果您将手机或电脑连接到 Mikrotik 隧道,请微调允许的网络,以免打开超过必要的网络;WireGuard 会根据您的 加密密钥路由,因此匹配出发地和目的地非常重要。
使用的密码学
WireGuard 采用了一套现代化的: 噪声 作为框架,Curve25519 用于 ECDH,ChaCha20 用于使用 Poly1305 进行认证的对称加密,BLAKE2 用于散列,SipHash24 用于哈希表,HKDF 用于推导 按键如果某个算法被弃用,则可以对协议进行版本控制以无缝迁移。
移动设备的利与弊
在智能手机上使用它可以让您安全地浏览 公共 Wi-Fi隐藏来自 ISP 的流量,并连接到家庭网络以访问 NAS、家庭自动化或游戏。在 iOS/Android 上,切换网络不会中断隧道,从而提升了体验。
缺点是,与直接输出相比,速度会有所损失,延迟也会更大,而且你依赖于服务器始终处于 可用的。然而,与 IPsec/OpenVPN 相比,惩罚通常较低。
WireGuard 集简单易用、速度快、安全性高于一身,而且学习曲线平缓:安装、生成密钥、定义 AllowedIP,即可开始使用。它还添加了 IP 转发功能、完善的 NAT 功能、带有二维码的官方应用,并且兼容 OPNsense、Mikrotik 或 Teltonika 等生态系统。 现代VPN 适用于几乎任何场景,从保护公共网络到连接总部以及轻松访问您的家庭服务。
专门研究技术和互联网问题的编辑,在不同数字媒体领域拥有十多年的经验。我曾在电子商务、通讯、在线营销和广告公司担任编辑和内容创作者。我还在经济、金融和其他领域的网站上撰写过文章。我的工作也是我的热情所在。现在,通过我的文章 Tecnobits,我尝试探索技术世界每天为我们提供的所有新闻和新机会,以改善我们的生活。