使用OpenVPN搭建VPN

来源:互联网 发布:手绘照片软件 编辑:程序博客网 时间:2024/05/20 15:11

VPN简介

VPN,即虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。


OpenVPN简介

OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包。 OpenVPN 允许创建的 VPN 使用公开密钥、电子证书、或者用户名/密码来进行身份验证。它大量使用了 OpenSSL 加密库中的 SSLv3 / TLSv1 协议函数库。


实验进行的条件及结果

本次实验使用两台电脑,连接同一个局域网。服务器电脑的IP地址为192.168.43.77。客户端的IP地址为192.168.43.208。请注意即使此时在同一个局域网下,也可能需要关闭防火墙,要保证两台电脑之间可以通过这两个IP地址ping通。实验的目的就是在两台电脑之间建立一个虚拟局域网,通过虚拟局域网的IP地址可以互相ping通。


下载安装OpenVPN

进入官网:https://openvpn.net/index.php/download/community-downloads.html
Windows下安装如下图片最下面一个exe文件:
OpenVPN


OpenVPN的配置

  1. 以管理员模式打开文本编辑器,再用文本编辑器打开文件 vars.bat.sample (默认路径为:C:\Program Files\OpenVPN\easy-rsa)。这里直接右键文件是找不到以管理员模式打开的选项的。接着将该文件修改如下并保存:

    @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=%ProgramFiles%\OpenVPN\easy-rsaset KEY_CONFIG=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=4096rem 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=CNset KEY_PROVINCE=GuangDongset KEY_CITY=GuangZhouset KEY_ORG=qq //机构set KEY_EMAIL=965922280@qq.comset KEY_CN=changeme //证书的通用名称set KEY_NAME=changeme //用户姓名set KEY_OU=changeme //部门名set PKCS11_MODULE_PATH=changemeset PKCS11_PIN=1234
  2. 以管理员身份打开cmd,进入easy-rsa的文件夹,执行以下命令,该命令会删除掉之前生成的所有证书和密钥文件,以避免与之后全新生成的证书和密钥发生冲突。:

    初始设置

  3. 接着执行如下命令用于创建CA根证书及key,此时还可修改此前预先设置的注册信息:

    这里写图片描述
    此时,我们就可以在证书存放目录中看到生成的CA证书和私钥文件了。双击该证书,可以查看证书的信息:
    这里写图片描述
    这里写图片描述

  4. 执行以下命令创建服务端证书和key,命令中的参数 server 指的是生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的 Common Name 也应保持一致。之后需要设置密码,最后程序会询问你是否注册并提交证书,两次均输入 y 即可:
    这里写图片描述

  5. 创建迪菲·赫尔曼密钥。迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
    这里写图片描述

  6. 创建客户端证书和key,方法和服务端一样,如下:
    这里写图片描述

  7. 生成ta.key,用于防御 DoS、UDP 淹没等恶意攻击。
    这里写图片描述

  8. 通过上述步骤后,我们可以看到keys文件夹下生成的文件:
    这里写图片描述

  9. 此时keys文件中的文件分别放到服务端和客户端电脑的config文件夹中。服务端和客户端分别如下,这里面的server.ovpn和client.ovpn是从sample-config中拷贝出来的:
    服务端config文件夹
    客户端config文件夹

  10. 配置server.ovpn和client.ovpn文件的内容,基本需要修改和注意的内容如下,;和#开头的是注释:

    服务端:

    local 192.168.43.77port 1194proto udpdev tunca ca.crtcert server.crtkey server.key  # This file should be kept secretdh dh4096.pemserver 10.8.0.0 255.255.255.0tls-auth ta.key 0 # This file is secret;comp-lzo //这个客户端和服务端要一起有或一起没有,否则无法ping通。

    客户端:

    dev tun proto udpremote 192.168.43.77 1194ca ca.crtcert client.crtkey client.keytls-auth ta.key 1;comp-lzo

OpenVPN连接

  1. 打开服务端的OpenVPN,右键进行连接,结果如下图:
    这里写图片描述

  2. 服务端连接成功后打开客户端电脑,进行连接,结果如下图:
    这里写图片描述

  3. 此时可以测试客户端和服务端电脑之间是否可以通过虚拟局域网进行ping通。
    这里写图片描述
    这里写图片描述

  4. 可以成功ping通,证明实验成功。


实验参考链接:

http://blog.csdn.net/zxs9999/article/details/52813147

http://www.jianshu.com/p/3916658df123

原创粉丝点击