为什么选择WireGuard?

公司需要远程访问内网资源,但你还在为VPN配置头疼?试试WireGuard吧,从零到实现远程互联,真的只需要10分钟。

它轻量、极速、安全,配置告别繁琐证书,目前已集成于 Linux 内核主线,广泛用于服务器组网和远程访问。

服务端操作

安装WireGuard

Ubuntu 20.04/22.04/24.04

1
2
3
4
5
# 更新软件包索引
sudo apt update

# 安装WireGuard及管理工具
sudo apt install -y wireguard wireguard-tools

WireGuard已内置于Linux 5.6+内核,这里安装的是用户态管理工具。

Ubuntu 18.04(内核较旧,需添加PPA):

1
2
3
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install -y wireguard wireguard-tools wireguard-dkms

Debian

1
apt install wireguard-tools wireguard -y

开启IP转发

1
2
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

这一步让服务器能够转发流量,实现客户端访问外网

生成密钥对

创建目录并生成服务端密钥

1
2
3
4
5
6
mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
cd /etc/wireguard
umask 077

# 生成服务端私钥和公钥
wg genkey | tee server_privatekey | wg pubkey > server_publickey

查看密钥内容:

1
2
cat server_privatekey   # 私钥(绝对保密,不可泄露!)
cat server_publickey # 公钥(可分享给客户端)

配置服务端

创建配置文件/etc/wireguard/wg0.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Interface]
# 服务端私钥(填入上一步生成的私钥)
PrivateKey = <服务端私钥>
# 服务端VPN虚拟IP(网段第一个IP)
Address = 10.0.0.1/24
# 监听端口(默认51820,使用UDP协议)
ListenPort = 51820

# 启动时配置NAT转发
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# 关闭时清理规则
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

⚠️ 注意eth0是你的服务器网卡名称,如果不是请用ip addr查看公网IP对应的网卡名称替换。
⚠️ 重要:VPN子网(如10.0.0.0/24)不能与现有局域网地址冲突。

生成客户端密钥并添加Peer

1
2
cd /etc/wireguard
wg genkey | tee client1_privatekey | wg pubkey > client1_publickey

wg0.conf中为客户端添加Peer配置:

1
2
3
4
5
6
7
[Peer]
# 客户端的公钥
PublicKey = <客户端公钥>
# 分配给客户端的VPN IP(网段内唯一)
AllowedIPs = 10.0.0.2/32
# 保持连接(防止NAT超时断开)
PersistentKeepalive = 25

每增加一个客户端,就添加一个[Peer]段落,IP可以依次递增

启动服务端

1
2
3
4
5
6
7
8
9
# 启动WireGuard
wg-quick up wg0

# 设置开机自启
systemctl enable wg-quick@wg0

# 查看状态
wg show
systemctl status wg-quick@wg0

其他常用命令:

1
2
wg-quick down wg0   # 停止
wg-quick up wg0 # 启动

客户端操作

为每个客户端创建独立的.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Interface]
# 客户端私钥
PrivateKey = <客户端私钥>
# 客户端VPN IP
Address = 10.0.0.2/24


[Peer]
# 服务端公钥
PublicKey = <服务端公钥>
# 要路由的网段(0.0.0.0/0表示所有流量走VPN)
AllowedIPs = 10.0.0.0/24
# 服务端公网地址和端口
Endpoint = <服务器公网IP>:51820
# 保持连接
PersistentKeepalive = 25

💡 安全提示:如果只想访问内网资源,将AllowedIPs改为VPN子网(如10.0.0.0/24),而非0.0.0.0/0

Windows客户端

  1. 从官网 https://www.wireguard.com/install/ 下载Windows版安装包
  2. 安装后打开WireGuard应用
  3. 点击 “Import tunnel(s) from file” 导入.conf配置文件
  4. 点击 “Activate” 连接

Linux客户端

与服务端安装方式相同

1
2
sudo apt update
sudo apt install -y wireguard wireguard-tools

将客户端配置文件放到/etc/wireguard/wg0.conf

1
2
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

常用命令

wg show 查看所有接口和Peer详情(公钥、IP、握手时间、流量)
wg show brief 简洁状态,一屏显示传输数据量
ip addr show wg0 查看VPN虚拟网卡的IP分配
ip route show 查看系统路由表,确认VPN路由是否生效
systemctl status wg-quick@wg0 查看WireGuard服务运行状态
wg-quick up wg0 启动WireGuard接口
wg-quick down wg0 停止WireGuard接口
systemctl enable wg-quick@wg0 设置开机自启(disable 取消)
wg-quick down wg0 && wg-quick up wg0 修改配置文件后,重启接口使新配置生效(不支持 reload
wg set wg0 peer <公钥> allowed-ips 10.0.0.3/32 运行时添加或修改某个客户端的IP分配
wg set wg0 peer <公钥> remove 立即踢掉该客户端(同时需手动删除配置文件中的对应 [Peer]
journalctl -u wg-quick@wg0 -n 50 -f 实时查看WireGuard服务日志(最新50行,持续滚动)
dmesg | grep -i wireguard 查看内核中WireGuard相关日志(用于排查驱动问题)

一键安装脚本(可选)

如果你不想手动配置,可以使用一键安装脚本

1
2
3
4
5
# 下载脚本
wget https://raw.githubusercontent.com/hwdsl2/wireguard-install/master/wireguard-install.sh

# 运行脚本(交互式安装)
sudo bash wireguard-install.sh

脚本会自动完成:系统设置 → 软件安装 → 密钥生成 → 配置文件编写 → 服务启动。安装完成后,客户端配置文件会生成在/root/目录下。

常见问题排查

❌ 无法连接

  1. 检查防火墙:确认服务器安全组和系统防火墙已开放UDP 51820端口
  2. 检查密钥:确保服务端配置的是客户端公钥,客户端配置的是服务端公钥
  3. 检查Endpoint:客户端配置中的服务器IP是否为公网IP

❌ 连接后无法上网

  1. 检查IP转发:确认net.ipv4.ip_forward=1已生效
  2. 检查NAT规则:确认iptables的MASQUERADE规则存在
  3. 检查网卡名称PostUp中的网卡名(如eth0)是否与实际一致

❌ 握手失败

  • 尝试在客户端配置中加入 PersistentKeepalive = 25
  • 检查服务端和客户端的AllowedIPs是否匹配

总结

WireGuard凭借极简配置、极致性能、极速连接,已成为VPN领域的新标杆。无论是个人远程访问、团队内网穿透,还是企业异地组网,WireGuard都能轻松胜任