首页 / 技术分享 /
WireGuard 简介与配置指南

WireGuard 简介与配置指南

码不停提

2026-01-06
9 次浏览
0 条评论

WireGuard 是一款简洁高效的 VPN 解决方案,无论是在企业中搭建内网,还是个人用户跨设备安全通信,都是极佳的选择。

服务器
WireGuard
linux
vpn
分享:

什么是 WireGuard?

WireGuard 是一种现代化的开源虚拟专用网络(VPN)解决方案,相较于传统的 VPN 协议(如 OpenVPN 和 IPsec),它更加轻量、快速和安全。WireGuard 于 Linux 内核实现,并且同时支持跨平台使用,提供了简单高效的安全通信方式。

特性简介

  1. 高性能:WireGuard 的代码非常简洁,仅有几千行代码,显著优于其他 VPN 的代码复杂度。
  2. 高安全性:使用一组现代化且经过严格审核的加密算法。
  3. 易于配置:配置流程简单,主要依赖公私钥对认证。而非繁琐的证书管理。
  4. 高兼容性:支持跨平台使用,包括 Linux、Windows、macOS、iOS 和 Android。

安装 WireGuard

以下是针对 Debian/Ubuntu 系统的安装方法,其他操作系统可以参考其文档。

1. 更新系统

确保系统是最新状态:

sudo apt update && sudo apt upgrade -y

2. 安装 WireGuard

使用以下命令安装所需的 WireGuard 包和工具:

sudo apt install wireguard -y

检查安装是否成功:

wg --version

配置 WireGuard

下面将展示如何配置一个简单的端对端加密 WireGuard 网络。

1. 准备工作

WireGuard 的每个节点需要生成一个公私钥对:

  • 私钥:保存在本地,不可共享。
  • 公钥:共享给其他节点,用于加密通信。

生成公私钥对

运行以下命令生成密钥:

sudo apt install -y qrencode  # 生成二维码(可选)
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
  • privatekey 文件是私钥,请妥善保管。
  • publickey 文件是公钥,可以共享。

2. 配置服务端

假设服务端的私钥为 server_privatekey

编辑 WireGuard 配置文件 /etc/wireguard/wg0.conf

[Interface]
Address = 192.168.1.1/24
PrivateKey = server_privatekey
ListenPort = 51820

[Peer]
PublicKey = client_publickey
AllowedIPs = 192.168.1.2/32

启动 WireGuard:

sudo wg-quick up wg0

查看运行状态:

sudo wg show

3. 配置客户端

假设客户端的私钥为 client_privatekey

编辑客户端配置文件 /etc/wireguard/wg0.conf

[Interface]
Address = 192.168.1.2/24
PrivateKey = client_privatekey

[Peer]
PublicKey = server_publickey
Endpoint = <server_ip>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

启动客户端 WireGuard:

sudo wg-quick up wg0

常见操作

重启 WireGuard

sudo wg-quick down wg0
sudo wg-quick up wg0

添加新节点

只需在服务端和客户端分别配置新的 [Peer] 条目,并重新加载配置。


配置中可能遇到的问题及排查方法

尽管 WireGuard 本身非常简单和稳定,但在实际配置和使用中,可能会遇到一些问题。以下是一些常见问题及其排查方法:

1. WireGuard 无法启动

原因

  • 配置文件语法错误。
  • 服务端口未开放。
  • 必要的内核模块未加载。

排查方法

  1. 检查配置文件语法:

    sudo wg-quick down wg0
    sudo wg-quick up wg0

    如果存在错误,将显示详细的错误信息。

  2. 检查系统是否支持 WireGuard:

    lsmod | grep wireguard

    如果没有相关输出,可以尝试安装 linux-headers 并重新配置。

  3. 确保安装了最新的 WireGuard 版本:

    sudo apt update && sudo apt install wireguard

2. 客户端无法连接到服务端

原因

  • 服务端监听端口未开放。
  • 客户端密钥配置错误。
  • 防火墙规则阻止了 WireGuard 流量。

排查方法

  1. 检查服务端监听是否正常:

    sudo wg show

    查看服务端的配置是否显示客户端的公钥。

  2. 使用工具检查端口是否开放:

    sudo netstat -tunlp | grep 51820

    如果端口未监听,检查 WireGuard 配置并重启服务。

  3. 确保防火墙允许 WireGuard 数据包:

    sudo ufw allow 51820/udp

3. 连接成功但无法访问网络

原因

  • AllowedIPs 配置错误。
  • NAT 转发未启用。
  • 路由表未正确配置。

排查方法

  1. 检查客户端和服务端的 AllowedIPs 设置: 服务端应该包含客户端的内网地址,例如:

    AllowedIPs = 192.168.1.2/32

    客户端应该允许所有流量通过 WireGuard,例如:

    AllowedIPs = 0.0.0.0/0, ::/0
  2. 启用 NAT 转发(服务端):

    sudo sysctl -w net.ipv4.ip_forward=1

    确保在 /etc/sysctl.conf 中永久启用。

  3. 配置 IPTables 规则(服务端):

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

4. 高延迟或连接不稳定

原因

  • 网络丢包导致连接不稳定。
  • 未配置 PersistentKeepalive

排查方法

  1. 确保节点间的网络稳定: 使用 ping 检查服务器的延迟和丢包率:

    ping <server_ip>
  2. 在客户端中启用 PersistentKeepalive

    PersistentKeepalive = 25

    这将确保客户端定期向服务端发送数据包,以保持连接活跃。

  3. 检查带宽占用和运行状况:

    sudo wg show

5. WireGuard 服务无法开机自启

原因

  • 未配置系统服务文件或未启用服务。

排查方法

  1. 配置自启动:

    sudo systemctl enable wg-quick@wg0

    这将确保 WireGuard 在系统重启时自动启动。

  2. 手动测试服务启动:

    sudo systemctl start wg-quick@wg0
    sudo systemctl status wg-quick@wg0

6. 阿里云服务器 WireGuard 连接问题

  • 如果阿里云 ECS 上启动了 WireGuard,本地无法连接;(排查完了上面的情况)表现为
  • 服务器上 ws show 能看到 received 和 sent 数据,本地 ws show 有 sent 数据,没有 received 数据
  • 服务器上 ping 服务端 IP 正常,ping 本地 IP 不通;本地 ping 服务器局域 IP 不通;

解决办法

  • 偿试将端口改为常用端口,例如:443,测试一下是否能连上
  • 检查服务器公网 IP 类型,如果是动态多线IP,换成弹性公网IP(EIP);

安全性建议

  1. 确保私钥文件权限为 600:
    chmod 600 privatekey
  2. 配置防火墙允许 WireGuard 通信端口(如 51820)。

评论区 (0)

你需要先 登录 后才能发表评论。
还没有人评论,赶快成为第一个吧。

关于云信益站

云信益站是由荣县人创办的公益网站,集家乡宣传、技术分享与开发服务于一体。在这里,您可以探索荣县的美景、美食与历史,查询实用本地信息,学习软件开发技术。让我们以数字技术连接桑梓,赋能家乡发展。

联系站长

关注我们

© 2025 云信益站. 保留所有权利.