手把手教你搭建 WireGuard VPN 学习环境(含可视化面板)

本文章转载自微信公众号:W不懂安全

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 genkeytee 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 genkeytee client_private.key | wg pubkey > client_public.key

2.编辑客户端配置
创建配置文件:

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.1

2.在服务端查看连接情况:

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 -p

2.配置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.1

10.0.0.1是服务端WireGuard虚拟网卡,能Ping通说明虚拟网卡通了。

测试外网访问和DNS,在Windows客户端执行:

ping 8.8.8.8
nslookup 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 -y

2.部署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-stopped

3.启动容器:

sudo docker-compose up -d

4.访问管理面板

打开浏览器,输入:

http://服务器IP:51821

输入你在配置文件设置的密码。

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

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

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

本期内容到此结束,写作不易,多多支持。

暂无介绍....

延伸阅读:

手把手教你搭建 WireGuard VPN 学习环境(含可视化面板)

本文章转载自微信公众号:W不懂安全WireGuard 是一款新一代的 VPN 工具,它以 轻量、高速、配置简单...

rlwww
2025年12月13日
自建密码管理器

在如今互联网时代,人人都在网上冲浪,有些网站还好,但有些商业性、官方性的网站都存在着需要账号密码等作为登录认证手段。在早...

rlwww
2025年12月2日
ESXI申请阿里云SSL证书并配置

ESXI默认证书在浏览器内访问不受信任并会提示站点不安全,本文从零开始讲解申请阿里云免费SSL证书并替换ESXI默认SS...

rlwww
2024年11月11日