WireGuard 是一款极其简单但快速且现代最先进的加密技术。它旨在更快、更简单、更精简、最容易使用和最简单的 虚拟专用网络 解决方案,易于配置和部署。
今天就让我们来搭建并配置它,我以我的vps服务器系统是:Debian系统,域名:(你没有域名也可以,可选)
LOCVPS全球云-十三年老牌云主机值得信赖


下面是一个详细的步骤指南,帮助你在 Debian Ubuntu 上搭建最新的 WireGuard,并确保其配置正确
apt-get update
apt-get install ufw
ufw allow 51820/udp
apt update && apt upgrade -y
apt install wireguard -y
mkdir -p /etc/wireguard
chmod 700 /etc/wireguard
我们需要为服务器和客户端生成密钥对,并查看它们的内容。
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
wg genpsk > /etc/wireguard/preshared.key
cat /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key
cat /etc/wireguard/preshared.key
-
server_private.key=服务器密钥
-
server_public.key=服务器公钥
-
preshared.key=预共享密钥
umask 077
wg genkey | tee client_private.key | wg pubkey > client_public.key
cat client_private.key
cat client_public.key
nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <YOUR_SERVER_PRIVATE_KEY> # 替换为你的服务器私钥
Address = 10.7.0.1/24
ListenPort = 51820
[Peer]
PublicKey = <YOUR_CLIENT_PUBLIC_KEY> # 替换为你的客户端公钥
PresharedKey = <YOUR_PRESHARED_KEY> # 替换为你的预共享密钥
AllowedIPs = 10.7.0.2/32
2.将 <服务器私钥内容> 和 <客户端公钥内容> 和<服务器端预共享私钥内容>替换为你自己的密钥内容
服务端就配置完成,接下来配置 WireGuard 客户端:
nano client.conf
[Interface]
PrivateKey = <YOUR_CLIENT_PRIVATE_KEY> # 替换为你的客户端私钥
Address = 10.7.0.2/24
DNS = 208.67.222.222, 208.67.220.220
[Peer]
PublicKey = <YOUR_SERVER_PUBLIC_KEY> # 替换为你的服务器公钥
PresharedKey = <YOUR_PRESHARED_KEY> # 替换为你的预共享密钥
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 替换服务器ip或域名:51820
PersistentKeepalive = 25
2. 将 <客户端私钥内容> 和 <服务器公钥内容> 和<服务器端预共享私钥内容>替换为你自己的密钥内容。
1 . 启用 IP 转发合并ipv6:
#开启转发
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
# 永久生效
sed -i ‘s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g’ /etc/sysctl.conf
sed -i ‘s/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/g’ /etc/sysctl.conf
sysctl -p
# 安装防火墙持久化工具
apt update && apt install iptables-persistent -y
2 . 配置防火墙和 NAT 规则:
# 自动获取主网卡名称:
MAIN_NIC=$(ip route | grep default | awk ‘{print $5}’)
echo $MAIN_NIC
# 配置规则(如果51820端口有修改过,请改为你修改的端口)
iptables -I INPUT -p udp –dport 51820 -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o $MAIN_NIC -j MASQUERADE
# 如果有 IPv6 环境,也加上 IPv6 的 NAT(可选)
ip6tables -t nat -A POSTROUTING -o $MAIN_NIC -j MASQUERADE
# 保存规则持久化
netfilter-persistent save
或者使用以下这条保存防火墙规则一样的:
iptables-save > /etc/iptables/rules.v4 && ip6tables-save > /etc/iptables/rules.v6
3 . 启动 WireGuard:
wg-quick up wg0
4 . 设置开机自启动:
systemctl enable wg-quick@wg0
查看WireGuard启动状态:
wg show
查看网口状态:
ip a show wg0
查看WireGuard启动后自动运行:
systemctl status wg-quick@wg0
然后下载在/root/client.conf的配置文件:
网络正常访问。查看一下它的流量,应该是属于全模式,
接下来下面给它做一下路由规则,让它实现流量的一个分流:
1.开启Wireguard的Pre/Post命令支持,只能通过修改注册表的方式开启,具体操作:
reg add HKLM\Software\WireGuard /v DangerousScriptExecution /t REG_DWORD /d 1 /f
2.下载压缩包文件解压到”C:\Program Files\WireGuard\bat”。
把解压出来的文件复制到C:\Program Files\WireGuard\bat目录下,如果你没有bat文件夹就创建一个:
3.修改Wireguard客户端配置文件,加入以下Script Hook调用”C:\Program Files\WireGuard\bat”的批处理文件:
PreUp = “C:\Program Files\WireGuard\bat\routes-up.bat”
PostUp = “C:\Program Files\WireGuard\bat\dns-up.bat”
PreDown = “C:\Program Files\WireGuard\bat\routes-down.bat”
PostDown = “C:\Program Files\WireGuard\bat\dns-down.bat”
将DNS指向本机以使用Overture作为DNS服务器:
DNS = 127.0.0.1
wg-quick down wg0
rm /etc/wireguard/wg0.conf
rm /root/client.conf
rm /root/client_private.key
rm /root/client_public.key
rm /etc/wireguard/preshared.key
rm /etc/wireguard/server_private.key
rm /etc/wireguard/server_public.key
apt-get remove –purge wireguard -y apt-get autoremove -y
iptables -D INPUT -p udp –dport 51820 -j ACCEPT
sudo iptables -D FORWARD -i wg0 -j ACCEPT
sudo iptables -D FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent save
删除与 WireGuard 相关的日志文件和临时文件:
rm -rf /var/log/wireguard
sudo reboot