—
本文提到的所有密钥对及其内容均为虚构,为随机生成,请勿直接使用。
管理员部分
安装操作系统
操作系统采用ubuntu server 24.04 LTS,Minimal配置。操作系统正常配置和安装即可,无特殊配置项。
安装好后正常切换镜像源、添加公钥、移除snapd。
- 调整时区为CST:
timedatectl set-timezone Asia/Shanghai; - 安装Ping:
apt install -y iputils-ping; - 安装iptables:
apt install -y iptables
调整NTP
- 打开
/etc/systemd/timesyncd.conf,添加以下NTP时钟源:1
2
3[Time]
NTP=time.windows.com time.apple.com
FallbackNTP=ntp.aliyun.com - 重启相关服务:
1
systemctl daemon-reload && systemctl restart systemd-timesyncd
- 查看同步情况:
1
timedatectl show-timesync
禁用IPv6
我如此执着这件事只有一个原因,这东西不安全且坑过我好几次。
- 编辑Grub配置文件
/etc/default/grub:修改为1
GRUB_CMDLINE_LINUX_DEFAULT=""
1
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
- 更新引导
1
update-grub
- 重启查看是否还有IPv6
启用转发
编辑/etc/sysctl.conf,末尾追加如下行
1 | net.ipv4.ip_forward=1 |
应用:
1 | sysctl -p |
启用History时间记录和扩展记录条数
打开/etc/bash.bashrc,尾部加入如下内容:
1 | export HISTTIMEFORMAT="[%F %T] " |
source后生效。
安装Wireguard
1 | apt install -y wireguard |
创建配置文件文件夹,并设置权限:
1 | mkdir -p /etc/wireguard && cd /etc/wireguard && umask 077 |
配置Wireguard服务端
- 创建密钥对
1
wg genkey | tee server_private.key | wg pubkey > server_public.key
- 读取一下私钥,请勿泄露:
1
cat /etc/wireguard/server_private.key
- 创建Wireguard配置文件
/etc/wireguard/wg0.conf将上面读取的私钥和接口名(如果不对)替换进去。1
2
3
4
5
6
7
8
9
10# !!!DO NOT EDIT THIS FILE DIRECTLY!!!
# Use 'bash /root/wacs.sh' to make change.
# Build by lxnchan(https://lxnchan.cn), 2026
[Interface]
Address = 100.1.0.1/24
ListenPort = 51820
PrivateKey = <YOUR PRIVATE KEY HERE>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE - 启动配置:
1
systemctl enable --now wg-quick@wg0
注意到此时服务端已经启动:
1 | root@proxytest:/etc/wireguard# systemctl status wg-quick@wg0 |
创建客户端配置文件
该操作实际上不太符合官方流程。
- 生成客户端的密钥对:读取客户端的公钥备用:
1
2wg genkey > client1.pri.key
cat client1.pri.key | wg pubkey > client1.pub.key1
2cat client1.pub.key
# R3n9SHxah2pSlX8dzFekBV9v0xntM2ze1L/1aRQ+QFo= - 生成PSK(预共享密钥,可省略):
1
2wg genpsk
# lw68TjpK5VfJF/nYposXZ6U+RGRAwXBXP7P26ZwQeTc= - 打开服务端配置文件,在末尾追加如下配置段:
1
2
3
4
5
6
7[Peer]
# 客户端的公钥
PublicKey = R3n9SHxah2pSlX8dzFekBV9v0xntM2ze1L/1aRQ+QFo=
# 给客户端分配的地址
AllowedIPs = 100.1.0.2/32
# PSK
PresharedKey = lw68TjpK5VfJF/nYposXZ6U+RGRAwXBXP7P26ZwQeTc= - 手搓客户端的配置文件:传送到客户端即可使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[Interface]
# 服务端给分配的地址
Address = 100.1.0.2/32
DNS = 119.29.29.29
# 客户端私钥(client1.pri.key)
PrivateKey = oNiMerz81tdB9pOlxb/a/f29trLY0xzq23FQtpecPnk=
[Peer]
AllowedIPs = 0.0.0.0/0
# 服务器地址及端口号
Endpoint = wgtest-01-aliyuncs.lxnchan.cn:51820
PersistentKeepalive = 25
# PSK,需要与服务端给该Peer配置中的相同
PreSharedKey = lw68TjpK5VfJF/nYposXZ6U+RGRAwXBXP7P26ZwQeTc=
# 对端公钥
PublicKey = k45d7H3Aa7WtWy4+BpB5BMjWFZ0gE2B4dtmFqLs/6Ac=
查看客户端连接状态
使用wg show命令查看已连接客户端:
1 | root@proxytest:~# wg show |
显示Peer具备latest handshake时间意味着在此时间前进行过有效的握手,下面是传送的数据量。
用户部分
Windows
- 下载安装包:
1
https://download.wireguard.com/windows-client/wireguard-amd64-0.5.3.msi
- 安装

- 选择“从文件导入隧道”,然后选择传送到客户端的配置文件

- 选择连接

- 接收数据量不为0则成功,可以进行其他测试

tracert一下观察到流量流经了Wireguard服务器,证明成功
Android
- 在Google Play搜索安装Wireguard

- 点击右下角“+”,选择从文件导入,选择配置文件并导入
- 开启连接即可,观察到接收数据量不为零即可

iOS

- 在AppStore搜索安装Wireguard
- 点击右上角“+”,选择导入配置,选择配置文件
- 如果询问是否允许创建VPN,选择允许,然后输入手机密码
- 启用隧道即可
工具
Wireguard Automatic Configuration Script(WACS.sh)
1 |
|

