一、项目准备 {#一-项目准备}
1.1、VMware ESXi {#1-1-VMware-ESXi}
VMware ESXi
1.2、Ubuntu镜像 {#1-2-Ubuntu镜像}
Ubuntu 22.04.3 ISO
1.3、WireGuard客户端 {#1-3-WireGuard客户端}
WireGuard ALL Client
1.4、SSH工具 {#1-4-SSH工具}
MobaXterm
1.4.1、MobaXterm激活 {#1-4-1-MobaXterm激活}
二、部署Ubuntu {#二-部署Ubuntu}
Ubuntu系统在VMware ESXi中安装设置请参考 Ubuntu搭建OpenVPN配置分流规则指南!第二步)
三、安装WireGuard {#三-安装WireGuard}
3.1、安装 {#3-1-安装}
apt -y install wireguard
3.2、进入WireGurad文件夹 {#3-2-进入WireGurad文件夹}
cd /etc/wireguard/ && ll
3.3、设置新建文件或目录的默认权限 {#3-3-设置新建文件或目录的默认权限}
umask 077
3.4、为服务器生成私钥 {#3-4-为服务器生成私钥}
wg genkey | tee /etc/wireguard/server.key
3.5、为服务器生成公钥 {#3-5-为服务器生成公钥}
cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
3.6、为客户端生成私钥 {#3-6-为客户端生成私钥}
wg genkey | tee /etc/wireguard/client.key
3.7、为客户端生成公钥 {#3-7-为客户端生成公钥}
cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub
3.8、创建wg0.conf服务端配置文件 {#3-8-创建wg0-conf服务端配置文件}
nano /etc/wireguard/wg0.conf
Address,ListenPor,AllowedIPs可以自定义,避免和内网冲突即可
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = 服务端公钥
[Peer]
PublicKey = 客户端私钥
AllowedIPs = 10.0.0.2/32
3.9、配置终端上网 {#3-9-配置终端上网}
如果希望客户端连接VPN后希望能通过VPN隧道上网,还需要添加如下配置到服务端配置,其中ens160是服务端本地上网网卡名称,可以使用:ip addr 查看
ip addr
请注意,这俩行代码必须放在[Interface]服务端配置项内,否则不生效,会导致服务启动失败
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
3.10、启动服务 {#3-10-启动服务}
systemctl start wg-quick@wg0
3.11、开机自启 {#3-11-开机自启}
systemctl enable wg-quick@wg0
3.12、状态查看 {#3-12-状态查看}
systemctl status wg-quick@wg0.service
四、客户端配置 {#四-客户端配置}
客户端只介绍Windows端,手机和Windows基本一致
4.1、客户端wg0.conf {#4-1-客户端wg0-conf}
DNS场景是内网有DNS服务器是填写,或者客户端所有流量走VPN,且内网有绿色DNS,Endpoint是服务器的上网口IP,如果做了端口映射,这里需要写映射后的公网IP或者域名,AllowedIPs指什么流量走VPN访问,比如下面的配置是192.168.6.254这个IP走VPN,其他默认走本地,如果需要客户端走VPN隧道上网,那这里就需要把AllowedIPs写成0.0.0.0/0
[Interface]
PrivateKey = 客户端私钥
Address = 10.0.0.2/32
DNS = 192.168.6.190
[Peer]
PublicKey = 服务端公钥
AllowedIPs = 192.168.6.254/32
Endpoint = 192.168.6.105:51820
4.2、新建wg0.txt {#4-2-新建wg0-txt}
4.3、更改.txt为.conf {#4-3-更改-txt为-conf}
五、客户端测试 {#五-客户端测试}
5.1、查看路由 {#5-1-查看路由}
route print -4
5.2、修改配置文件 {#5-2-修改配置文件}
六、拓展 {#六-拓展}
因为我们WireGurad是点到点的连接,所以服务端也能连接客户端