一、OpenVPN是一款功能强大,可跨平台(支持Win 2000/XP/2003, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, 和 OpenBSD)使用的SSL VPNserver软件(详细说明见官方主页官方主页http://openvpn.net)。
下载地址:http://openvpn.net/index.php/download.html
二、安装与配置
第一步:安装openvpn这一部分是服务端跟client都要做的工作,操作全然同样双击 openvpn-2.2.2-install.exe进行安装,点击NEXT,I Agree,NEXT之后開始选择安装路径,建议按默认路径C:\Program Files\OpenVPN安装(以免后面生成证书麻烦) 。点击 Install 開始安装,安装过程中,弹出硬件安装窗体,点击仍然继续,安装虚拟网卡。点击 next,Finish 完毕安装。
第二步: VPNserver配置:
说明:架设OPENVPNserver,server方面做的工作比較多,client相对来说就比較简单。
server採用RSA证书和密钥验证方式对client进行验证,默认情况下证书和用户是一对一的,多个用户使用同一证书会被踢出。所以首先要做的工作就是证书的制作。
在进行操作之前,首先进行初始化工作:
(1)改动C:\Program Files\OPENVPN\easy-rsa\vars.bat.sample的下面部分
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=FortFunston
set [email protected]
请依据自身情况改动,也能够不改动!以下是解释
set HOME=C:\Program Files\OPENVPN\easy-rsa
set KEY_COUNTRY=CN #(国家)
set KEY_PROVINCE=GuangDong #(省份)
set KEY_CITY=ShenZhen #(城市)
set KEY_ORG=oovc.com #(组织)
set [email protected] #(邮件地址)
文件里以#開始的是凝视,请不要写到文件里。
打开命令提示符:
開始-->执行...-->键入cmd,回车,进入命令提示符
或者 開始-->程序-->附件-->命令提示符
进入C:\Program Files\openvpn\easy-rsa文件夹下:
命令例如以下:
(1)cd C:\Program Files\openvpn\easy-rsa
init-config
vars
clean-all
上面是初始化工作,以后,在进行证书制作工作时,仍旧须要进行初始化,但仅仅须要进入openvpn\easy-rsa文件夹,执行vars就能够了,不须要上面那些步骤了。
(2)以下開始证书的制作:
生成根证书:(请输入红字部分)
build-ca
Common Name (eg, your name or your server‘s hostname) [changeme]:OpenVPN-CA
Name [changeme]:
build-dh
生成服务端密钥:
build-key-server server
以下贴出须要交互的部分,其它地方默认。
Common Name (eg, your name or your server‘s hostname) [changeme]:server
Name [changeme]:
The Subject‘s Distinguished Name is as follows
countryName :PRINTABLE:‘US‘
stateOrProvinceName :PRINTABLE:‘CA‘
localityName :PRINTABLE:‘SanFrancisco‘
organizationName :PRINTABLE:‘OpenVPN‘
organizationalUnitName:PRINTABLE:‘changeme‘
commonName :PRINTABLE:‘server‘
name :PRINTABLE:‘changeme‘
emailAddress :IA5STRING:‘[email protected]‘
Certificate is to be certified until Aug 19 11:12:06 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
生成client密钥
build-key client
Common Name (eg, your name or your server‘s hostname) [changeme]:client
Name [changeme]:
The Subject‘s Distinguished Name is as follows
countryName :PRINTABLE:‘US‘
stateOrProvinceName :PRINTABLE:‘CA‘
localityName :PRINTABLE:‘SanFrancisco‘
organizationName :PRINTABLE:‘OpenVPN‘
organizationalUnitName:PRINTABLE:‘changeme‘
commonName :PRINTABLE:‘11111111‘
name :PRINTABLE:‘changeme‘
emailAddress :IA5STRING:‘[email protected]‘
Certificate is to be certified until Aug 19 11:24:35 2022 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
build-key client2 //能够继续配置第二个VPN客户端密钥
//生成的密钥存放于C:\Program Files\openvpn\easy\rsa\keys文件夹下
接下来開始配置server和client:
(3)将生成的ca.crt,dh1024.pem,server.crt,server.key拷贝到C:\Program Files\OpenVPN\config文件夹下,这四个文件是VPN服务端执行所须要的文件。
(4)ca.crt,client.crt,client.key这三个是VPN客户端所须要的文件,拷贝到客户端机器的C:\Program Files\OpenVPN\config文件夹下
(5)在C:\Program Files\OpenVPN\config文件夹下创建服务端配置文件server.ovpn:
服务器端配置文件演示样例:(server.ovpn)
local 192.168.3.1 //openvpn服务端网卡的IP,也能够不写
port 443 //服务端端口号,依据须要自行改动,假设是用http代理连接请不要改动
proto tcp //通过tcp协议连接
dev tap //路由模式windows下必须设为tap
ca ca.crt //ca证书存放位置我放在了当前文件夹以下也能够用(ca "C:\\Program Files\\OPENVPN\\config\\ca.crt")
cert server.crt //服务器证书存放位置,请依据实际情况自行改动
key server.key //服务器密钥存放位置,请依据实际情况自行改动
dh dh1024.pem //dh1024.pem存放位置,请依据实际情况自行改动
server 172.16.0.0 255.255.255.0 //虚拟局域网网段设置,请依据须要自行改动,不支持和拔号网卡位于同一网段
ifconfig-pool-persist ipp.txt //在openvpn重新启动时,再次连接的client将依旧被分配和曾经一样的IP地址
push "route 0.0.0.0 0.0.0.0" //表示client通过VPN SERVER上网
push "redirect-gateway def1 bypass-dhcp" //使client全部网络通信通过vpn
push "dhcp-option DNS 208.67.222.222" //DNS配置,依据实际情况配置
push "dhcp-option DNS 208.67.220.220" //DNS配置,依据实际情况配置
client-to-client //使客户端能相互訪问
duplicate-cn //这条经常使用于測试用途,凝视该条可实现限制一个证书在同一时刻仅仅能有一个client接入
keepalive 10 120
;cipher BF-CBC # Blowfish (default) //选择一种加密算法与client保持一致
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo //同意数据压缩与client保持一致
;max-clients 100 //最大客户端并发连接数量
;user nobody //定义执行openvpn的用户用于用户认证能够不採用用户认证
;group nobody
persist-key //通过keepalive检測超时后,又一次启动VPN,不又一次读取keys,保留第一次使用的keys
persist-tap //通过keepalive检測超时后,又一次启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
status openvpn-status.log //定期把openvpn的一些状态信息写到文件里,以便自己敲代码计费或者进行其它操作
verb 3 //设置日志记录冗长级别
mute 20 //反复日志记录限额
(6)客户端设置:在客户端安装完毕之后,须要将 ca.crt client.crt client.key 这三个文件复制到C:\Program Files\openvpn\config文件夹下,这三个文件由服务端生成,所以,连接谁的server,就须要跟谁索取这三个文件。
然后,编辑一个 client.ovpn的配置文件存放到C:\Program Files\openvpn\config文件夹下,客户端就能够进行连接了。
客户端文件演示样例:(client.ovpn)
client //定义是一个客户端
dev tap //路由模式windows下必须设为tap,与服务端保持一致
proto tcp //通过tcp协议连接,与服务端保持一致
remote 192.168.223.1 443 //指定服务端IP地址和port,能够用多行指定多台server,实现负载均衡(从上往下尝试)
;remote-random //若上面配置了多台server,让client随机连接
resolv-retry infinite //解析server域名
nobind //client不须要绑定port
;user nobody //安全设置。注意:Windows不能设置
;group nobody
persist-key
persist-tun
;http-proxy-retry //代理连接错误时重试
;http-proxy [proxy server] [proxy port] //若client通过HTTP Proxy设置,Proxy不能使用UDP为VPN的通讯协议
mute-replay-warnings //无线网络常常会产生非常多反复的数据包。将此标志设置为反复的数据包关闭警告。
ca “C:\\Program Files\\OpenVPN\\config\\ca.crt” //证书位置依据实际情况加入
cert “C:\\Program Files\\OpenVPN\\config\\client.crt” //证书位置依据实际情况加入
key “C:\\Program Files\\OpenVPN\\config\\client.key” //证书位置更加实际情况加入
comp-lzo //使用lzo压缩,与服务端一致
verb 3
;mute 20
上面的配置拔号成功后,VPN SERVER的IP:172.16.0.1,VPN client的IP:172.16.0.2。ping 172.16.0.1 //相互之间应能ping通
三、openvpnclient通过服务端訪问网络
(1)设置VPN SERVER上的”internet连接共享“来实现clinet通过VPN SERVER上网:(须要两块网卡)
(2)单网卡分类例如以下:
1. 打开 Routing and remote access服务
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter= 1 重新启动
2 netsh
routing ip nat
install
add interface name="本地连接 2" mode=full //server上用于上外网的连接
add interface name="本地连接 3" mode=private //安装OpenVPN时生成的虚拟连接
add interface name="内部" mode=private
输入show interface命令后显示:
NAT 内部 配置
---------------------------
模式 : 专用接口
NAT 本地连接 2 配置
---------------------------
模式 : 地址和port转换
NAT 本地连接 3 配置
---------------------------
模式 : 专用接口
即表示NAT配置成功,重新启动。
以上步骤实现后,则VPN+NAT配置成功。可拨入主机,并可通过主机代理出去訪问主机所在的资源。如同处在主机带的局域网中。
WindowsXP Pro下单网卡实现VPN+NAT代理server
Step 1
按Win+R 输入并执行services.msc,在服务里面寻找Routing and Remote Access,右键单击进入属性,将启动类型更改为自己主动,并点击启动button。
Step 2
打开网上邻居,在左側网络任务里面点击"查看网络连接",能够看到"传入"字样,这表示Step1操作成功.单击右键打开"传入的连接"的属性,在"常规"标签中虚拟专用网中钩选"同意他人通过internet...",在"用户"标签中同意的连接的用户钩选对应用户,确定退出。至此,VPN配置完成。
Step 3
按Win+R 输入并执行netsh,继续输入routing并回车,继续输入ip并回车,继续输入nat并回车,继续输入install并回车。然后输入add interface name="内部" mode=private并回车,输入add interface "本地连接" full并回车。输入show interface并回车,假设出现
NAT 内部 配置
---------------------------
模式 : 专用接口
NAT 本地连接 配置
---------------------------
模式 : 地址和port转换
即表示NAT配置成功。
windows Vista单网卡VPN server+NAT配置成功
Windows XP和2003都能做NAT,差别在于2003有GUI配置界面,而XP仅仅能通过字符界面来配置,也就是用netsh routing。可是Vista和win7默认在netsh命令控制台中没有routing接口,需从服务版操作系统中复制ipmontr.dll和ippromon.dll这2个文件到system32目录中,Vista与windows server 2008 相相应(windows server 2003好像也能用) ,win7与windows
server 2008 R2相相应(2008R2没有32位版,能够用GNS3模拟一个路由器然后一个口连本地物理网卡一个口连openv虚拟出来的网卡,然后再模拟的路由器上做NAT和路由配置就能够绕过netsh routing的配置了,实际測试好像经过模拟设备速度变慢了),复制相应的server操作系统文件ipmontr.dll和ippromon.dll就可以(server仅仅有在脚色配置中配置启动了路由和路由远程控制脚色才会有这两个文件)我从2003的安装镜像里面找到两个文件。add
helper ippromon.dll 的时候提示错误,先 delete helper ipmontr.dll, delete helper ippromon.dll,然后再add helper就成功了。
加完这两个文件,就能看到netsh里有routing了,然后就能照着XP以下的配置方法来配置了。