Posts Tagged ‘VPN’

CMD下建立VPN

Posted in 搬家之前 on 2月 5th, 2009 by 飘(piao2010) – Be the first to comment

CMD下建立VPN

1.前提

服务里 windows防火墙停止(或者麻烦点可以把router协议,端口1723配进去)

远程注册表服务必须开启

server服务必须开启

router路由服务必须开启

两块以上网卡的win2000做vpn很方便,添加nat协议后,客户端拨入,能够使用远程网络连接internet。 使得部分客户端可提高网络速度,并达到代理的作用。

一块网卡的winxp,win2003做类似的vpn仍然很方便,nat协议添加后,再添加两个接口,一个是本地连接,一个是内部,设置本地连接为全转发,内部为私有模式,既可让有权限的用户拨入。

一块网卡的win2000,做类似的vpn就不方便了,nat协议添加后,再添加接口,只可以添加上本地连接,内部不容许图形界面的添加,察看了netsh dump >c:\\1.txt后,尝试在netsh命令添加内部接口,通过。 命令为:netsh routing ip nat add interface 内部 private

下面是部分常用命令:

netsh ras set user username permit //设置用户授权,该用户不能为tsinternetuser support_388945a0等。

netsh ras ip set addrassign pool //设置静态地址池模式

netsh ras ip add range 10.0.0.1 10.0.0.100 // 设置静态池范围 ,要用标准的局域网地址,避免将来在访问internet时候地址转发错误。

netsh routing ip nat install //添加nat协议

netsh routing ip nat add interface 本地连接 full //添加nat接口本地连接全转发

netsh routing ip nat add interface 内部 private //添加nat借口内部私有模式

igmp同样可以在netsh配置,命令行很长:

netsh routing ip igmp install

netsh routing ip igmp add interface 内部 igmpprototype=IGMPRTRV2 ifenabled=enable robustvar=2 startupquerycount=2 startupqueryinterval=31 genqueryinterval=125 genqueryresptime=10 lastmemquerycount=2 lastmemqueryinterval=1000 accnonrtralertpkts=YES

netsh routing ip igmp add interface name=”本地连接” igmpprototype=IGMPPROXY ifenabled=enable

如果配置前已经有接口,就要先删除:

netsh routing ip igmp delete interface 内部 //与此类似

路由和远程访问服务会在系统、安全日记中记录不少信息,比如ipsec、登陆信息。

修改一下注册表可以避免:

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RasMan\\Parameters

ProhibitIPsec”=dword:00000001

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RemoteAccess\\Parameters

LoggingFlags”=dword:00000000

现在除了登陆信息,ipsec,remoteaccess警告,已经不记录。

—————————————-

还有值得一提的是建立好地vpn,通常使用的都是pptp协议,tcp1723端口,如果我们在网卡的ip策略添加了tcp1723的容许条目,基本上可以拨入。为什么是基本呢,因为pptp除了 tcp1723外还有一个ip47号协议,不同于tcp不同于udp,此协议对于认证很重要。如果网络上的防火墙割断的话,会出现拨号->用户认证 ->不通过认证断开的问题。

在配置vpn的时候,还需要remoteregister服务的支持,建立好以后可以关掉。

workstation , server,rpc同样在配置时候需要。

—————————————-

经测试,全命令行的建立vpn后,rrasmgmt.msc不出现具体配置信息。也就是说只有看网络连接文件夹,才能看出来一个拨入的连接

OPENVPN

Posted in FreeBSD, 搬家之前 on 1月 24th, 2009 by 飘(piao2010) – Be the first to comment

OpenVPN使用TLS加密是通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Public key,另一个是Private key)对数据进行加密的,对于TLS传输的工作原理,大家可以去Google一下,资料一大堆。对于OpenVPN使用TLS mode,首先Server和Client要有相同CA签发的证书,双方通过交换证书验证双方的合法性以决定是否建立VPN连接,然后使用对方CA把自己目前使用的数据加密方法(类似于密钥)加密后发送给对方,由于使用对方CA加密的,所以只有对方CA对应的Private key才能解密该字串,保证了此密钥的安全性,并且此密钥定期改变,对于窃听者来说,可能还没有破解出密钥,通信双方已经更换密钥了。
OpenVPN的NAT穿透力特强,支持HTTP代理,对动态地址支持很好,可配置性强,配置安全,开源便于二次开发…其他没有想好:)。关于OpenVPN的相关内容可以在http://openvpn.net上找到。

首选到ports里面安装OpenVPN

代码:
cd /usr/ports/security/openvpn

make install clean

安装完毕,开始进行配置

代码:
cd /usr/local/share/doc/openvpn/easy-rsa

默认的vars文件在FreeBSD下是用不了的,不要运行它,直接在csh下面执行以下格式的语句.

代码:
setenv D `pwd`

setenv KEY_CONFIG /usr/local/share/doc/openvpn/easy-rsa/openssl.cnf

setenv KEY_DIR /usr/local/etc/openvpn/keys

setenv KEY_SIZE 1024

setenv KEY_COUNTRY CN

setenv KEY_PROVINCE ZJ

setenv KEY_CITY HANZHOU

setenv KEY_ORG “hacker-piao’s VPN”

setenv KEY_EMAIL “hacker-piao@163.com

 

建立openvpn的配置文件目录

代码:
mkdir /usr/local/etc/openvpn

 

现在来生成根证书

初始化keys目录生产根证书以及key

代码:
./clean-all

./build-ca

 

这时会有一堆东西跑出来

引用:
Generating a 1024 bit RSA private key

…………++++++

………..++++++

writing new private key to ‘ca.key’

—–

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

跟着就提示你输入国家/省份/城市等信息,不用管它,都是默认,只有

Common Name (eg, your name or your server’s hostname) []:

这个要设置,可以设置成你的主机名或者你的组织名什么的,例如 YEKE-VPN

 

生成服务器使用的证书.

代码:
./build-key-server server

跟刚才的步骤一样,Common Name这个填写server,

代码:
Sign the certificate? [y/n]:

1 out of 1 certificate requests certified, commit? [y/n]

上面这两项填写y,其他的全部默认.

 

生成客户端使用的证书

代码:
./build-key client1

./build-key client2

….

 

你可以为各个客户端生成各自的证书.

接着生成dh1024.pem

代码:
./build-dh

 

 

证书生成完毕,现在开始设置配置文件.

先复制配置文件到配置文件目录里面

代码:
cp /usr/local/share/doc/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn

代码:
cp /usr/local/share/doc/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn/openvpn.conf

 

编辑配置文件server.conf和openvpn.conf,这里只说明一下需要修改的地方,其他的不另解析.

port 1194

这是openvpn监听的端口,如果你认为默认端口不安全,可以改成你想要的端口,跟客户端配置文件要一致

 

;proto tcp

proto udp

使用什么方式的连接,默认是udp

 

;dev tap

dev tun

这是网络设置选项,一般来说,官方推荐使用tun接口,如果你要使用桥接,则需要改成tap接口

 

ca /usr/local/etc/openvpn/keys/ca.crt

cert /usr/local/etc/openvpn/keys/server.crt

key /usr/local/etc/openvpn/keys/server.key

这三个是设置证书具体路径,填写绝对路径.

 

dh /usr/local/etc/openvpn/keys/dh1024.pem

同上

 

server 10.8.0.0 255.255.255.0

这个选项是设置VPN控制的子网,10.*.*.*属于内部网络的IP地址,像192.168.*.*那样,适合做VPN,一般来说,一个/24网段足够VPN使用的了,如果你用数百个人同时连接VPN的话你可能需要更多IP地址,可以改成

server 10.8.0.0 255.255.0.0

 

;client-to-client

这个选项是设置客户端之间可以相互通信的

 

duplicate-cn

这个是设置同一个客户证书可以同时多个连接

 

配置完毕,差最后一步就可以启动OpenVPN了.现在要编译一下它的启动脚本

代码:
ee /usr/local/etc/rc.d/openvpn

找到下面选项

代码:
openvpn_enable

加入到/etc/rc.conf

代码:
openvpn_enable=”YES”

 

服务端配置完毕,启动OpenVPN

/usr/local/etc/rc.d/openvpn start

启动成功的话一般会看到

Starting openvpn.

add net 10.8.0.0: gateway 10.8.0.2

 

有一个更复杂实例参见http://bbs.chinaunix.net/thread-830695-1-1.html

附:修改Windows的VPN默认端口的方法

 通过修改注册表达到自定义端口的目的:首先在服务端注册表里面找到这个项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}],这个项里面设置的是和网络适配器有关的键值,这个项下面可以看到诸如0000、0001、0002等命名的分支,这些分支设置的是各个接口的信息,然后我们找到里面含有字符串DriverDesc并且数值是WAN 微型端口 (PPTP)的那个分支,这个分支可能是上述0000、0001、0002等命名分支中的一个,我们继续找到该分支下面的TcpPortNumber键,可以看到它默认的十进制值为1723,这个1723就是VPN服务所开的默认端口号,我们把它修改为其他任意端口号即可。

    通过上面的设置,我们重启服务器后在服务端CMD下输入netstat -an会发现这时VPN服务器已经开始侦听我们修改以后的端口号了,说明服务端已经成功更换了默认的端口号1723。

    接下来是客户端的设置。VPN服务修改端口号和终端服务修改3389端口号不同,后者只需服务端修改后客户端直接在目标IP后面加冒号加端口号就能连接。通过实验发现,VPN的客户端电脑同样需要做上述在服务端上面的注册表键值修改操作才能连接服务端,并且修改后客户端系统自带的防火墙还必须关闭才能成功连接(仅开放该端口还不行),否则就要提示错误691:不能建立到远程计算机的连接,因此用于此连接的端口已关闭。而使用默认的1723就不需要防火墙的端口开放。

    总结:采用Windows Server自带的路由和远程访问(RRAS)构建的VPN服务器要修改默认端口号,必须服务器和客户端同时修改注册表中TcpPortNumber的键值;客户端除了修改注册表,还必须关闭系统自带的防火墙。