墙内纯手搓WireGuard内网+流量分流搭建Pi节点实战(轻量速度神器,亲测延迟最低)(仅供学习参考)

WireGuard 是一款极其简单但快速且现代最先进的加密技术。它旨在更快更简单、更精简、最容易使用和最简单的 虚拟专用网络 解决方案,易于配置和部署。

今天就让我们来搭建并配置它,我以我的vps服务器系统是:Debian系统,域名:(你没有域名也可以,可选)

LOCVPS全球云-十三年老牌云主机值得信赖

 

 

下面是一个详细的步骤指南,帮助你在 Debian Ubuntu 上搭建最新的 WireGuard,并确保其配置正确

安装 WireGuard先安装防火墙ufw工具:
apt-get update
apt-get install ufw
放行端口:
ufw allow 51820/udp
1.首先,确保你的系统软件包是最新的:
apt update && apt upgrade -y
2. 然后安装 WireGuard
apt install wireguard -y
创建WireGuard配置目录:
mkdir -p /etc/wireguard
开放文件夹权限:
chmod 700 /etc/wireguard
生成密钥对
我们需要为服务器和客户端生成密钥对,并查看它们的内容。
3. 生成服务器密钥对
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
生成预共享密钥:
wg genpsk > /etc/wireguard/preshared.key
(1)查看服务器生成的服务器密钥:
cat /etc/wireguard/server_private.key
(2)查看服务器生成的服务器公钥:
cat /etc/wireguard/server_public.key
(3)查看服务器生成的预共享密钥:
cat /etc/wireguard/preshared.key
  • server_private.key=服务器密钥
  • server_public.key=服务器公钥
  • preshared.key=预共享密钥
复制出来在桌面新建一个文本,保存,后面要用到
5.生成客户端密钥对
umask 077
wg genkey | tee client_private.key | wg pubkey > client_public.key
(1)查看客户端生成的密钥:
cat client_private.key
(2)查看客户端生成的公钥:
cat client_public.key
  • client_private.key=客户端密钥
  • client_public.ke客户端=客户端公钥
复制出来在桌面新建一个文本,保存,后面要用到
6.配置 WireGuard 服务器:
(1)创建配置文件
nano /etc/wireguard/wg0.conf
(2)编辑配置文件
[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 客户端:
1.创建客户端配置文件
nano client.conf
2.编辑客户端配置文件
[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的配置文件:
接着下载安装客户端打开运行,导入配置文件:
官网下载地址:安装 – WireGuard
网络正常访问。查看一下它的流量,应该是属于全模式,
 
接下来下面给它做一下路由规则,让它实现流量的一个分流:
1.开启Wireguard的Pre/Post命令支持,只能通过修改注册表的方式开启,具体操作:
  • 以管理员身份运行cmd
  • 输入以下命令按回车
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
连接上后可以检测一下流量情况:https://www.ip120.cn/
好了,正常!
以下一些相关命令:
停止 WireGuard 服务:
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
卸载 WireGuard 包:
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
今天的分享就到这里!