搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard

Linux客户端连接WireGuard

实验要求
准备两台Linux系统,实现VPN服务端功能,安装wireguard-tools等软件包并配置,服务端使用proxy主机,客户端使用client主机
环境准备
主机名	IP地址	角色
client(已存在)	eth0:192.168.88.10/24(充当公网地址)
10.10.10.2(充当私网VPN通信地址)	客户端
proxy(已存在)	eth0:192.168.88.5/24(充当公网地址)
10.10.10.1(充当私网VPN通信地址)	VPN服务器
配置服务端
1)  在服务端安装VPN软件
将/linux-soft/s2/wk/vpn目录拷贝到proxy主机
[root@server1 ~]# scp -r /linux-soft/s2/wk/vpn 192.168.88.5:/root
[root@proxy ~]# ls /root/vpn/linux
kernel-core-4.18.0-513.11.1.el8_9.x86_64.rpm           
wireguard-tools-1.0.20210914-1.el8.x86_64.rpm
kmod-wireguard-1.0.20220627-6.el8_9.elrepo.x86_64.rpm

安装软件
[root@proxy linux]# yum -y install /root/vpn/linux/*.rpm
[root@proxy linux]# reboot      #重启服务器后,内核选择4.18.0-513.11.1.el8_9.x86_64(通常作为默认,确认即可)

2)  制作密钥文件
[root@proxy ~]# cd /root/vpn/linux
[root@proxy linux]# wg genkey | tee private.key | wg pubkey > public.key
[root@proxy linux]# cat public.key      UygBBCi6gEX5aJ0hMpKjBXDxltsV4+yI4NQTqK1ih1k=
[root@proxy linux]# cat private.key
GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU=

3)  编写配置文件
[root@proxy linux]# vim /etc/wireguard/lwg.conf
[Interface]  #服务端配置
PrivateKey = GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU=  #服务器的私钥
Address = 10.10.10.1/8  #VPN内部使用的IP和掩码
ListenPort = 54321  #WireGuard服务监听的端口

[Peer]  #对端(客户端)配置
PublicKey =                        #客户端的公钥,稍后获取
AllowedIPs = 10.10.10.2/32  #允许哪些客户端访问VPN服务器
配置客户端
1)  在客户端安装VPN软件
将真机/linux-soft/s2/wk/vpn目录拷贝到client主机
[root@server1 ~]# scp -r /linux-soft/s2/wk/vpn 192.168.88.10:/root
[root@client ~]# ls /root/vpn/linux
kernel-core-4.18.0-513.11.1.el8_9.x86_64.rpm
kmod-wireguard-1.0.20220627-6.el8_9.elrepo.x86_64.rpm
wireguard-tools-1.0.20210914-1.el8.x86_64.rpm

[root@client ~]# yum -y install /root/vpn/linux/*.rpm
[root@client ~]# reboot     #重启服务器后,内核选择4.18.0-513.11.1.el8_9.x86_64(通常作为默认,确认即可)

2)  制作密钥文件
[root@client ~]# cd /root/vpn/linux/
[root@client linux]# wg genkey | tee private.key | wg pubkey > public.key   #生成私钥存入private.key,再利用私钥生成公钥存入public.key

[root@web1 linux]# cat public.key
I4PSki05VteWED39gh9XV03mBbkw/kCkq1QmQuT0XD0=     #把此公钥写入proxy主机服务端lwg.conf文件中
[root@web1 linux]# cat private.key
6NQ2iV8v+9pcUSW8omqWEr3k2ITYNhrZUq7WuosZj3I=

3)  打开proxy服务端配置文件
[root@proxy linux]# vim /etc/wireguard/lwg.conf 
....
[Peer]  #对端(客户端)配置
PublicKey =  I4PSki05VteWED39gh9XV03mBbkw/kCkq1QmQuT0XD0=  #客户端的公钥
AllowedIPs = 10.10.10.2/32

4)  启动服务,注意,该步骤必须在上述配置文件获取客户端的公钥才可进行
[root@proxy wireguard]# wg-quick up lwg  #启动VPN服务,lwg是之前配置文件的名称
[root@proxy wireguard]# ss -antlpu | grep 54321  #检查端口,有54321
[root@proxy wireguard]# ifconfig               #查看有对应的网卡

5)  编写客户端配置文件
[root@client ~]# vim /etc/wireguard/client.conf  #新建文件(文件名任意)
[Interface]
PrivateKey = 6NQ2iV8v+9pcUSW8omqWEr3k2ITYNhrZUq7WuosZj3I=  #客户端生成的私钥
Address = 10.10.10.2/8  #VPN客户端的IP和掩码
DNS = 8.8.8.8  #VPN客户端的DNS

[Peer]  #对端,需要连接的服务器
PublicKey = UygBBCi6gEX5aJ0hMpKjBXDxltsV4+yI4NQTqK1ih1k=  #服务器生成的公钥
Endpoint = 192.168.88.5:54321  #VPN服务器的公网IP地址和端口
AllowedIPs = 10.0.0.0/8  #哪些流量经过vpn传递

4)  启动服务
[root@client wireguard]# wg-quick up client  #启动VPN客户端
[root@client wireguard]# ping 10.10.10.1  #测试可以连通服务端的VPN内部地址表示成功

Windows客户端连接WireGuard

实验要求
使Windows系统成为VPN客户端,并连接VPN服务器
环境准备
主机名	IP地址	角色
win虚拟机(已存在)	eth0:192.168.88.155/24(充当公网地址)
20.20.20.2(充当私网VPN通信地址)	客户端
proxy(已存在)	eth0:192.168.88.5/24(充当公网地址)
20.20.20.1(充当私网VPN通信地址)	VPN服务器
windows安装软件
1)把vpn软件放到windows主机,并解压安装

2)把windows版本的wireguard软件 和 client的配置文件client.conf拷贝到server1真机的/var/www/html目录,共享出去

[root@server1 ~]# cp /linux-soft/s2/wk/vpn/wireguard-amd64-0.5.3.msi /var/www/html/wi.msi
[root@server1 ~]# chmod 777 /var/www/html/wi.msi    #选做,如果下载无权限可以给权限

[root@server1 ~]# scp 192.168.88.10:/etc/wireguard/client.conf /var/www/html/
[root@server1 ~]# chmod 777 /var/www/html/client.conf
windows浏览器访问192.168.88.254/wi.msi 下载,找到下载的软件,双击此软件安装

3)运行WireGuard(在windows桌面左下角搜索或开始查找)

image-20240903180808932

 

可以在下列界面新建空隧道,然后写入参数

image-20240903181104981

image-20240903185416480

把看到的公钥保存到下来,在桌面建立一个c.txt文件,把复制的公钥粘贴到文本文件中

windows浏览器访问192.168.88.254/client.conf,可以得到服务端的公钥,从Address开始复制到最后,然后粘贴到新创建的隧道中;修改Address = 20.20.20.2/8,;Endpoint = 192.168.88.5:54322;AllowedIPs = 20.0.0.0/8;

image-20240903185249442

安装windows网站
在windows桌面左下角搜索中找"Windows功能"可以打开启动或关闭Windows功能界面,把c.txt(公钥文件)发布出去

image-20240903182830749

 

image-20240903182909884

装完之后来到C:\inetpub\wwwroot,此目录是网站目录

并将c.txt文件拖拽进 C:\inetpub\wwwroot(拷贝时可能会弹出是要提供管理员权限,点继续即可)

使用proxy主机访问,获取公钥
[root@proxy ~]# curl 192.168.88.155/c.txt
ZuFwdixpgGymQkL3jispRi2N3Ekm0ZzEfIPs4E/yXQs=
回到服务器端,重新打开配置文件,按下面修改

[root@proxy wireguard]# wg-quick down lwg  #停止服务
[root@proxy linux]# vim /etc/wireguard/lwg.conf
[Interface]  #服务端配置
PrivateKey = GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU=  #服务器的私钥
Address = 20.20.20.1/8  #修改VPN隧道里面的IP和网段
ListenPort = 54322  #WireGuard服务监听的端口

[Peer]  #对端(客户端)配置
PublicKey =pZMKLc3Kw0YfrwydVRF90bXy33ERSBW8zFp/6t13RlM= #客户端的公钥,这个公钥可以用curl 访问192.168.88.155/c.txt 得到(该地址是windows的网站)
AllowedIPs = 20.20.20.2/32  #允许哪些客户端访问VPN服务器

[root@proxy wireguard]# wg-quick up lwg  #启动VPN服务
[root@proxy wireguard]# ss -antlpu | grep 54322  #检查端口
回到windows客户端,点击连接按钮,会显示已连接

image-20240903185725762

测试
在windows的cmd窗口ping 20.20.20.1,能通则说明配置成功

Linux客户端连接WireGuard

实验要求

准备两台Linux系统,实现VPN服务端功能,安装wireguard-tools等软件包并配置,服务端使用proxy主机,客户端使用client主机

环境准备

主机名 IP地址 角色

client(已存在) eth0:192.168.88.10/24(充当公网地址)

10.10.10.2(充当私网VPN通信地址) 客户端

proxy(已存在) eth0:192.168.88.5/24(充当公网地址)

10.10.10.1(充当私网VPN通信地址) VPN服务器

配置服务端

  1. 在服务端安装VPN软件

将/linux-soft/s2/wk/vpn目录拷贝到proxy主机

[root@server1 ~]# scp -r /linux-soft/s2/wk/vpn 192.168.88.5:/root

[root@proxy ~]# ls /root/vpn/linux

kernel-core-4.18.0-513.11.1.el8_9.x86_64.rpm

wireguard-tools-1.0.20210914-1.el8.x86_64.rpm

kmod-wireguard-1.0.20220627-6.el8_9.elrepo.x86_64.rpm

安装软件

[root@proxy linux]# yum -y install /root/vpn/linux/*.rpm

[root@proxy linux]# reboot #重启服务器后,内核选择4.18.0-513.11.1.el8_9.x86_64(通常作为默认,确认即可)

  1. 制作密钥文件

[root@proxy ~]# cd /root/vpn/linux

[root@proxy linux]# wg genkey | tee private.key | wg pubkey > public.key

[root@proxy linux]# cat public.key UygBBCi6gEX5aJ0hMpKjBXDxltsV4+yI4NQTqK1ih1k=

[root@proxy linux]# cat private.key

GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU=

  1. 编写配置文件

[root@proxy linux]# vim /etc/wireguard/lwg.conf

[Interface] #服务端配置

PrivateKey = GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU= #服务器的私钥

Address = 10.10.10.1/8 #VPN内部使用的IP和掩码

ListenPort = 54321 #WireGuard服务监听的端口

[Peer] #对端(客户端)配置

PublicKey = #客户端的公钥,稍后获取

AllowedIPs = 10.10.10.2/32 #允许哪些客户端访问VPN服务器

配置客户端

  1. 在客户端安装VPN软件

将真机/linux-soft/s2/wk/vpn目录拷贝到client主机

[root@server1 ~]# scp -r /linux-soft/s2/wk/vpn 192.168.88.10:/root

[root@client ~]# ls /root/vpn/linux

kernel-core-4.18.0-513.11.1.el8_9.x86_64.rpm

kmod-wireguard-1.0.20220627-6.el8_9.elrepo.x86_64.rpm

wireguard-tools-1.0.20210914-1.el8.x86_64.rpm

[root@client ~]# yum -y install /root/vpn/linux/*.rpm

[root@client ~]# reboot #重启服务器后,内核选择4.18.0-513.11.1.el8_9.x86_64(通常作为默认,确认即可)

  1. 制作密钥文件

[root@client ~]# cd /root/vpn/linux/

[root@client linux]# wg genkey | tee private.key | wg pubkey > public.key #生成私钥存入private.key,再利用私钥生成公钥存入public.key

[root@web1 linux]# cat public.key

I4PSki05VteWED39gh9XV03mBbkw/kCkq1QmQuT0XD0= #把此公钥写入proxy主机服务端lwg.conf文件中

[root@web1 linux]# cat private.key

6NQ2iV8v+9pcUSW8omqWEr3k2ITYNhrZUq7WuosZj3I=

  1. 打开proxy服务端配置文件

[root@proxy linux]# vim /etc/wireguard/lwg.conf

....

[Peer] #对端(客户端)配置

PublicKey = I4PSki05VteWED39gh9XV03mBbkw/kCkq1QmQuT0XD0= #客户端的公钥

AllowedIPs = 10.10.10.2/32

  1. 启动服务,注意,该步骤必须在上述配置文件获取客户端的公钥才可进行

[root@proxy wireguard]# wg-quick up lwg #启动VPN服务,lwg是之前配置文件的名称

[root@proxy wireguard]# ss -antlpu | grep 54321 #检查端口,有54321

[root@proxy wireguard]# ifconfig #查看有对应的网卡

  1. 编写客户端配置文件

[root@client ~]# vim /etc/wireguard/client.conf #新建文件(文件名任意)

[Interface]

PrivateKey = 6NQ2iV8v+9pcUSW8omqWEr3k2ITYNhrZUq7WuosZj3I= #客户端生成的私钥

Address = 10.10.10.2/8 #VPN客户端的IP和掩码

DNS = 8.8.8.8 #VPN客户端的DNS

[Peer] #对端,需要连接的服务器

PublicKey = UygBBCi6gEX5aJ0hMpKjBXDxltsV4+yI4NQTqK1ih1k= #服务器生成的公钥

Endpoint = 192.168.88.5:54321 #VPN服务器的公网IP地址和端口

AllowedIPs = 10.0.0.0/8 #哪些流量经过vpn传递

  1. 启动服务

[root@client wireguard]# wg-quick up client #启动VPN客户端

[root@client wireguard]# ping 10.10.10.1 #测试可以连通服务端的VPN内部地址表示成功

Windows客户端连接WireGuard

实验要求

使Windows系统成为VPN客户端,并连接VPN服务器

环境准备

主机名 IP地址 角色

win虚拟机(已存在) eth0:192.168.88.155/24(充当公网地址)

20.20.20.2(充当私网VPN通信地址) 客户端

proxy(已存在) eth0:192.168.88.5/24(充当公网地址)

20.20.20.1(充当私网VPN通信地址) VPN服务器

windows安装软件

1)把vpn软件放到windows主机,并解压安装

2)把windows版本的wireguard软件 和 client的配置文件client.conf拷贝到server1真机的/var/www/html目录,共享出去

[root@server1 ~]# cp /linux-soft/s2/wk/vpn/wireguard-amd64-0.5.3.msi /var/www/html/wi.msi

[root@server1 ~]# chmod 777 /var/www/html/wi.msi #选做,如果下载无权限可以给权限

[root@server1 ~]# scp 192.168.88.10:/etc/wireguard/client.conf /var/www/html/

[root@server1 ~]# chmod 777 /var/www/html/client.conf

windows浏览器访问192.168.88.254/wi.msi 下载,找到下载的软件,双击此软件安装

3)运行WireGuard(在windows桌面左下角搜索或开始查找)

image-20240903180808932

可以在下列界面新建空隧道,然后写入参数

image-20240903181104981

image-20240903185416480

把看到的公钥保存到下来,在桌面建立一个c.txt文件,把复制的公钥粘贴到文本文件中

windows浏览器访问192.168.88.254/client.conf,可以得到服务端的公钥,从Address开始复制到最后,然后粘贴到新创建的隧道中;修改Address = 20.20.20.2/8,;Endpoint = 192.168.88.5:54322;AllowedIPs = 20.0.0.0/8;

image-20240903185249442

安装windows网站

在windows桌面左下角搜索中找"Windows功能"可以打开启动或关闭Windows功能界面,把c.txt(公钥文件)发布出去

image-20240903182830749

image-20240903182909884

装完之后来到C:\inetpub\wwwroot,此目录是网站目录

并将c.txt文件拖拽进 C:\inetpub\wwwroot(拷贝时可能会弹出是要提供管理员权限,点继续即可)

使用proxy主机访问,获取公钥

[root@proxy ~]# curl 192.168.88.155/c.txt

ZuFwdixpgGymQkL3jispRi2N3Ekm0ZzEfIPs4E/yXQs=

回到服务器端,重新打开配置文件,按下面修改

[root@proxy wireguard]# wg-quick down lwg #停止服务

[root@proxy linux]# vim /etc/wireguard/lwg.conf

[Interface] #服务端配置

PrivateKey = GB2NbtPoAEvNufEggKM41GNEUBlxfJfVYn4i9yJ4WlU= #服务器的私钥

Address = 20.20.20.1/8 #修改VPN隧道里面的IP和网段

ListenPort = 54322 #WireGuard服务监听的端口

[Peer] #对端(客户端)配置

PublicKey =pZMKLc3Kw0YfrwydVRF90bXy33ERSBW8zFp/6t13RlM= #客户端的公钥,这个公钥可以用curl 访问192.168.88.155/c.txt 得到(该地址是windows的网站)

AllowedIPs = 20.20.20.2/32 #允许哪些客户端访问VPN服务器

[root@proxy wireguard]# wg-quick up lwg #启动VPN服务

[root@proxy wireguard]# ss -antlpu | grep 54322 #检查端口

回到windows客户端,点击连接按钮,会显示已连接

image-20240903185725762

测试

在windows的cmd窗口ping 20.20.20.1,能通则说明配置成功

相关推荐
群联云防护小杜24 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster1 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼1 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
icy、泡芙1 小时前
T527-----音频调试
linux·驱动开发·音视频
aherhuo1 小时前
kubevirt网络
linux·云原生·容器·kubernetes
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v11 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
只会copy的搬运工1 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins