Site-to-Site *** 介绍: 虚拟专用网络概述-->模拟点对点链接(封装)
                                                               模拟专用链接(加密)
                                 点对点隧道协议(PPTP)
                                基于Internet协议安全性(IPSec)的第2层隧道协议(L2TP)
                               Internet协议安全性(IPSec)隧道模式 
见下图:
20033782
如何构建基于PPTP的站点到站点×××连接呢?
在前面的博文中,我们已经介绍了如何用ISA2006创建×××服务器,以及远程用户如何利用×××服务器拨入内网。如果是个别用户在家办公或出差在外,用前文提到的×××解决方案是可以圆满解决的。但如果是一群用户有互相访问的需求,例如某公司总部和分公司需要互相访问,那用×××远程拨入的方式就显得效率不高了。试想一下,公司总部500人,分公司300人,如果要互相访问,800人都要拨叫对方的×××服务器,这显然不是一个好的解决方案。
今天我们提供一种站点到站点的×××解决方案,可以很好地解决这个问题。我们引入下面的拓扑图来说明这个方案的构思,某公司Florence总部的内网IP范围是10.1.1.0,Berlin分公司的内网IP范围是10.2.1.0。北京分公司使用一台ISA服务器连接到互联网,天津分公司也使用一台ISA2006连到公网。站点到站点的×××指的是在两个公司的ISA服务器上配置好×××的拨入拨出参数,确保两个ISA服务器既可以拨叫对方的×××服务器,也可以接受对方×××服务器的拨叫。这样一来用户只要把默认网关指向自己的ISA服务器,就可以不用拨叫对方公司的×××服务器了,全部由ISA代劳了。例如Florence公司的Denver要访问Berlin公司的Istanbul,Denver只要把访问Istanbul的请求提交给自己的默认网关-Florence,剩下的事就不用管了,Florence会自动拨叫Berlin公司的ISA服务器Berlin,然后在两个ISA服务器之间创建完成×××隧道,接下来Denver的访问请求就被Florence通过×××隧道路由到Berlin公司的Istanbul上了。你看,这样一来两个公司员工互访时就很方便了,只要把网关指向自己的ISA服务器,然后就可以透明地访问对方公司的内网,效率是不是有很大的提高呢?
                 20033726
创建站点间的×××需要在两个×××服务器上都进行设置,两个ISA服务器上的操作具有对称性,我们先以Florence上的操作为例进行详细讲解,目前Florence已做了下列准备:
1、 防火墙策略中允许内网和本地主机任意访问。
2、 启用了×××,允许使用PPTP和L2TP
3、 ×××地址池的范围是192.168.100.1-192.168.100.200
创建远程站点
创建远程站点是部署站点间×××最重要的一步,远程站点其实是一个自定义的远程网络,具体到Florence,其实就是要把Berlin分公司的内网10.2.1.0定义为一个远程网络。为什么需要把对方公司的内网定义成一个新的网络呢?因为我们知道网络是ISA进行访问控制的基本管理单元,ISA考察一个访问请求时首先要考虑源网络和目标网络的网络规则。如果不定义远程网络,Berlin分公司对Florence来说属于外网范畴,而内网到外网的网络规则是NAT,因此Florence不会允许从Berlin的Istanbul访问Florence的Denver。这就是我们为什么要把Berlin公司的内网定义为一个新的网络,只有这样我们才可以重新定义Florence内网和Berlin内网的网络规则,进而制定出符合要求的防火墙策略。
创建远程站点还涉及到创建×××隧道的参数设定,例如Florence把Berlin分公司的内网定义为远程网络,那Florence上就必须定义好连接这个远程网络要通过哪个×××服务器,两个×××服务器使用哪种协议,如何进行身份验证等,下面我们就来具体看看如何在Florence上创建远程站点。
在Florence上打开ISA管理器,切换到虚拟专用网络,如下图所示,在“远程站点”标签下选择“创建×××点对点连接”。
20033727
出现创建×××点对点连接向导,其实就是远程站点的创建向导,首先我们要为远程站点起个名字,如下图所示,我们为远程站点命名为Berlin。这个远程站点的名字可不是随便取的,后面我们会知道ISA服务器上必须创建一个和远程站点同名的用户。
20033728
接下来要选择×××站点间连接要使用的协议,如果两个×××服务器都是ISA,那可以选择PPTP或L2TP,如果是ISA和硬件×××组成站点间连接,那应该选择IPSEC。在这个实验中我们选择使用PPTP作为站点间×××使用的隧道协议。见下图:
20033729
如下图所示,系统会弹出一个对话框提示你在ISA服务器上必须有一个和远程站点同名的用户,而且用户必须有拨入权限。也就是说Florence创建了一个远程站点Berlin后,Florence服务器上必须有一个名为Berlin的具有远程拨入权限的用户。如果Florence隶属于域,那么Berlin这个用户也可以在域控制器上创建。创建出的这个用户是为Berlin公司的×××服务器拨叫Florence公司的×××服务器准备的,Berlin公司的用户通过他们的×××服务器拨叫Florence的×××服务器时,如果Berlin用户源于Berlin这个远程网络,那Berlin的×××服务器必须使用Berlin作为用户名进行身份验证。由于微软这么一个奇怪的规定,我们必须在Florence的ISA服务器上准备好Berlin这个用户。
20033730
接下来要填写远程站点的×××服务器的IP地址或域名,Berlin的×××服务器IP是192.168.1.8。见下图:
20033731
下面设定的是Florence拨叫Berlin的×××服务器时进行身份验证的凭据,显然,Berlin上也要有个名为Florence的用户,在后续的操作中我们会在Berlin上创建这个用户。见下图:
20033732
接下来我们要定义远程站点的IP地址范围,如下图所示,远程站点的地址范围是10.2.1.0-10.2.1.255。
20033733
接下来×××创建向导建议创建一个网络规则,从远程站点到内网,网络规则是路由关系。这个提示很人性化,是ISA2006比ISA2004改进的地方。见下图:
20033734
创建完网络规则后,向导又很贴心地建议我们创建一条访问规则,允许内网和远程站点互相访问。见下图:
20033735
点击完成结束×××创建向导。见下图:
20033736
向导结束后再次提示我们要创建一个名为Berlin的用户,而且要允许远程访问。见下图:
20033737
远程站点创建完毕后,如下图所示,我们发现在向导的指引下,远程站点到内网的网络规则已经被创建了,而且网络关系是路由。
20033738
如下图所示,向导还帮助我们创建了访问规则,允许远程站点和内网互相访问。
20033739
如下图所示,向导还在路由和远程访问中创建了请求式拨号,当Florence公司要访问Berlin公司时,Florence会自动拨叫Berlin的×××服务器,创建出×××隧道,供用户访问使用。
20033740
创建与远程站点同名的用户
最后不要忘记创建与远程站点同名的用户,如果Florence加入域,那么既可以在Florence服务器上创建这个用户,也可以在域控制器上创建这个用户。由于本例中Florence和Berlin两个ISA服务器都在工作组中,因此我们只能在ISA服务器上创建这个远程访问用户了。如下图所示,在Florence的计算机管理工具中选择新建一个名为Berlin的用户。
20033741
用户创建完毕后不要忘记用户的远程访问权限,如下图所示,在用户属性的拨入标签中将用户的远程访问权限设为允许访问。
20033742
OK,至此我们完成了在Florence上的设置,总结如下:
1、 将Berlin分公司的内网定义成远程站点
2、 创建远程站点和内网的网络规则
3、 创建远程站点和内网的访问规则
4、 创建与远程站点同名的用户
接下来轮到Berlin服务器了,Berlin上同样已进行了如下准备:
1、 允许内网和本地主机任意访问
2、 启用×××,允许使用PPTP和L2TP
3、 ×××地址池的范围是192.168.200.1-192.168.200.200
创建远程站点
Berlin服务器上的设置基本和Florence完全对称,首先仍然是需要创建远程站点。如下图所示,在Berlin的ISA管理器中选择“创建×××点对点连接”。
20033743
为远程站点命名为Florence。见下图:
20033744
站点间×××连接使用的协议是PPTP,Berlin选择的×××协议要和Florence完全一致。见下图:
20033745
连接到远程站点,需要经过192.168.1.254-Florence公司的×××服务器。见下图:
20033746
Berlin拨叫Florence的×××服务器时,进行身份验证时所输入的用户名和密码要匹配Florence服务器上刚创建的用户账号。见下图:
20033747
定义远程站点的地址范围,输入Florence公司的内网范围10.1.1.0-10.1.1.255。见下图:
20033748
接下来要创建远程站点和内网的网络规则,仍然是路由关系。见下图:
20033749
然后创建访问规则允许内网和远程站点互相访问。见下图:
20033750
点击完成结束远程站点创建。见下图:
20033751
创建与远程站点同名的用户
创建完远程站点后,接下来就该创建与远程站点同名的用户了,如下图所示,我们在Berlin服务器上创建了用户Florence。注意,在本次实验中为简单起见,Florence和Berlin两个ISA服务器都没有加入域,因此用户在ISA本机创建。如在生产环境中ISA已经加入了域,一般会在域控制器上创建这个用户。
20033752
最后别忘了设定用户的远程访问权限,相信在Florence上做完一遍之后,大家在Berlin上进行操作时已经是轻车熟路了。见下图:
20033753
两端的×××服务器配置完毕后,我们接下来要在内网的客户机上进行测试了,如下图所示,我们在Florence的Denver上pingBerlin公司的Istanbul
20033754
Denver访问Berlin内网的Istanbul不需要自己进行×××远程拨号,只要把访问请求提交给Florence就可以了。这时打开Florence的路由和远程访问,如下图所示,我们发现Berlin这个请求式拨号的状态已经从断开变成了已连接。
20033755
此时你打开Berlin的路由和远程访问,如下图所示,我们发现Florence这个请求式拨号的状态也从断开变成已连接了。
20033756
如下图所示,我们发现Denver已经可以ping到Istanbul了,实验成功。有一点要注意,有时请求式拨号连接的时间会稍长一些,可能前面的一些ping包会显示Time out,这是正常现象,稍等片刻即可正常。
20033757
最后试试在Istanbul上访问Denver,如下图所示,访问成功,至此,实验顺利完成。
20033758
创建站点间的×××不是难度很大的技术问题,如果两端的×××服务器中有硬件×××,那就应该使用IPSEC。如果两端的×××都是微软的ISA或路由与远程访问,那就推荐使用PPTP或L2TP。ISA间并非不能使用IPSEC,只是使用经验告诉我这种拓扑并不稳定,当然,ISA2006的SP1可能会解决这个问题,大家有兴趣可以测试一下。
如何创建基于L2TP的站点到站点的×××连接呢?
L2TP和PPTP相比,增加了对计算机的身份验证,从理论上分析应该比PPTP更安全一些。L2TP验证计算机身份可以使用预共享密钥,也可以使用证书,我们把两种方式都尝试一下。
使用预共享密钥
使用预共享密钥实现L2TP的过程是是比较简单的,我们在×××站点两端的×××服务器上配置一个相同的预共享密钥,就可以用于L2TP协议中验证计算机身份。如下图所示,我们在Florence上定位到“虚拟专用网络”,右键点击远程站点Berlin,选择“属性”。
20033759
我们在远程站点Berlin的属性中切换到“协议”标签,勾选使用“L2TP/IPSEC”,同时勾选使用预共享密钥,并设置预共享密钥为yejunsheng。这里的设置会导致Florence拨叫Berlin时,使用预共享密钥yejunsheng来证明自己的身份。见下图:
20033760
在“常规×××配置”中点击“选择身份验证方法”,如下图所示,勾选“允许L2TP连接自定义IPSEC策略”,并设置预共享密钥为yejunsheng。这个设置则是告诉Florence,接受×××客户端使用预共享密钥验证计算机身份。这样我们分别设置了Florence作为×××服务器和×××客户端都使用预共享密钥验证计算机身份,至此,Florence服务器设置完毕。
20033761
接下来我们在Berlin服务器上如法炮制,如下图所示,选择远程站点Florence的属性。
20033762
在远程站点的属性中切换到“协议”标签,如下图所示,选择使用L2TP作为×××协议,并配置预共享密钥为yejunsheng。
20033763
然后在“常规×××配置”中点击“选择身份验证方法”,如下图所示,勾选“允许L2TP连接自定义IPSEC策略”,并设置预共享密钥为yejunsheng。至此,Berlin服务器也设置完毕。
20033764
这时我们来看看站点间×××配置的成果,如下图所示,在Florence内网的Denver上ping Berlin内网的Istanbul。第一个包没有ping通,这是因为两个ISA服务器正在创建×××隧道,接下来的包都可以顺利往返,这证明我们的配置起作用了。
20033765
使用证书验证
使用证书验证比预共享密钥验证更加安全,只是实现起来要麻烦一些,我们需要有CA的配合。在我们的实验环境中,Denver是一个被所有的实验计算机都信任的CA,Denver的CA类型是独立根。有了CA之后,×××服务器需要向CA申请证书以证明自己的身份,由于站点间×××中每个×××服务器既是服务器又充当客户机角色,因此每个×××服务器都需要申请两个证书,一个是服务器证书,一个是客户机证书。
1、 Florence上进行配置
首先我们要先为Florence申请两个证书,一个是服务器证书,一个是客户机证书。如下图所示,在Florence上我们在IE中输入 [url]http://10.1.1.5/certsrv[/url] ,在CA主页中选择“申请一个证书”。
20033766
选择“提交一个高级证书申请”。见下图:
20033767
选择“创建并向此CA提交一个申请”。见下图:
20033768
如下图所示,我们在证书申请的表单中选择申请一个客户机证书,并且把证书存储在计算机存储中。
                                       20033769
提交证书申请后,如下图所示,我们发现Florence申请的证书已经被CA发放了,点击安装此证书即可完成任务。
20033770
接下来如法炮制为Florence申请服务器证书,如下图所示,这次为Florence申请的是服务器证书,仍然存储在本地计算机存储中,接下来的证书发放以及安装就不再赘述。
                                    20033771
如下图所示,我们可以看到Florence的计算机存储中已经有了刚申请的两个证书,
20033772
接下来在远程站点属性中取消使用预共享密钥验证身份。见下图:
20033773
然后在×××常规配置的选择身份验证方法中同样取消使用预共享密钥验证身份,至此,我们在Florence上配置完毕。见下图:
20033774
2、 Berlin上进行配置
在Berlin上进行配置基本和Florence是一样的,首先也是先从Denver申请证书,如下图所示,Berlin先申请的是一个客户机证书。
20033775
申请完客户机证书后,如下图所示,Berlin又申请了一个服务器证书。
                                        20033776
接下来就是在远程站点中取消使用预共享密钥。见下图:
20033777
最后在×××常规配置的身份验证方法中取消使用预共享密钥。见下图:
20033778
OK,两个×××服务器都进行了对称配置,这下他们在进行身份验证时只能使用证书了。用客户机测试一下效果吧,如下图所示,在Berlin的Istanbul上ping Florence的Denver,结果还是令人满意的,我们用证书实现L2TP的身份验证获得了成功!
20033779
这时打开Florence的路由和远程访问,如下图所示,我们发现Berlin这个请求式拨号的状态已经从断开变成了已连接。
20033780
此时你打开Berlin的路由和远程访问,如下图所示,我们发现Florence这个请求式拨号的状态也从断开变成已连接了。这个时候说明我们使用PPTP和L2TP这两种协议构建站点到站点的×××连接已经成功了。
20033781
L2TP实现站点间×××并不难,尤其是预共享密钥的实现是很简单的,如果是证书验证,要注意对CA的信任,切记,只有从一个被所有机器都认可的CA申请证书才是有意义的!