一、问题的提出
如图1所示,在单位有个私有地址为192.168.0.0的网络,各电脑是通过ADSL共享方式接入Internet,在家中有台电脑也通过ADSL访问Internet,现在想在家中随时安全地访问单位192.168.0.2这台机器,实现方法很多,最为安全的是通过VPN。
二、什么是VPN
以本例来说就是现在单位192.168.0.2这台机器上设置好VPN服务,在家中通过VPN客户端访问单位这台机器,建立连接后,这两台机器通信时就像在局域网中一样,比如:要在192.168.1.10这台电脑中下载192.168.0.2这台机器的文件(假设该机已设好FTP服务),可以直接在浏览器中键入:ftp://192.168.0.2下载文件了。虽然是通过Internet进行通信,但整个过程都是加密的,就像是在Internet中穿了一条只有两台机器才能通过的隧道,这就是VPN( Virtual Private Networks )虚拟专用网。
图1
三、优点
通过VPN最大的优点就是安全。这点将在后面介绍到。
四、设置VPN服务
实现VPN的方式非常多,用带VPN功能的路由器或用Linux、windows操作系统等,在windows系统下用双网卡建立VPN服务器更容易实现、但要增加一块网卡。介绍这方面的内容很多,不再赘述。本文介绍的是在windows 2003中用单网卡来实现。下面介绍实际实现过程,首先是在192.168.0.2这台机器上配置VPN服务。
选择"开始"'"所有程序"'"管理工具"'"路由和远程访问"。
设置过程如图2至图9所示,出现图10界面就完成了单网的VPN服务器端的设置,这里特别指出的是用单网卡一定要在图6处选择"自定义配置",否则就进行不下去了。
图2
图3
图4
图5
图6
图7
图8
图9
图10
五、从客户端连接到VPN服务器
1、新建有拨入权限的用户
要登录到VPN服务器,必须要知道该服务器的一个有拨入权限的用户,为了讲得更明白,下面在该VPN服务器上新建个用户并赋予该用户拨入的权限,过程如图11至图12是建立一个用户,图13是给这个用户远程登录的权限,一定要在"远程访问权限"处选择"允许访问",不然就无法登录了。
图11
图12
图13
图14
2、在本机测试连接
在远程连接到VPN服务器之前,最好先在VPN服务器的本机测试一下,测试过程如下:
鼠标右键"网上邻居",如图14,点击"新建连接向导",按图15至图21的步骤建立连接,因为现在做的是本机的测试,所以其中图18中的IP地址为本机的地址,图21中的用户dzq就是我们刚才新建的用户。出现图22的连接图标表示连接成功。这样就可以进行远程连接测试了。如果此时用ipconfig /all看网卡状态,就会看见三个网卡,其中一个IP地址为192.168.0.2的就是本机网卡,另外两个是刚才做本机测试时建立的,它们的IP地址为169.x.xx . xxx .. xxx,这是VPN默认的IP地址,是正常的,不用管它。
图15
图16
图17
图18
图19
图20
图21
图22
图23
3、远程连接前准备
在远程连接之前要做好两个准备。
第一要获得VPN服务器接入Internet的公共IP地址,如果是分配的静态IP,那就简单了,如果是动态IP,那必须在远程能随时获得这个IP地址,本例如图1,192.168.0.2这台机器的公网IP实际上就是ADSL猫接入Internet时,是ISP给自动分配的,获得动态IP的方法请参考拙作《获取动态IP地址的几种方法》。
第二要做个端口映射,从图1的拓扑可以看出,本例是通作在ADSL猫中通过NAT转换接入Internet的,通过这种方式一定要在ADSL中作端口映射,由于windows 2003的VNP服务用的是1723端口,所以如图23,将1723端口映射到192.168.0.2这台设有VPN服务的机器。如果用的是直接拨号,那在防火墙中将这个端口放开就行了。
图24
4、远程连接
上面的服务器中的测试完成后,就可以在家中进行远程连接了,其过程和在本机连接测试的过程一样,如图14至图21所示,在实际连接时到图18这一步时,输入VPN服务器所在的公网IP就行了。
实际应用中我是按照图1的拓扑连接的,连接很顺利,但遇到一个问题,在家通过VPN连入单位的机器后,和单位的机器通信完全正常,但不能正常上网。用route print检查路由(如表1所示)发现有两个到目标0.0.0.0的路由,网关一个是本来的网关192.168.1.1,一个是建立VPN后的网关169.254.101.219,这样在访问Internet网络时就有问题了。
C:\>route print
。。。。。。。
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 169.254.101.219 169.254.101.219 1
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 2
61.55.13.163 255.255.255.255 192.168.1.1 192.168.1.10 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
169.254.101.219 255.255.255.255 127.0.0.1 127.0.0.1 50
169.254.255.255 255.255.255.255 169.254.101.219 169.254.101.219 50
192.168.1.0 255.255.255.0 192.168.1.10 192.168.1.10 20
192.168.1.10 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.1.255 255.255.255.255 192.168.1.10 192.168.1.10 20
224.0.0.0 240.0.0.0 192.168.1.10 192.168.1.10 20
224.0.0.0 240.0.0.0 169.254.101.219 169.254.101.219 1
255.255.255.255 255.255.255.255 192.168.1.10 192.168.1.10 1
Default Gateway: 169.254.101.219
===========================================================================
Persistent Routes:
None
解决的办法:
删除接入VPN后的路由,命令如下所示:
C:\>route delete 0.0.0.0 mask 0.0.0.0 169.254.101.219
加一条指向VPN服务器所在网络的路由,本例(如图1)VPN服务器的地址为192.168.0.2,所以只要将到192.168.0.0这个网络的指向VPN的地址169.254.101.219就行了。
C:\>route add 192.168.0.0 mask 255.255.255.0 169.254.101.219
5、几点说明
1)、建立完VPN连接后,两台电脑的VPN的IP地址都是169.0.0.0中的地址,好像不能修改,但这并不影响使用,如图1建立连接后,在192.168.1.10这台电脑中ping 192.168.0.2是通的,也就是说要访问这台机器的资源,只要用192.168.0.2这个地址就行了。就像在局域网中一样。
2)、做为VPN服务器的这台机器的安全设置,如果没有特殊需要很多服务完全可以限制在局域网内,例如FTP服务只允许192.168.0.0网内的电脑访问。这样只要把VPN的安全做好就行了。换句话说,以本例来说,192.168.0.2这台机器访问Internet时是通过NAT地址转换,如果在ADSL猫中不做端口映射,从Internet的其它电脑上是看不到这台机器的,本例只做了VPN服务的1723端口的映射,虽然本机开了很多的服务,开放了很多端口,但这些都是对局域网开放的,要想从Internet访问这台机器,只有先建立了VPN才能访问其它的资源。只做一个服务的安全总比做许多服务的安全要容易些。VPN服务器有许多安全设置,以后再探讨。
3)、建立完VPN连接后,可以通过WWW、FTP互相访问,也可通过终端服务等登录到这台机器上,进而访问局域网中的其它电脑。图24就是192.168.1.10在建立完VPN后直接利用远程桌面连接,登录到192.168.0.2的机器上的登录界面。
图25
至此,已完成VPN的架设,但是如果没开NAT的话,是无法通过NAT上网的,也就是上面出现需要手工修改路由表才能上网的情况,下面介绍如何开NAT实现通过VPN上网方法:
在路由和远程访问-本地-IP路由选择-常规-选择“新增路由协议”-选择“NAT/基本防火墙”
然后右键“NAT/基本防火墙”-新建接口-选择“本地连接”-然后将其"设置为公用接口连接至internet"-勾上“在此接口上启用NAT”
如图:
再次访问www.ip138.com看看噢,IP已经是VPN服务器的IP了~
并且本地不需要做其它任何设置