手把手教你搭建 WireGuard VPN 学习环境(含可视化面板)
WireGuard 是一款新一代的 VPN 工具,它以 轻量、高速、配置简单 著称,非常适合用来搭建一个学习环境。本文将带你从零开始,在 Linux 服务器上部署 WireGuard,并实现客户端连接。一、准备工作
- 一台Linux服务器(Ubuntu 20.04/22.04都可以)
- 基本的环境:能SSH远程连接服务器的软件,如:FinalShell。熟悉一些常见Linux命令。
二、安装WireGuard在服务器上执行以下命令:
sudo apt updatesudo
apt install wireguard -y安装完成之后,检查版本:
wg --version
如果能看到版本号,说明安装成功。
三、配置服务端
1.生成密钥对
WireGuard使用公私钥进行加密通信:
1 umask 077
2 wg genkey | tee server_private.key | wg pubkey > server_public.key
执行成功之后,会生成两个文件:
- server_private.key(私钥)
- server_public.key(公钥)
2.编辑配置文件
创建并编辑配置文件:
sudo nano /etc/wireguard/wg0.conf写入以下内容:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = 服务端私钥
[Peer]
# 客户端 1
PublicKey = 客户端公钥
AllowedIPs = 10.0.0.2/32
说明(防止再有人无脑问):
- Address:服务端虚拟网卡的IP
- ListenPort:监听端口(默认51820)
- PrivateKey:填入刚才生成的服务端密钥
- [Peer]:表示一个客户端的配置(如需要多个客户端,需要写多个配置)
四、配置客户端
Linux客户端配置:
在客户端设备(Linux/Windows/Android/IOS 都支持 WireGuard)上安装WireGuard。
1.,重复以上WireGuard的安装操作,然后生成客户端密钥对
wg genkey | tee client_private.key | wg pubkey > client_public.key2.编辑客户端配置
创建配置文件:
nano /etc/wireguard/client.conf写入以下配置:
[Interface]
Address = 10.0.0.2/24
PrivateKey = 客户端私钥
DNS = 8.8.8.8
[Peer]
PublicKey = 服务端公钥
Endpoint = 服务器公网IP:51820
AllowedIPs = 0.0.0.0/0
说明:
- Address:客户端虚拟网卡的IP
- PrivateKey:客户端私钥
- PublicKey:服务端公钥
- Endpoint:服务器的公网IP和端口
五、启动服务
服务端启动:
sudo wg-quick up wg0开机自启:
sudo systemctl enable wg-quick@wg0
[#] ip link add wg0 type wireguard # 创建 wg0 虚拟网卡
[#] wg setconf wg0 /dev/fd/63 # 加载配置文件 /etc/wireguard/wg0.conf
[#] ip -4 address add 10.0.0.1/24 dev wg0 # 给 wg0 分配 IP 10.0.0.1
[#] ip link set mtu 1420 up dev wg0 查看WireGuard状态:
sudo wg show能看到服务端的公私钥、监听端口、以及已配置的客户端信息。
查看网卡:
ip a show wg0应该能看到 10.0.0.1/24 的地址。

Linux客户端启动:
sudo wg-quick up client六、验证连接
1.在客户端Ping服务端虚拟网卡:
ping 10.0.0.12.在服务端查看连接情况:
sudo wg show可以看到客户端的连接信息、握手时间、流量统计。
Windows客户端
1.去WireGuard官网安装Windows客户端。
https://www.wireguard.com/install/
安装完成之后,会看到一个GUI界面。
点击“从文件导入隧道”,选择client.conf文件,然后点击连接。

出现握手时间和流量接收和传输,就表示成功了。
如果没有,那么常见原因可能是服务端没有开启IP转发和NAT转发规则。
解决方法:
1.开启IP转发
编辑sysctl配置:
sudo nano /etc/sysctl.conf取消注释或新增:
net.ipv4.ip_forward = 1立即生效:
sudo sysctl -p2.配置NAT转发
查看公网网卡:
ip a在服务端执行(假设公网网卡是 eth0):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE让规则开机生效:
sudo apt install iptables-persistent -y
sudo netfilter-persistent save之后执行以下命令查看是否有流量传输:
sudo wg show如果出现 latest handshake和transfer,那么恭喜你握手成功了。

如果还是不行,那么就得检查服务端和客户端的配置文件了,最容易出错的地方是公私钥弄混,我在做的时候就犯了这种低级错误。
如果你是配置文件出错了,修改完之后需要重启WireGuard服务:
sudo wg-quick down wg0
sudo wg-quick up wg0一切准备之后,在Windows客户端也连接上,并且有流量传输,那么进行测试。
打开命令行(CMD或者PowerShell)执行以下命令:
ping 10.0.0.110.0.0.1是服务端WireGuard虚拟网卡,能Ping通说明虚拟网卡通了。

测试外网访问和DNS,在Windows客户端执行:
ping 8.8.8.8nslookup www.google.com能ping通说明可以访问互联网,第二个命令能返回IP,说明DNS配置正确。

之后访问海外网站进行测试,可以看到完全没问题,非常丝滑。

接下来安装可视化管理工具——wg-easy。
如果你觉得编辑配置文件太麻烦,可以用 wg-easy,它是一个基于 Docker 的 WireGuard 管理面板,提供网页 UI,方便你添加/删除客户端、查看流量。
1. 安装 Docker
在服务器上执行:
sudo apt update
sudo apt install docker.io docker-compose -y2.部署wg-easy
在服务器新建一个目录:
mkdir wg-easy
cd wg-easy创建 docker-compose.yml 文件:
version: "3.8"
services:
wg-easy:
image: weejewel/wg-easy
container_name: wg-easy
environment:
- WG_HOST=你的服务器公网IP
- PASSWORD=设置一个管理面板密码
volumes:
- ./config:/etc/wireguard
ports:
- "51820:51820/udp"
cap_add:
- NET_ADMIN
- SYS_MODULE
restart: unless-stopped3.启动容器:
sudo docker-compose up -d4.访问管理面板
打开浏览器,输入:
http://服务器IP:51821输入你在配置文件设置的密码。

登录进去之后,点击 New 创建一个客户端。

然后起一个名称,然后点击创建。

创建完成之后,右侧的二维码图标就是以二维码呈现的配置文件,如果你的设备是手机,直接用手机扫码就可使用,当然右侧还有个下载图标,下载下来的就是conf配置文件,在别的Windows设备照着上方的方法就可以使用。

本期内容到此结束,写作不易,多多支持。
自建密码管理器
没有啦 (T▽T)
延伸阅读:
手把手教你搭建 WireGuard VPN 学习环境(含可视化面板)
本文章转载自微信公众号:W不懂安全WireGuard 是一款新一代的 VPN 工具,它以 轻量、高速、配置简单...