基于虚拟机LINUX的SSL-VPN 网关搭建
1 SSL-VPN的功能简介
在可信安全无线路由器的产品研发过程中,我们研发小组想要在可信安全路由上,搭建一个SSL-VPN虚拟网关的专用网络。VPN的功能是:在公用网络上建立专用网络,进行加密通讯。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问,在企业网络中有广泛应用。
OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI,它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现,和传统 VPN 相比,它的优点是简单易用。虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。
2 OpenSSL与OpenVPN的安装
2.1 Linux下OpenSSL的安装
从OpenSSL上下载最新版本的OpenSSL软件openssl-1.0.1t并放入到虚拟机的Linux文件中,从终端进入OpenSSL的安装目录,并依次输入以下安装命令。(通过百度搜索就可以到免费的软件源代码)
$ ./config #使用$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl
#可以安装到指定目录下面
$ make
$ make test
$ make install
输入命令$ which opensll 可以查看OpenSSL的路径,命令$ openssl version可以查看所安装的OpenSSL版本号。
2.2 Linux下OpenVPN的安装
首先,从OpenVPN上下载最新版本的OpenVPN软件openvpn-2.3.11并放入到虚拟机的Linux文件中,从终端进入安装目录,并依次输入以下安装命令。
$ ./configure
在configure之后会因为缺少一些数据库出现各种报错信息,根据以下报错信息进行相应操作。
1.如果你没有安装OpenSSL,则会提示:
configure: error: ssl is required but missing
解决方法是执行命令:$ sudo apt-get install libssl-dev
2. 如果你没有安装lzo,则会提示:
configure: error: lzo enabled but missing
解决方法是执行命令:$ sudo apt-get install liblzo2-dev
3. 如果你没有安装PAM,则会提示:
configure: error: libpam required but missing
解决方法是执行命令:$ sudo apt-get install libpam0g-dev
$ make
$ make install
同样可以使用命令$ which opensll 可以查看OpenSSL的路径,命令$ openssl --version可以查看所安装的OpenSSL版本号。
2.3 虚拟机LINUX下OpenVPN
通过安装OpenSSL与OpenVPN我们已经完成了在Linux上搭建SSL-VPN虚拟网的准备工作,接下来我要在两安装好OpenSSL与OpenVPN的Linux上分别配置OpenVPN服务器和客户端进行连接测试。
3 OpenVPN的服务器与客户端配置
3.1 配置OpenVPN服务器
1 从安装目录下复制配置文件easy-rsa到/etc下cp -R /usr/local/openvpn/examples/easy-rsa /etc/openvpn/
2 修改var文件 :vim /etc/openvpn/easy-rsa/2.0/vars。其实也可以不修改,但是为了后续步骤能够一路enter,所以就先在这里修改下吧。主要是要修改末尾的几行。
export KEY_COUNTRY=" US"
export KEY_PROVINCE="CA"ls
export KEY_CITY=" SanFrancisco"
export KEY_ORG=" Fort-Funston"
export KEY_EMAIL="domain"
export KEY_EMAIL=mail@host.domain
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
“=”号后边就自己填入吧,我不知道大小写有没有影响,为了以防万一,还是按照它默认的格式来写吧。编辑完之后要记得保存。
3 设置环境变量
在ROOT下面建立隐藏文件的环境变量.bash_profile
Vi /root/.bash_profile
D=/root/Scripts/openvpn-2.0.9/easy-rsa
KEY_CONFIG=$D/opensslf服务器
KEY_DIR=$D/keys
KEY_SIZE=1024
KEY_COUNTRY=CN
KEY_PROVINCE=GD
KEY_CITY=DG
KEY_ORG="ld"
KEY_EMAIL="colin_xia@luckydragongroup"
export KEY_CONFIG KEY_DIR KEY_SIZE KEY_COUNTRY KEY_PROVINCE
KEY_CITY KEY_ORG KEY_EMAIL D
同时在控制台终端输入:上面的全部命令
通过 echo $D
echo $KEY_SIZE
查看环境变量是否生效
4 生产证书和密钥
在/etc/openvpn/easy-rsa/2.0目录中执行下面命令:
$ ./clean-al
$ ./build-ca
$ ./build-key-server server
$ ./build-key client
同时可以生产其他客户端证书
$ ./build-key client1
$ ./build-key client2
$ ./build-dh
生产ta.key
$ openvpn --genkey --secret ta.key
新产生的证书可以在/etc/openvpn/easy-rsa/2.0/keys/目录下到,将keys中的所有文件打包下载到本地提供给客户端。 ## ta.key 可能在上级目中,也要将其一起打包
$ cp -r /etc/openvpn/easy-rsa/2.0/keys /home/gaowd/
5 创建OpenVPN服务器配置文件
[root@xxx keys]# vim /usr/local/f
port 2000
port 2000
proto udp
dev tun
server 20.10.0.0 255.255.255.0 #虚拟IP
push "route 192.168.72.0 255.255.255.0" # 内网IP
ifconfig-pool-persist /usr/local/
ca /usr/local/etc/
cert /usr/local/etc/
key /usr/local/etc/keys/server.key
dh /usr/local/etc/keys/dh1024.pem
tls-auth /usr/local/etc/keys/ta.key 0
keepalive 10 120
comp-lzo
status /var/log/openvpn-status.log
verb 4
persist-key
persist-tun
dev tun
server 20.10.0.0 255.255.255.0 #虚拟IP
push "route 192.168.72.0 255.255.255.0" # 内网IP
ifconfig-pool-persist /usr/local/
ca /usr/local/etc/
cert /usr/local/etc/
key /usr/local/etc/keys/server.key
dh /usr/local/etc/keys/dh1024.pem
tls-auth /usr/local/etc/keys/ta.key 0
keepalive 10 120
comp-lzo
status /var/log/openvpn-status.log
verb 4
persist-key
persist-tun
##tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表
#虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。
##cp /usr/share/doc/openvpn/examples/f.gz /usr/local/etc
##f.gz 得到一个f 文件
7配置就绪后启动OpenVPN
[root@xxx keys]# openvpn --config /usr/local/f
[root@xxx keys]# openvpn --config /usr/local/f
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论