51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Ubuntu搭建WireGuard实现SSLVPN功能

一、项目准备 {#一-项目准备}

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激活}

MobaXterm 常规设置指南

二、部署Ubuntu {#二-部署Ubuntu}

Ubuntu系统在VMware ESXi中安装设置请参考 Ubuntu搭建OpenVPN配置分流规则指南!第二步)

三、安装WireGuard {#三-安装WireGuard}

3.1、安装 {#3-1-安装}

apt -y install wireguard

yydy_2023-12-25_15-59-05

3.2、进入WireGurad文件夹 {#3-2-进入WireGurad文件夹}

cd /etc/wireguard/ && ll

yydy_2023-12-25_16-03-14

3.3、设置新建文件或目录的默认权限 {#3-3-设置新建文件或目录的默认权限}

umask 077

3.4、为服务器生成私钥 {#3-4-为服务器生成私钥}

wg genkey | tee /etc/wireguard/server.key

yydy_2023-12-25_16-06-25

3.5、为服务器生成公钥 {#3-5-为服务器生成公钥}

cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub

yydy_2023-12-25_16-07-21

3.6、为客户端生成私钥 {#3-6-为客户端生成私钥}

wg genkey | tee /etc/wireguard/client.key

yydy_2023-12-25_16-10-00

3.7、为客户端生成公钥 {#3-7-为客户端生成公钥}

cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub

yydy_2023-12-25_16-10-48

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

yydy_2023-12-25_16-20-54

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

yydy_2023-12-25_16-43-16

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

yydy_2023-12-25_16-46-56

四、客户端配置 {#四-客户端配置}

客户端只介绍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}

yydy_2023-12-25_17-03-04

4.3、更改.txt为.conf {#4-3-更改-txt为-conf}

yydy_2023-12-25_17-05-35

yydy_2023-12-25_17-04-07

五、客户端测试 {#五-客户端测试}

yydy_2023-12-25_17-07-19
yydy_2023-12-25_17-07-32
yydy_2023-12-25_17-07-58
yydy_2023-12-25_17-07-53

5.1、查看路由 {#5-1-查看路由}

route print -4

yydy_2023-12-25_17-09-29
yydy_2023-12-25_17-10-50

5.2、修改配置文件 {#5-2-修改配置文件}

yydy_2023-12-25_17-12-14
yydy_2023-12-25_17-13-44
yydy_2023-12-25_17-14-15

六、拓展 {#六-拓展}

因为我们WireGurad是点到点的连接,所以服务端也能连接客户端

yydy_2023-12-25_17-30-03
Image 1 Image 2

yydy_2023-12-25_17-45-31

赞(2)
未经允许不得转载:工具盒子 » Ubuntu搭建WireGuard实现SSLVPN功能