搭建服务器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(通常作为默认,确认即可) 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,能通则说明配置成功

相关推荐
Wnq100729 分钟前
DEEPSEEK创业项目推荐:
运维·计算机视觉·智能硬件·ai创业·deepseek
weixin_4284984912 分钟前
Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化
linux·运维·性能优化
盛满暮色 风止何安1 小时前
VLAN的高级特性
运维·服务器·开发语言·网络·网络协议·网络安全·php
lemon3106242 小时前
dockerfile制作镜像
linux·运维·服务器·学习
易保山2 小时前
MIT6.S081 - Lab5 Lazy(延迟分配)
linux·操作系统·c
AI享网无代码创作2 小时前
WP Mail 邮件发送:WordPress Mail SMTP设置
运维·服务器·网络
就改了2 小时前
Java进阶——Lombok的使用
java·服务器·前端
陈阳羽3 小时前
云服务器Ubuntu安装宝塔面板MongoDB修改配置文件本地连接
服务器·mongodb·ubuntu
想躺在地上晒成地瓜干3 小时前
树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
linux·树莓派·raspberrypi·树莓派教程
Shier833_Ww4 小时前
目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库
linux·yolo·ubuntu