一.【实验目的】
(1)了解OpenVPN搭建流程和使用
(2)了解VPN工作原理
二.【实验环境】
实验所需器材:
(1)一台设备
(2)一台PC主机
(3)一根网线(主机A与设备管理网口连接)
三.【实验配置】
(1)操作系统:主机A操作系统Windows系统。
(2)软件配置:主机A需要使用到的软件主要有:vncviewer、MobaXterm、OpenVPN GUI。
(3)网络配置:
主机A的网络配置信息如下:
IP |
192.168.1.20 |
Netmask |
255.255.255.0 |
Gateway |
192.168.1.1 |
为了让每一个实验案例顺利进行,请严格按照此文档对各主机进行网络配置。
四.【实验原理】
一、身份验证与授权
身份验证:当用户尝试连接到VPN时,VPN服务器会要求用户进行身份验证。这通常涉及用户名和密码的验证,有些高级VPN服务还可能采用数字证书、生物识别等更安全的身份验证方式。身份验证的目的是确保只有经过授权的用户才能访问VPN网络,防止未经授权的访问。
授权:一旦用户通过身份验证,VPN服务器会根据用户的身份和权限,对其进行授权。授权过程会确定用户是否有权访问特定的网络资源,以及可以访问哪些资源。这有助于确保网络资源的安全性和可用性。
二、隧道建立与加密
隧道建立:VPN客户端与VPN服务器之间会建立一条安全的通信隧道。这条隧道是在公共网络上模拟出的私有网络通道,用于传输加密的数据包。隧道的建立通常依赖于特定的隧道协议,如IPSec、L2TP/IPsec、SSL/TLS等。
加密:在隧道建立过程中,VPN客户端和服务器会协商加密算法和密钥。这些算法和密钥用于对传输的数据进行加密和解密,以确保数据的机密性和完整性。加密过程通常涉及复杂的数学运算和密钥管理,以确保数据在传输过程中不被窃听、篡改或泄露。
三、数据传输
封装:在数据传输过程中,VPN客户端会将用户数据封装在特定的协议中,并添加隧道协议头。这样,数据包在公共网络上传输时,就会被识别为属于特定VPN隧道的流量。
加密传输:封装后的数据包会通过之前建立的VPN隧道进行传输。在传输过程中,数据包会被加密,以确保其机密性。即使数据包被第三方截获,也无法轻易解密和篡改。
路由与转发:VPN服务器会根据数据包的目的地址和路由策略,将其转发到目标网络。在转发过程中,VPN服务器会确保数据包按照正确的路径进行传输,并维护数据的完整性和顺序性。
四、数据解密与转发
解密:当数据包到达目标网络时,VPN服务器会使用之前协商的密钥对数据进行解密。解密过程与加密过程相反,它涉及复杂的数学运算和密钥管理,以确保数据能够正确还原为原始格式。
转发:解密后的数据包会被转发到目标网络中的相应设备或应用程序。在目标网络内部,数据包被当作普通的网络流量进行处理,用户可以像在公司内部网络一样方便地访问共享资源。
五、连接维护与断开
连接维护:在VPN连接建立后,VPN客户端和服务器会定期交换心跳包或保活消息,以确保连接的稳定性和可用性。如果连接中断或出现问题,双方会尝试重新建立连接或采取其他恢复措施。
断开连接:当用户完成VPN连接后,需要断开连接以释放资源。断开连接时,VPN客户端和服务器会进行必要的清理工作,如删除临时文件、释放端口等。同时,双方还会确保数据的完整性和安全性,防止数据泄露或丢失。
五.【实验步骤】
下面操作步骤以SSH形式登录设备,也可以通过VLC远程登录。
(1)通过SSH方式登录设备,输入用户名和密码进入系统。
用户名:hnxs 密码:123123 |
(2)将当前用户切换到root权限用户,root用户密码“123123”。
su |
(3)通过“apt-get”命令安装openVPN服务器和生成密钥软件
注解: apt-get install -y 软件名称 通过apt install命令安装软件包 |
apt-get install -y openvpn easy-rsa |
(4)跳转到生成密钥文件目录
cd /usr/share/easy-rsa |
(5)将“vars.example”文件拷贝到“vars”
cp vars.example vars |
(6)编辑“vars”文件,定义密钥信息,如公司名称、部门和邮箱等信息。
nano vars |
(7)找到 “KEY_COUNTRY” 行,可根据情况是否修改相关信息等。(如果没有自行是否添加)
export KEY_COUNTRY=”国家码” export KEY_PROVINCE=”省份” export KEY_CITY=”城市” export KEY_ORG=”组织” export KEY_EMAIL=”你的邮箱” export KEY_OU=”部门” |
(8)在最后一行追加KEY_NAME信息,添加完KEY_NAME信息后保存退出vars文件。(server可自定义名称)
export KEY_NAME=”server” |
(9)初始化生成密钥环境,生成pki目录。
./easyrsa init-pki |
(10)执行生成CA证书文件,执行过程会提示输入内容,敲回车键配置默认内容。
./easyrsa build-ca nopass |
(11)查看pki目录,查看CA证书是否已生成
ls pki |
(12)制作服务端证书文件,文件名需要vars文件KEY_NAME一致。
./easyrsa build-server-full 文件名 nopass |
(13)制作客户端证书,文件名可自定义,不与服务端冲突即可。
./easyrsa build-client-full 文件名 nopass |
(14)查看服务端和客户端证书与密钥文件
ls pki/issued ls pki/private |
(15)创建迪菲•赫尔曼密钥文件,生成过程比较漫长,需要等待一段时间
./easyrsa gen-dh |
(16)拷贝配置服务端模板“server.conf”文件到“/etc/openvpn”目录。
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ |
(17)跳转到“/etc/openvpn”目录
cd /etc/openvpn |
(18)解压server.conf.gz文件到当前目录(/etc/openvpn)
gzip -d server.conf.gz |
(19)将生成CA证书和迪菲•赫尔曼密钥复制到“etc/openvpn”目录
cp /usr/share/easy-rsa/pki/{ca.crt,dh.pem} /etc/openvpn/ |
(20)将生成好的服务端和客户端密钥和证书复制到“etc/openvpn”目录
cp /usr/share/easy-rsa/pki/issued/server.crt /etc/openvpn/server/ cp /usr/share/easy-rsa/pki/issued/win10.crt /etc/openvpn/client/ cp /usr/share/easy-rsa/pki/private/server.key /etc/openvpn/server/ cp /usr/share/easy-rsa/pki/private/win10.key /etc/openvpn/client/ |
(21)编辑server.conf文件,设置Openvpn服务端配置
nano server.conf |
(22)修改传输协议,采用TCP协议交互通信。
(23)修改证书和密钥路径和密钥名称
(24)修改DNS服务器IP地址
(25)启动多个客户端可以使用一个证书和密钥
(26)关闭VPN服务端TLS验证
(27)修改交互加密算法,采用“AES-256-GCM”加密算法机制
(28)启动LZO压缩算法
(29)开启日志信息和追加日志内容
(30)关闭服务端重启后,客户端自动重新连接
(31)追加设置交互链路最大传输
link-mtu 1500 |
(32)设置完成后保存server.conf文件和退出文件,“ctrl+o”写入保存,“ctrl+x”退出。
(33)重启openvpn服务端服务应用
systemctl restart openvpn@server |
(34)设置openvpn文件目录权限
chmod -R 777 * |
(35)切换到电脑中,安装openvpn客户端程序,找到“OpenVPN-2.5.7-I602-amd64.msi”程序
(36)安装好openVPN客户端程序后,找到安装路径,跳转到config目录
(37)通过“mobaXterm”工具从服务端下载客户端证书和CA文件到config目录。(etc/openvpn目录下载相关客户端证书和CA证书)
(38)config目录新建文件,文件名自定义和文件后缀“.ovpn”。
(39)文件内容添加如下,添加完成后保存内容。
# 指定这是一个客户端配置文件 client
# 使用TUN设备,用于IP层的路由 dev tun
# 使用TCP协议作为传输层协议 proto tcp
# 指定VPN服务器的IP地址和端口号 remote 192.168.5.1 1194
# 使用AES-256-GCM加密算法进行数据加密 cipher AES-256-GCM # 如果连接失败,则无限次尝试重新解析DNS服务器地址 resolv-retry infinite
# 不使用本地端口绑定,避免端口冲突 nobind
# 即使连接中断,也不重新读取密钥文件,保持密钥持久化 persist-key # 即使连接中断,也不关闭TUN/TAP设备,保持隧道持久化 persist-tun
# 指定CA(证书颁发机构)的证书文件,用于验证服务器证书 ca ca.crt # 指定客户端的证书文件,用于身份验证 cert win10.crt # 指定客户端的私钥文件,与证书配套使用 key win10.key
# 启用LZO压缩,以减小传输数据量 comp-lzo
# 设置链路层MTU(最大传输单元)为1500字节,这是以太网的标准MTU大小 link-mtu 1500
# 不从服务器自动拉取路由信息,需要手动指定路由 route-nopull # 手动添加一条到192.168.71.0/24网络的路由 route 192.168.71.0 255.255.255.0 # 手动添加一条到10.8.0.0/24网络的路由 route 10.8.0.0 255.255.255.0
# 设置日志输出的详细程度为3,中等详细程度,便于调试和监控 verb 3 |
(40)打开“OpenVPN GUI”应用程序,打开程序后会自动隐藏程序。查看右下角小图标会显示一台小电脑图标。
(41)右键openvpn小图标选中连接
(42)OpenVPN客户端开始连接VPN服务端(如果连不上VPN服务端,关闭OpenVPN客户端,用管理员权限运行OpenVPN客户端)
(43)连接成功后,显示DHCP分配IP地址信息
(44)打开命令行终端,输入“ipconfig/all”查看到DHCP分配的详细信息
(45)执行ping命令,ping通VPN服务器
ping 10.8.0.1 |
六.【实验思考】
(1)OpenVPN的Tap模式与Tun模式有什么区别?
(2)OpenVPN的加密机制是什么?
(3)如何确保OpenVPN服务器的安全性?
katana
不错
太棒了