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服务器
配置服务端
- 在服务端安装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(通常作为默认,确认即可)
- 制作密钥文件
[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=
- 编写配置文件
[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服务器
配置客户端
- 在客户端安装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(通常作为默认,确认即可)
- 制作密钥文件
[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=
- 打开proxy服务端配置文件
[root@proxy linux]# vim /etc/wireguard/lwg.conf
....
[Peer] #对端(客户端)配置
PublicKey = I4PSki05VteWED39gh9XV03mBbkw/kCkq1QmQuT0XD0= #客户端的公钥
AllowedIPs = 10.10.10.2/32
- 启动服务,注意,该步骤必须在上述配置文件获取客户端的公钥才可进行
[root@proxy wireguard]# wg-quick up lwg #启动VPN服务,lwg是之前配置文件的名称
[root@proxy wireguard]# ss -antlpu | grep 54321 #检查端口,有54321
[root@proxy wireguard]# ifconfig #查看有对应的网卡
- 编写客户端配置文件
[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传递
- 启动服务
[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,能通则说明配置成功