由于Windows2008 web版没有提供vpn服务角色,其他版本的windows自带的vpn服务器改端口麻烦而且它只支持tcp连接,所以如果碰到VPN要用指定端口连接,或者想 用win做linux的vpn服务器的话,openvpn是个不错的选择。测试安装,资料来源于互联网整理
1. 服务端
环境:win2008 web +openvpn2.1.4
(1)安装openvpn,最好默认安装,否则后面配置时注意路径。
(2)到安装目录下的easy-rsa文件夹下,用文本编辑器打开vars.bat.sample文件,根据需要修改最后几行(其实也可以不改,就是为了 配置过程中输入的东西少点):
set KEY_COUNTRY=CN
set KEY_PROVINCE=HN
set KEY_CITY=LY
set KEY_ORG=ET
set KEY_EMAIL=a@b.com
(3)鼠标点开始-运行,输入cmd 回车进入命令行窗口
cd C:\Program Files\OpenVPN\easy-rsa 进入到安装目录下的easy-rsa文件夹,分别执行下面三个命令:
init-config
vars
clean-all
上面是初始化工作,以后,在进行证书制作工作时,仍旧需要进行初始化,但只需要进入openvpn\easy-rsa目录,运行vars就 可以了,不需要上面那些步骤了。
(4)生成根证书,分别执行命令:
build-ca
build-dh
(5)生成服务端密钥:
build-key-server server
(6)生成客户端密钥
build-key client1
build-key client2 可以继续配置第二个VPN客户端密钥
以上三步执行过程中需要输入一些参数,大部分只需按要求输入即可,[ 中括号 ]内提示默认值,不改直接回车即可。
其中一些是需要注意的:
common name,出现三次,据说要求每次输入的都不一样,至于都一样行不行我没试,那就随便输入三个不一样的参数。
A challenge password []: An optional company name []: 这两个都可以留空
将生成的keys文件夹内的ca.crt, dh1024.pem, server.crt, server.key, ca.key复制到 OpenVPN\config目录下
(7)配置文件
port 443
proto tcp//#申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
dev tap
//下面四项注意路径,如果不是放在config目录下请用绝对路径
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 192.168.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push “route 0.0.0.0 0.0.0.0″
push “redirect-gateway def1 bypass-dhcp”
push “dhcp-option DNS 192.168.175.5″ //这个根据实际自行修改,随后说明如何获得
keepalive 20 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
要配置的大概就是这些,将配置文件另存为 server.ovpn 文件,并保存到openvpn\config目录下即可。如果需要通过服务器端连接外网,还需配置 win2008自带的vpn服务器,在nat/防火墙那里把本地连接接口添加进去。
(8) 右键点击 server.ovpn 文件名选择Start OpenVPN on this config file即可启动 , 或者通过 OpenVPN GUI 的控制启动 VPN
DNS提示
说明: 有些 domain 被封掉了, 这时, 如果要访问这些网站, 应该将 server 上的 dns push 到 client.
开始→运行→输入“cmd”→打开命令提示符界面→输入“nslookup”,其中Address就是DNS服务器的IP地址。
* LINUX下可以在 /etc/resolv.conf 中找到:
在使用OpenVPN时,有的时候需要使用VPN的DNS,有的时候却需要使用本地网络的DNS。OpenVPN可以在配置中支持DNS设置,如果是server来配置客户端DNS, 需要在配置文件中加入:
push “dhcp-option DNS 208.67.222.222″
push “dhcp-option DNS 208.67.220.220″
如果是在客户端配置,需要在配置文件设置:
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
DNS的IP地址要根据实际情况设定。
如果是希望使用本地的默认DNS,要确认在配置文件中把DNS的配置注释掉。
;push “dhcp-option DNS 208.67.222.222″
;push “dhcp-option DNS 208.67.220.220″
如果需要在多种情况下切换,可以在客户端创建多个openvpn配置文件,在连接时选择需要的配置即可。
2.客户端
客户端安装openvpn后,只需把服务端生成的ca.crt client1.crt client1.key三个文件拷到openvpn\config目录下,再建一个配置文件 client.ovpn 即可。
配置文件内容:
client
dev tap
proto tcp
remote 10.1.x.x 443//服务器ip 端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
然后右键点击 client.ovpn 文件名选择Start OpenVPN on this config file即可启动, 或者通过 OpenVPN GUI 的控制启动 VPN
小技巧:
让openvpn随系统自启:编个批处理,写入以下代码:
net start openvpnservice
openvpn-gui-1.0.3 –connect client1.ovpn
pause
其中:
net start openvpnservice 是启动openvpn的系统服务。
openvpn-gui-1.0.3 –connect client.ovpn是用命令行方式连接openvpn,这里要注意路径问题:一是openvpn-gui-1.0.3,这个文件在 OpenVPN\bin目录下,如果出现不是有效命令,请在系统环境变量里把“C:\Program Files\OpenVPN\bin”添加进去;二是client.ovpn配置文件的路径,如果配置文件不是在config根目录,请用绝对路径。
到此OpenVPN虽然配置完成,可以成功组成虚拟个人网,客户端(192.168.10.2)和服务器(192.168.10.1)可以ping通。但客户端还不能通过服务器代理访问外网。为了达到这个目的现需要在服务器端开启NAT服务。
具体步骤如下:
1. 启动Routing And Remote Access服务(必须)
停止系统防火墙服务,或添加vpn端口443例外到防火墙规则
如果需要用到局域网
启动Server ,Workstation ,TCP/IP NetBIOS Helper服务(以上3个服务基本上默认已经启动)
2. 修改注册表
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter= 1
重启
3.进入命令行(*如果没有routing这个模块,看稍后提取文件)
netsh
routing ip nat
install
add interface name="本地连接 2" mode=full //服务器上用于上外网的连接
add interface name="本地连接 3" mode=private //安装OpenVPN时生成的虚拟连接
add interface name="内部" mode=private
以上步骤实现后,则VPN+NAT配置成功。可拨入主机,并可通过主机代理出去访问主机所在的资源。如同处在主机带的局域网中。
注意:最后三行中的"本地连接 2"、"本地连接 3"和“内部”是在“网络连接”中显示的名字,“本地连接”一般都能看到,而“内部”只有在有vpn client连接的时候才能看到。一般来说,“内部”这个名字是不用改的,“本地连接 2”、“本地连接 3”请根据自己机器的具体情况修改。
至此,配置完毕,如果不能拨号,重启后即可
提取文件:Windows Vista/7 windows2008中netsh没有routing这个模块
Vista可以提取Windows xp或Windows Server 2003中%systemdrive%windows/system32/下的ippromon.dll和ipmontr.dll文件到Vista/7下的Windows/system32目录下
Win7必须提取Windows Server 2008 R2 中的以上文件到以上目录
然后cmd运行以下命名
netsh
delete helper ipmontr.dll
delete helper ippromon.dll
add helper ipmontr.dll
add helper ippromon.dll
然后再执行上面的第3步即可
如果外网vpn连接后不能上网,请点击vpn连接属性,去掉“使用远端网关和dns”