
简单介绍:
WireGuard 是新一代的虚拟专用网内核模块,它以代码极简、性能极高、配置简单著称。
它被直接集成在 Linux 内核中(5.6 版本以上),因此运行效率非常高,非常适合用于异地组网、内网穿透等使用场景。
操作系统:
Debian 13.7.x
WireGuard 已经内置于新版内核中,Debian 13.7.x 默认使用的是较新的内核(通常是 6.x 版本),而 WireGuard 在 Linux 内核 5.6 版本之后就已经正式合并到主线内核了。
安装配置:
1、防火墙端口配置
Debian 13.7.x 默认不带防火墙,建议安装ufw作为防火墙
apt install -y ufw #装完 ufw 后,默认没有任何规则,它是未启用状态
ufw status #输出Status: inactive
ufw allow 22/tcp #放行22端口
ufw allow 51820/udp #放行WireGuard默认端口
ufw --force enable #启动防火墙
ufw status numbered #查看当前规则
ufw status verbose #查看状态
ufw启动后,默认是这2条规则,添加新的端口后,加完立刻生效,不需要重启
ufw default deny incoming # 进来的全拒绝
ufw default allow outgoing # 出去的全放行
相关命令
ufw disable 关闭防火墙
ufw enable 重新打开
ufw reload 重启防火墙
ufw reset 删掉所有规则
ufw delete allow 57002/udp
2、开启IPV4流量转发功能
nano /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
ctrl+o #保存配置
ctrl+x #退出
sysctl --system
3、安装wireguard
apt install wireguard-tools
modprobe wireguard #手动加载模块,如果没有报错(直接返回命令行),说明模块已存在且加载成功。
wg --version #看到版本号就说明装好了
4、生成服务端密钥对
#创建一个目录用于存放生成的密钥对
mkdir -p /etc/wireguard/cert
cd /etc/wireguard/cert
umask 077
# 生成服务端私钥server.key
wg genkey > server.key
# 使用上一步的服务端私钥生成公钥server.key.pub
wg pubkey < server.key >server.key.pub
# 查看生成的密钥对
root@debian:/etc/wireguard/cert# cat server.key server.key.pub
5、生成客户端的密钥对
# 客户端1私钥
wg genkey > client1.key
# 客户端1公钥
wg pubkey < client1.key > client1.key.pub
# 查看生成的密钥对
root@debian:/etc/wireguard/cert# cat client1.key client1.key.pub
# 客户端2私钥
wg genkey > client2.key
# 客户端2公钥
wg pubkey < client2.key > client2.key.pub
# 查看生成的密钥对
root@debian:/etc/wireguard/cert# cat client2.key client2.key.pub
6、配置服务端
nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = WEuHL0jO7itf1xthtXP168Fcgfhv0hiaoaqD9lGCxpp= #服务端私钥server.key
Address = 10.0.0.1/24 #指定这张虚拟网卡的IP地址和所属网段,不要与现有网段冲突就可以
#使用 %i 作为接口名占位符,确保 FORWARD 和 NAT 规则都正确配置
#注意ens18为本机网卡名称
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE
ListenPort = 51820 #注意该端口是UDP端口
MTU = 1420
[Peer]
PublicKey = pvTYQDC/0dQWvW5rK5GtYs/S1c/4dKk5FJc9x+2Naoo= #client1的公钥client1.key.pub
AllowedIPs = 10.0.0.2/32 #客户端所使用的IP
[Peer]
PublicKey = LzwvGskAIBqFRgfntf9RiStEvMLwsNTtvJLIK/Eohuu= #client2的公钥client2.key.pub
AllowedIPs = 10.0.0.3/32
ctrl+o #保存配置
ctrl+x #退出
#把wg-quick@wg0设为开机自启,并且现在立刻启动它。
systemctl enable --now wg-quick@wg0
wg show #查看状态
wg-quick up wg0 # 启动命令
ip a #可以看到服务器多了一个wg0网卡
wg-quick down wg0 #停止命令
7、生成客户端配置
生成client1配置
nano /etc/wireguard/client1.conf
[Interface]
PrivateKey = 8DQZbHYKi7ZE8qHbYxF30OTnZtBpfFBS/glOp221w66= #此处为client1的私钥client1.key
Address = 10.0.0.2/24 #此处为peer规定的客户端IP
DNS = 223.5.5.5
[Peer]
PublicKey = zVkUgYEN3UXPCT/klQFFFRlVqVj8XF4g/jmpk+sZFgg= #此处为server的公钥server.key.pub
Endpoint = 10.199.199.5:51820 #服务端地址:公网IP:端口
#AllowedIPs = 0.0.0.0/0, ::/0
AllowedIPs = 192.168.1.0/24 #改为仅内网/特定IP段,假设你只想访问服务器内网,不走全部流量。
PersistentKeepalive = 25 #保持心跳
ctrl+o #保存配置
ctrl+x #退出
生成client2配置
nano /etc/wireguard/client2.conf
[Interface]
PrivateKey = uPrjemHDCTgpzVQ1pLY51VQ2mZXV8O6UHAA1IC2jGbb= #此处为client2的私钥client2.key
Address = 10.0.0.3/24 #此处为peer规定的客户端IP
DNS = 223.5.5.5
[Peer]
PublicKey = zVkUgYEN3UXPCT/klQFFFRlVqVj8XF4g/jmpk+sZFqq= #此处为server的公钥server.key.pub
Endpoint = 10.199.199.5:51820 #服务端地址:公网IP:端口
#AllowedIPs = 0.0.0.0/0, ::/0
AllowedIPs = 192.168.1.0/24 #改为仅内网/特定IP段,假设你只想访问服务器内网,不走全部流量。
PersistentKeepalive = 25 #保持心跳
ctrl+o #保存配置
ctrl+x #退出
8、客户端连接:
客户端下载地址:https://www.wireguard.com/install/
生成二维码给手机扫描导入配置文件
apt install -y qrencode
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
qrencode -t ansiutf8 < /etc/wireguard/client2.conf
#手机导入
客户端下载地址:https://www.wireguard.com/install/
1. 安装WireGuard
2. 打开 App,点右下角 +
3. 选扫描二维码
4. 对准终端里的二维码
5. 输入名称,确定导入后打开开关
windows客户端连接:
Windows客户端:
https://download.wireguard.com/windows-client/
https://download.wireguard.com/windows-client/wireguard-installer.exe
在服务器上查看内容:
cat /etc/wireguard/client1.conf
cat /etc/wireguard/client2.conf
复制全部内容,在电脑上新建一个文本文件,粘贴进去,保存为 client1.conf,然后选择从文件导入隧道,导入 WireGuard 客户端。
#在win客户端还可以点击-新建隧道-新建空隧道-创建新隧道-之后win客户端会自动创建公钥与私钥
#编辑配置文件vi /etc/wireguard/wg0.conf,替换client1的公钥client1.key.pub为客户端自动生成的公钥:QQ00QHjvsiaFoiTp0cjuLu3jratU+iZnKhECkLR6T34=
#客户端的公钥必须要和服务器端配置文件/etc/wireguard/wg0.conf里面客户端的公钥一致,私钥则不需要,私钥是用在客户端的,只要私钥和公钥能匹配就行,服务端配置文件里面的私钥可以不用修改
wg-quick down wg0 #停止命令
wg-quick up wg0 # 启动命令
systemctl enable wg-quick@wg0 #设置开机启动wireguard
以后每次有客户端(无论是 Windows、手机还是 Linux)重装系统或重新生成密钥,都需要复制客户端生成的新公钥。
粘贴到服务端的 wg0.conf 中,覆盖旧的 PublicKey。
执行 wg-quick down wg0 和 wg-quick up wg0 重启服务,不需要修改 IP 或其他设置,只要公钥对上了,连接就能恢复。
至此,Debian 13.7.x下安装配置WireGuard完成。
扩展阅读:离线安装WireGuard
##########################################
# 在有网的 Debian 机器上下载
apt download wireguard-tools
apt download wireguard-tools-dbgsym # 可选
apt-get download + dpkg-repack 把依赖一起打包
# 拷到离线机器
dpkg -i *.deb
##########################################

②190706903
③203744115


