WireGuard 提供了一种现代化的 VPN 方法,注重简单性、速度和强大的加密协议。在 Linux 上运行 WireGuard 提供了一种可靠的方法来保护远程访问、通过服务器路由流量或跨不受信任的网络连接多个设备。该过程包括安装必要的软件包、配置密钥、设置服务器和客户端配置文件以及启用对等点之间的安全通信。
在 Linux 上安装 WireGuard
步骤一:更新您的软件包索引并安装 WireGuard。这可确保您的发行版拥有最新版本和依赖项。在基于 Ubuntu 或 Debian 的系统上,运行:
sudo apt update
sudo apt install wireguard
对于其他发行版,请使用适当的包管理器:
- 软呢帽:
sudo dnf install wireguard-tools - 拱:
sudo pacman -S wireguard-tools - CentOS/RHEL:有关内核模块和工具安装步骤,请参阅 WireGuard 文档。
安装后,验证wg --version。如果没有输出或错误,请检查内核模块是否已加载sudo modprobe wireguard.
生成服务器和客户端密钥对
步骤2:WireGuard 使用非对称加密技术,要求每个设备都有自己的私钥和公钥。在服务器上,创建密钥目录并生成它们:
sudo mkdir -p /etc/wireguard/keys
cd /etc/wireguard/keys
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
这umask 077命令确保密钥只能由 root 读取。在每个客户端设备上重复此过程,安全地存储其密钥。私钥保留在设备上,而公钥将根据需要与同行共享。
配置 WireGuard 服务器
步骤3:为您的 VPN 网络选择专用 IP 范围,避免与现有 LAN 发生冲突。常见的选择包括10.0.0.0/8,192.168.0.0/16, 或者172.16.0.0/12。为服务器分配您选择的子网中的第一个地址,例如10.8.0.1/24或者192.168.66.1/24.
创建主配置文件/etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey =
SaveConfig = true
# Enable IP forwarding and NAT for routing client traffic
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
代替eth0与您的服务器的实际网络接口名称,您可以使用找到ip route。这PostUp和PostDown指令处理 NAT 和数据包转发,允许客户端通过 VPN 访问互联网。
在配置文件上设置正确的权限:
sudo chmod 600 /etc/wireguard/wg0.conf
第4步:在内核中启用 IPv4 转发,以便您的服务器可以在接口之间路由数据包。编辑/etc/sysctl.conf并确保以下行存在且未注释:
net.ipv4.ip_forward=1
立即应用更改:
sudo sysctl -p
如果您计划使用 IPv6,还需添加net.ipv6.conf.all.forwarding=1.
第5步:在防火墙中打开 WireGuard UDP 端口。对于 UFW(简单防火墙),运行:
sudo ufw allow 51820/udp
重新启动 UFW 以应用规则:
sudo ufw disable
sudo ufw enable
将客户端对等点添加到服务器
第6步:对于每个客户端,添加一个[Peer]节至wg0.conf在服务器上。使用客户端的公钥并为其分配来自 VPN 子网的唯一 IP:
[Peer]
PublicKey =
AllowedIPs = 10.8.0.2/32
对每个附加客户端重复此操作,每次增加 IP 地址。
配置 WireGuard 客户端
第7步:使用与在服务器上相同的包管理器步骤在客户端设备上安装 WireGuard。如前所述为客户端生成密钥对。
步骤8:创建客户端配置文件,通常位于/etc/wireguard/wg0.conf(Linux),或导入到 WireGuard 应用程序(Windows、macOS、Android、iOS)。客户端配置示例:
[Interface]
PrivateKey =
Address = 10.8.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
放AllowedIPs = 0.0.0.0/0通过 VPN 路由所有流量,或限制到 VPN 子网以进行分割隧道。PersistentKeepalive如果客户端位于 NAT 之后,则保持连接打开。
将服务器的公钥和端点信息安全地传输到客户端。对于移动设备,您可以使用qrencode从配置文件生成二维码并在 WireGuard 应用程序中扫描它:
qrencode -t ansiutf8 -r client.conf
启动并启用 WireGuard VPN
第9步:在服务器上,使用 systemd 启动 WireGuard 界面并在启动时启用它:
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
在客户端上,使用以下命令调出界面:
sudo wg-quick up wg0
要断开连接,请使用sudo wg-quick down wg0.
检查连接状态:
sudo wg show
输出应显示接口、公钥、允许的 IP 和握手/流量统计信息。如果您没有看到握手或流量,请仔细检查密钥对、防火墙规则和端点地址。
故障排除和维护
WireGuard 的日志和状态输出有助于诊断问题。使用systemctl status wg-quick@wg0和journalctl -xe查看服务日志。常见问题包括:
- LAN 和 VPN 之间的 IP 地址不正确或子网冲突。
- 防火墙规则阻止 UDP 端口 51820 或所选端口。
- 缺失或不正确
PostUp服务器上的 NAT/转发规则。 - 客户端和服务器之间的密钥不匹配。
- 服务器上的动态 IP 地址 - 如果需要,请使用动态 DNS。
添加新客户端时,只需生成他们的密钥,添加新的[Peer]部分到服务器配置,并重新加载配置sudo systemctl reload wg-quick@wg0或通过重新启动界面。
对于高级设置,WireGuard 支持 IPv6、双栈配置,并通过创建额外的配置文件(例如,wg1.conf).
在 Linux 上设置 WireGuard 通过降低配置复杂性并提供强大、快速的 VPN 隧道来简化安全网络。通过仔细的密钥管理和正确的路由,您可以可靠地连接设备并通过您选择的服务器路由流量。






