之前一直在使用softether 来搭建vpn代理,挺好用的,但是有点不好的是,没有手机和mac的客户端,只能用L2TP方式链接…
这次选择wireguard搭建…
特点:
- 新兴的轻量级 VPN 协议。
- 代码量小,安全性高(默认采用现代加密算法,如 ChaCha20)。
- 性能优于 OpenVPN,延迟低,吞吐量高。
优点:
- 配置简单,易于维护。
- 更高的速度和效率。
推荐场景: 对性能要求较高的用户,例如远程办公、流媒体访问。
对于 CentOS 7:
安装 ELRepo 仓库:yum install -y epel-release elrepo-release
安装 WireGuard:yum install -y kmod-wireguard wireguard-tools
步骤 2:生成密钥对
在 /etc/wireguard
目录下生成服务器和客户端的密钥对:mkdir -p /etc/wireguard
cd /etc/wireguard
# 生成服务器的私钥和公钥
wg genkey | tee server_private.key | wg pubkey > server_public.key
记得还要生成客户端的密钥,这里我踩坑了…
wg genkey | tee client_private.key | wg pubkey > client_public.key
步骤 3
编辑服务器配置文件 vim /etc/wireguard/wg0.conf:
添加以下内容:
[Interface] PrivateKey = <服务器私钥44位数>
Address = 10.0.0.1/24
ListenPort = 51820
SaveConfig = true
[Peer]
PublicKey = <客户端公钥44位数>
AllowedIPs = 10.0.0.2/32
一个是服务器端的私钥,一个是客户端的公钥,这里我没留意,踩坑了…
步骤 4:启用 IP 转发:vim /etc/sysctl.conf
添加或确保以下行存在:net.ipv4.ip_forward = 1
然后sysctl -p
步骤 5:启动并启用 WireGuard:wg-quick up wg0
设置开机启动:systemctl enable wg-quick@wg0
记得要开放51820/udp端口;
然后在电脑上创建一个类似的配置文件xxx.conf,然后倒入客户端即可
[Interface]
PrivateKey = <客户端私钥>
Address = 10.0.0.2/24
[Peer]
PublicKey = <服务器公钥>
Endpoint = <服务器IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
可以输入命令wg查看流量数据
一些WireGuard 服务命令:
重启服务器上的 WireGuard:
wg-quick down wg0
wg-quick up wg0
验证是否重新加载成功:wg show
由于使用iptables防火墙,所以要设置一下;
开放51820端口:iptables -A INPUT -p udp –dport 51820 -j ACCEPT
2,允许网桥的内部通信
WireGuard 通常使用虚拟网桥设备(如 wg0
),需要允许内部通信。假设 WireGuard 的 IP 范围是 10.0.0.0/24
,运行以下命令:
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -A INPUT -i wg0 -j ACCEPT
3. 配置 NAT 转发
如果希望客户端访问外网,需要设置 NAT 转发:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
注意:10.0.0.0/24 是 WireGuard 的虚拟网段。
eth0 是服务器外网接口