搭建服务器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,能通则说明配置成功

相关推荐
你好潘先生4 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
orion5715 小时前
Missing Semester Class1:course overview and introduction of shell
linux
SkyWalking中文站19 小时前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
用户1204872216121 小时前
Linux驱动编译与加载
linux·嵌入式
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式