@gzm1997
2017-11-22T02:48:01.000000Z
字数 3722
阅读 1484
web作业
郭柱明 15331094
openvpn客户端服务器结构:
openvpn的虚拟网卡结构:

openvpn就是在客户端和服务端都安装一个虚拟网卡,并且获得一个虚拟的ip地址,这些虚拟的ip地址可以相互访问,其中openvpn服务器起到路由和控制的作用(相当于一个虚拟路由器)
当然,这个虚拟网卡毕竟是虚拟的,我们发送给虚拟网卡的数据在经过封装之后还是需要通过物理网卡才能发送出去。因此,OpenVPN还要做的另外一件事就是,采用数据加密、身份验证等各种手段确保数据安全无误地到达目的地。
在openvpn中,最常用的加密手段是ssl协议。使用ssl协议就需要相应的证书的密钥,因此需要在服务端生成相应的证书和密钥。
ssl/tls握手过程:
1.安装openvpn,安装在F:\openvpn\setup下
2.修改F:\openvpn\setup\easy-rsa\vars.bat.sample文件,设置初始用户变量,修改如下:
set HOME=F:\openvpn\setup\easy-rsaset KEY_CONFIG=F:\openvpn\setup\easy-rsa\openssl-1.0.0.cnf
整个vars.bat.sample文件:
@echo offrem Edit this variable to point torem the openssl.cnf file includedrem with easy-rsa.rem Automatically set PATH to openssl.exeFOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin"rem Alternatively define the PATH to openssl.exe manuallyrem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"set HOME=F:\openvpn\setup\easy-rsaset KEY_CONFIG=F:\openvpn\setup\easy-rsa\openssl-1.0.0.cnfrem Edit this variable to point torem your soon-to-be-created keyrem directory.remrem WARNING: clean-all will dorem a rm -rf on this directoryrem so make sure you definerem it correctly!set KEY_DIR=keysrem Increase this if yourem are paranoid. This will slowrem down TLS negotiation performancerem as well as the one-time DH parmsrem generation process.set DH_KEY_SIZE=2048rem Private key sizeset KEY_SIZE=1024rem These are the default values for fieldsrem which will be placed in the certificate.rem Change these to reflect your site.rem Don't leave any of these parms blank.set KEY_COUNTRY=USset KEY_PROVINCE=CAset KEY_CITY=SanFranciscoset KEY_ORG=OpenVPNset KEY_EMAIL=mail@host.domainset KEY_CN=changemeset KEY_NAME=changemeset KEY_OU=changemeset PKCS11_MODULE_PATH=changemeset PKCS11_PIN=1234
3.转到easy-rsa目录下,输入如下命令进行初始化工作:
init-config.batvars.batclean-all.bat
结果:

4.创建CA证书
在easy-rsa目录下输入build-ca.bat命令,vpn_ca设置为vpn_ca外,其他CA变量的值随意。
build-ca.bat

此时可以在keys目录下看到CA的证书和私钥

打开ca证书ca.crt,如下:

5.创建服务端证书
build-key-server.bat server
流程跟上面创建CA证书流程相似,uyye'sh也是要设置common name为server,并设置密码
结果:

6.同理创建客户端证书

7.创建迪菲·赫尔曼密钥
build-dh.bat
结果:

8.tls-auth防御DoS、UDP淹没等恶意攻击
openvpn --genkey --secret keys/ta.key
此时keys文件夹中含有:

9.openvpn配置
从keys文件夹中分别复制如下文件到客户端和服务端的 安装路径/config目录中
服务端:
客户端client1:

除此之外,需要在各自的config目录下存放一个.ovpn配置文件,服务端是server.ovpn,客户端是client.ovpn,配置文件样例存放在sample-config文件夹下
server.ovpn如下:
local 138.68.9.2 #指定监听的本机IPport 1194 #指定监听的本机端口号proto udp #指定采用的传输协议,可以选择tcp或udpdev tun #指定创建的通信隧道类型,可选tun或tapca ca.crt #指定CA证书的文件路径cert server.crt #指定服务器端的证书文件路径key server.key #指定服务器端的私钥文件路径dh dh1024.pem #指定迪菲赫尔曼参数的文件路径server 10.0.0.0 255.255.255.0 #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用10.0.0.1。ifconfig-pool-persist ipp.txt #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。tls-auth ta.key 0 #开启TLS-auth,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。keepalive 10 120 #每10秒ping一次,连接超时时间设为120秒。comp-lzo #开启VPN连接压缩,如果服务器端开启,客户端也必须开启client-to-client #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接persist-keypersist-tun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。status openvpn-status.log #指定记录OpenVPN状态的日志文件路径verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
client.ovpn:
client #指定当前VPN是客户端dev tun #必须与服务器端的保持一致proto udp #必须与服务器端的保持一致remote 192.168.1.101 1194 #指定连接的远程服务器的实际IP地址和端口号resolv-retry infinite #断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。nobind #不绑定特定的本地端口号persist-keypersist-tunca ca.crt #指定CA证书的文件路径cert client1.crt #指定当前客户端的证书文件路径key client1.key #指定当前客户端的私钥文件路径ns-cert-type server #指定采用服务器校验方式tls-auth ta.key 1 #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行;comp-lzo #与服务器保持一致verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
10.开启服务端和客户端连接
服务端:
开始->运行->services.msc,启动openVPN服务
客户端:
双击桌面的OpenVPN GUI图标运行客户端,连接服务器
连接成功:
连接成功后,桌面右下角的openvpn logo显示为绿色。
