一、背景
原使用win2003配置的“路由和远程访问”VPN功能,采用PPTP协议连接(整体还是蛮稳定的),但人员在一些酒店、图书馆、美国网络 (comcas)等网络环境连接不了,查阅了PPTP的资料,连接不了原因可能需要防火墙限制或者ISP服务商不支持相关端口协议,因此急需部署可以穿透 防火墙或者限制的OPENVPN,以求解决两地网络资源交流。
二、配置环境
1. 网络平台
服务器单网卡:192.168.1.10,客户机:拨号上网连接
访问要求:客户端连接后,允许访问内网段:192.168.1.0的资源。 2. 软件平台
服务器:WIN SERVER2008 & openvpn-2.2.0-install.exe 下载地址: http://down.51cto.com/data/435328
客户端:WIN7 bit64 英文版或者XP & openvpn-2.2.3-install.exe下载地址 http://down.51cto.com/data/432452
三、安装与配置
第一步:安装openvpn
这一部分是服务端跟客户端都要做的工作,操作完全相同。
双击安装,点击NEXT,I Agree,NEXT之后开始选择安装路径,我手动修改为C:\\Program Files\\OpenVPN ,点击 Install 开始安装,安装过程中,弹出硬件安装窗口,点击安装虚拟网卡。点击 next,Finish 完成安装。
第二步: VPN服务端配置
说明:架设OPENVPN服务器,服务器方面做的工作比较多,客户端相对来说就比较简单。 服务器采用RSA证书和密钥验证方式对客户端进行验证,默认情况下证书和用户是一对一的,多个用户使不能使用同一证书。所以首先要做的工作就是证书的制作。 在进行操作之前,首先进行初始化工作:
(1) 进入C:\\Program Files\\OPENVPN\\easy-rsa\\复制 “vars.bat.sample”文件并用记事本打开另存命名为“vars.bat” 一定要使其变为“.bat”批处理文件格式(开始我在这载了跟头,因为WIN2008用记事本打开另存为时,我没有选择保存类型为“所以文件”)。
用记事本打开新建的“vars.bat”文件,修改以下部分(根据自身情况改,也可以不修改) set HOME=%ProgramFiles%\\OpenVPN\\easy-rsa set KEY_COUNTRY=US set KEY_PROVINCE=CA set KEY_CITY=SanFrancisco set KEY_ORG=FortFunston
set KEY_EMAIL=mail@domain.com 改为:
set HOME=C:\\Program Files\\OPENVPN\\easy-rsa set KEY_COUNTRY=CN #(国家) set KEY_PROVINCE=JS #(省份)
set KEY_CITY=SZ #(城市)
set KEY_ORG=163.com #(组织)
set KEY_EMAIL=mgjglg@163.com #(邮件地址) 上面#开始的是注释,请不要写到文件中。 打开命令提示符:
开始-->运行...-->键入cmd,回车,进入命令提示符 或者 开始-->程序-->附件-->命令提示符
(2) 进入C:\\Program Files\\openvpn\\easy-rsa目录下: 命令如下:
cd C:\\Program Files\\openvpn\\easy-rsa init-config #初始化
vars #使修改的变量生效 clean-all #清空KEYS/目录文件
上面是初始化工作,以后,在进行证书制作工作时,仍旧需要进行初始化,但只需要进入openvpn\\easy-rsa目录,运行vars就可以了,不需要上面那些步骤了。
(3) 下面开始证书的制作(一步步来):
说明:出现Common Name (eg, your name or your server's hostname)时输入的名字不要重复,其它可以随意填写(包括提示的密码)。以下生成的密钥均存放在C:\\Program Files\\openvpn\\easy\\rsa\\keys目录下。
1. build-ca #生成Root CA证书,用于签发Server和Client证书,需保护好keys/ca.key文件。
出现Organizational Unit Name (eg, section) []:输入neupharma 出现“Common Name (eg, your name or your server's hostname) []:输入neupharma 别的默认直接回车就可以。
2. build-dh #生成 Diffie Hellman加密参数 得到dh1024.pem文件 3. openvpn --genkey --secret keys/ta.key #生成ta.key文件 4. build-key-server server #生成服务器证书
出现Organizational Unit Name (eg, section) []:输入neupharma 出现Organizational Unit Name (eg, section) []:输入neupharma
出现“Common Name (eg, your name or your server's hostname) []:输入server 出现:“Certificate is to be certified until Aug 17 08:30:49 2017 GMT (3650 days) Sign the certificate? [y/n]:选 y(一共有两次,别的不用管回车就可以) 5. build-key client1 #生成要颁发给客户端的证书
出现:“Common Name (eg, your name or your server's hostname) []:输入client1 出现:“Certificate is to be certified until Aug 17 08:33:36 2017 GMT (3650 days) Sign the certificate? [y/n]:选 y(一共有两次,别的不用管回车就可以)
若还有其它客户端,继续执行命令build-key 名字(“名字”不要重复)
(4) 服务器端的SERVER配置文件
在C:\\Program Files\\OpenVPN\\sample-config文件夹下:
www.purante.com
我的server.ovpn启用的配置条目如下,其它默认:
port 1194 #申明使用的端口,默认1194
proto udp #申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议 dev tap #申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议,win下必须设为tap tun是ip层的点对点协议
ca ca.crt #OpenVPN使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法 cert server.csrt #Server使用的证书文件
key server.key #Server使用的证书对应的key,注意文件的权限,防止被盗 dh dh1024.pem
server 10.8.0.0 255.255.255.0 #指定OpenVPN服务器产生的虚拟ip 和 子网掩码 ifconfig-pool-persist ipp.txt
push \"route 10.8.0.0 255.255.255.0\" #客户连接成功后自动加入路由信息到客户机中,使其能访问相应网段的机子
push \"route 192.168.1.0 255.255.255.0\" #客户连接成功后自动加入路由信息到客户机中,使其能访问相应网段的机子
push \"dhcp-option DNS 8.8.8.8\" #向客户端发送DNS
client-to-client #如果可以让VPN Client之间相互访问直接通过openvpn程序转发, 不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率 keepalive 10 120
tls-auth ta.key 0 #This file is secret comp-lzo
max-clients 10 user nobody group nobody persist-key persist-tun
status openvpn-status.log verb 3
把配置文件server.ovpn复制到C:\\Program Files\\OpenVPN\\config目录下,把C:\\Program Files\\OpenVPN\\easy-rsa\\keys目录下的ca.crt、ca.key、Server.crt、Server.csr、 Server.key、dh1024.pem、ta.key 复制到C:\\Program Files\\OpenVPN\\config目录下,到此server端的配置完成,可以启动server了,如果需要服务器启动后自动运行,修改“控制面 板”下面的“管理工具”下面的“服务”把OpenVPN设置成自动启动。打开桌面的图标,并右击任务栏右下角产生图标,点击connect进行连接。表示启动,表示连接中,表示连接成功。
第三步: VPN客户端配置
客户端的配置文件也在C:\\Program Files\\OpenVPN\\sample-config目录 我的client.ovpn启用的配置条目如下,其它默认:
Client
dev tap
proto udp # 使用的通讯协议,与Server严格一致
remote 58.30.12.*** 2011 #此处为OPENVPN的外网IP亦可是域名地址, OPENVPN服务器的
www.purante.com
本地地址:192.168.1.10和端口号:2011需在路由器里做映射
remote-random # 随机选择一个Server连接,否则按照顺序从上到下依次连接 resolv-retry infinite nobind
user nobody group nobody persist-key persist-tun ca ca.crt
cert xxx.crt #xxx在服务器产生的相应客户端密钥文件名 如:上头产生的client1 key xxx.key # xxx在服务器产生的相应客户端密钥文件名如:上头产生的client1 ns-cert-type server tls-auth ta.key 1 comp-lzo verb 3
把配置文件client.ovpn复制到客户端机器的C:\\Program Files\\OpenVPN\\config目录下,并且把服务器C:\\Program Files\\OpenVPN\\easy-rsa\\keys目录下的CdtsmClient.crt、CdtsmClient.csr、 CdtsmClient.key、ca.key、ca.crt、ta.key 文件一起复制到客户端机器的C:\\Program
Files\\OpenVPN\\config 目录下(以上文件由服务器端生成,客户端需要向服务器端索取这七个文件)
三、重要提示
为了使客户端连接后能访问内网的资源,必须把server2008操作系统的网卡“共享” 如图共享设置及结果
(在此我载了跟头,花了1天时才测试出来,我想使用WINDOWS的“路由及远程访问”进行NAT转换也应该可以实现内容访问)。
四、吊销客户端证书
当客户端证书被盗或丢失时,必须吊销它的证书,以保障安全。 运行CMD,执行命令
cd C:\\Program Files\\openvpn\\easy-rsa vars
revoke-full client1 (client1 为证书名)
注销完成后,client1 用户的证书吊销,该证书将无法再登录VPN。 成功注销某个证书之后,
www.purante.com
可以打开 keys/index.txt 文件,可以看到被注销的证书前面, 已标记为R。
五、总结
连接成功后,想要访问内网资源,要有以下条件:
1. PING得通,如根据我配置的openvpn服务器的虚拟地址10.8.0.1。 2. Openvpn配置文件中要有
push \"route 10.8.0.0 255.255.255.0\" push \"route 192.168.1.0 255.255.255.0\" 等等想允许客户端访问的网段。
3. 服务器对外的本地连接要进行共享设置。
4. Win7客户端成功连接后,能ping通openvpn的服务器地址(10.8.0.1),但
不能访问其它内网资源,查看产生的连接日志,有route加载error提示,是因为win7系统下运行route.exe要系统管理员权限。因此,不能自动加载路由(192.168.1.0),我们第一次使用时需要手动操作以下两步,以后就可以直接访问了。
第一步:以“run as administrator”方法运行cmd ,如下图:
www.purante.com
第二步:输入 route -p add 192.168.1.0 mask 255.255.255.0 10.8.0.1 回车就可以了
因篇幅问题不能全部显示,请点此查看更多更全内容