54SA.COM|专注于系统运维管理,为中国SA提供动力!
Getting online shouldn't be tough. $7.99 .COMs
系统管理员之家Banner
当前位置: 主页 > Windows > 服务器 > ISA >

让VPN客户解析内部网络中的计算机名

时间:2010-10-28 21:31来源:编辑部 编辑:Matin
  前言:
  
  Netbios协议通讯基于本地子网中的Netbios广播,由于VPN服务器的隔离作用,VPN客户不能直接通过Netbios广播来解析其他网络中的计算机名,所以VPN客户不能通过计算机名来访问内部网络中的计算机;网上邻居也是基于本地子网广播的Netbios协议,所以你也不能让VPN客户通过网上邻居来访问内部网络中的计算机。但是你可以通过配置WINS服务器和DNS服务器来实现让VPN客户使用计算机名访问内部网络中的计算机,通过这篇文章,你可以学习到如何实现这一配置。
  
  Netbios协议通讯基于本地子网中的Netbios广播,由于VPN服务器的隔离作用,VPN客户不能直接通过Netbios广播来解析其他网络中的计算机名,所以VPN客户不能通过计算机名来访问内部网络中的计算机;网上邻居也是基于本地子网广播的Netbios协议,所以你也不能让VPN客户通过网上邻居来访问内部网络中的计算机。
  
  注意:计算机名指是不能超过15个字符的Netbios名字,而FQDN(完全限定域名)指的是computer.domain.com的形式。
  
  不过在Windows server 2003的路由和远程服务中,针对VPN客户的访问提供了一个非常有用的新选项:启用广播名称解析。当启用此选项时,VPN客户发起的Netbios名字解析请求广播将在VPN服务器的所有网络适配器上进行广播,从而可以实现VPN客户解析内部网络中的计算机名。
  
 

  但是,如果是通过ISA防火墙提供的集成VPN服务,ISA防火墙默认会拒绝VPN客户发起的Netbios名字解析请求,所以,你还需要创建访问规则以允许VPN客户的这种广播行为。需要创建的访问规则如下图所示(允许VPN客户端和本地主机之间的Netbios会话、Netbios名称服务和Netbios数据包服务):
  
 

  这样,VPN客户端就可以通过Netbios名字来访问ISA防火墙所连接的网络中的计算机了。
  
 

  注意:上面的规则只是允许VPN客户通过ISA防火墙来解析Netbios名字,额外的访问请求(如上图的Ping)还需要额外的防火墙策略的允许。
  
  使用广播来解析计算机名会给网络带来额外的流量负担,在网络规模比较大的时候,你最好通过配置WINS服务器和DNS服务器来实现让VPN客户使用计算机名访问内部网络中的计算机。WINS(Windows Internet Name Service)服务器专用于计算机名到IP地址的解析,当计算机配置为使用WINS服务器时,当它需要解析计算机名时,默认情况下将优先查询WINS服务器,如果没有查询到对应项则进行Netbios广播请求解析。
  
  Windows系统的计算机解析计算机名字(Netbios名字)的默认过程如下(H节点类型;根据不同的Windows操作系统版本,可能略有不同):
  
  检查是否为自己的计算机名;
  
  检查自己的本地名字缓存;
  
  如果计算机配置了DNS服务器并且配置了主DNS后缀时,将需要解析的计算机名加上自己的主DNS后缀构成一个完全限定域名再向DNS服务器发起DNS解析请求;
  
  如果计算机配置了WINS服务器,则向配置的WINS服务器发起Netbios名字解析请求;
  
  发起本地Netbios名字解析请求广播;
  
  如果系统配置为检查LMHOSTS文件,则检查此文件;
  
  检查HOSTS文件;
  
  如果配置了DNS服务器,则查询DNS服务器。
  
  当通过配置DNS服务器来实现计算机名的访问时,VPN客户必须配置主DNS后缀,这是因为只有当VPN客户配置了DNS服务器并且配置了主DNS后缀时,查询计算机名时才会把需要解析的名字加上了自己的主DNS后缀构成了一个完全限定域名向DNS服务器进行查询。这就要求在DNS服务器中有对应于VPN客户所查询的域名的域名记录,当DNS服务器中没有对应的域名记录时,VPN客户也不能通过计算机名来访问内部网络中的计算机。
  
  无论是通过配置WINS服务器还是DNS服务器来实现,最关键的步骤是配置VPN客户使用WINS服务器或DNS服务器。你可以通过在ISA防火墙中手动指定VPN客户所使用的DNS/WINS服务器来实现,也可以通过在RRAS中配置DHCP中继代理,从DHCP服务器给VPN客户分配DHCP选项指定DNS/WINS服务器来实现。
  
  本文中的试验环境如下图所示,Berlin上安装了ISA 2004企业版,为连接Internet和内部网络的边缘防火墙;Perth是内部网络中的一台WINS、DNS、DHCP服务器,Istanbul是外部网络中的一个VPN客户,在本例中将通过Berlin上的VPN服务连接到内部网络,然后分别通过Perth上的WINS服务器、DNS服务器来实现通过计算机名来访问内部网络中的计算机Perth上的文件共享服务。
  
 

  Berlin(ISA Server):
  
  External:
  
  IP:39.1.1.1/24
  
  DG:39.1.1.1
  
  DNS:None
  
  Internal:
  
  IP:10.2.1.1/24
  
  DG:None
  
  DNS:10.2.1.8
  
  WINS:10.2.1.8
  
  Perth(WINS/DNS/DHCP):
  
  IP:10.2.1.8/24
  
  DG:10.2.1.1
  
  DNS:10.2.1.8
  
  WINS:10.2.1.8
  
  Istanbul(VPN Client):
  
  IP:39.1.1.8/24
  
  DG:39.1.1.1
  
  DNS:None
  
  第一部分 配置WINS服务器来实现通过计算机名的访问
  
  在这一部分中,我将通过在ISA防火墙中手动指定VPN客户所使用的WINS服务器来实现通过计算机名的访问。WINS服务器是我最喜欢的服务器之一,因为它的配置非常简单,安装好WINS服务器后,不需要额外配置就可以正常的工作了。你只需要在添加/删除Windows组件中选择网络服务中的Windows Internet Name Service(WINS)服务器,就可以安装WINS服务器了。
  
 

  然后在客户计算机的TCP/IP协议的高级属性的WINS标签中,配置使用此WINS服务器即可。
  
 

  如下图,Perth和Berlin均配置为使用Perth上的WINS服务器,并且均在WINS服务器中进行了Netbios名字的注册。
  
 

  现在我们来启用ISA防火墙Berlin上的VPN服务,具体的操作步骤在此就不详细描述了,你可以参见How to :配置ISA Server 2004企业版中的VPN服务一文。首先创建一个VPN拨号用户,在此我命名为vpnuser,为了便于测试,我为此用户的远程拨入指定了一个IP地址10.2.1.5。
  
 

  然后我们在ISA管理控制台中启用VPN服务,在VPN属性的地址分配标签,我们配置使用内部网络中的DHCP服务器,然后点击高级按钮,
  
 

  在弹出的名字解析对话框,在此我们将配置VPN客户所使用的WINS服务器,点击使用下列WINS服务器地址,然后在主要文本框中输入内部WINS服务器Perth的IP地址10.2.1.8,点击两次确定回到ISA管理控制台,然后点击应用按钮保存修改和更新防火墙策略,然后重启ISA防火墙计算机。
  
 

  在这个例子中我们将在VPN客户Istanbul上通过计算机名来访问内部网络计算机Perth上的文件共享服务,所以我在ISA防火墙中创建了一个只允许VPN客户和内部网络之间访问文件共享的规则,如下图所示:
  
 

  服务器端的配置就完成了。现在我们来配置外部网络的VPN客户Istanbul,我已经创建了一个到达ISA防火墙的外部网络接口39.1.1.1的VPN拨号,双击此拨号,输入用户名和密码后,点击连接;
  
 

  连接成功,下图是VPN连接的详细信息,
  
 

  运行Ipconfig /all,结果如下图所示,VPN客户从ISA防火墙获得了DNS服务器和WINS服务器的IP地址,其中WINS服务器的IP地址是我们手动指定的,而DNS服务器的IP地址是ISA防火墙自动将自己的内部网络适配器上配置的DNS服务器分配给VPN客户使用的。
  
 

  注意:当配置使用DHCP服务为VPN客户分配IP地址并且没有为VPN客户手动指定DNS/WINS服务器时,ISA防火墙会将配置为获取VPN客户IP地址的网络适配器上配置的DNS/WINS服务器分配给VPN客户使用。更多的信息,请参见关于ISA防火墙中VPN服务的一些补充说明一文。在此例中,如果我们不手动指定VPN客户使用的WINS服务器,VPN客户也同样可以获得WINS服务器的IP地址10.2.1.8,这是因为用于获取VPN客户IP地址的网络适配器(ISA防火墙的内部网络适配器)上配置了WINS服务器10.2.1.8。
  
  在WINS服务器Perth上刷新一下注册的记录,你可以看到,VPN客户Istanbul也注册了自己的Netbios名字。
  
 

  然后我们访问Perth上的共享文件,访问成功,
  

  位于Perth上的Sniffer很清楚的侦听到了这次访问的全过程,注意看,在第3个数据包中Istanbul向自己的WINS服务器Perth发起Netbios名字解析请求,要求解析PERTH这个名字,而在第6个数据包中,Perth向Istanbul回复解析结果,然后Istanbul成功的访问了Perth上的共享文件。
  
 

  第二部分 配置DNS服务器来实现通过计算机名的访问
  
  配置DNS服务器来实现通过计算机名的访问有两个前提,我已经在前面提过了,就是:1、VPN客户配置了主DNS后缀;2、DNS服务器可以解析VPN客户请求解析的域名。在这个例子中我将配置DHCP中继代理,让VPN客户从内部网络的DHCP服务器上获得DHCP选项,从而获得DNS和WINS服务器的IP地址。
  
  首先我们在系统属性的计算机名中配置Perth和Istanbul具有相同的主DNS后缀contoso.com,然后在Perth上的DNS服务器的区域contoso.com中允许非安全的动态更新(这一步骤只是为了更好的展示试验结果,而不是必须,也最好不要在商业网络中进行这种配置)。如下图,目前DNS服务器的contoso.com区域中已经有了Perth和Berlin的名字注册。
  
 

  现在我们取消ISA防火墙的VPN服务中为VPN客户手动指定的WINS服务器,而在RRAS中配置DHCP中继代理。详细的配置过程在此就不多描述了,你可以参见为VPN客户启用DHCP中继一文,如下图,我们已经配置好了DHCP中继代理。
  
 

  同样的,我们需要在ISA防火墙中修改访问规则以适合DHCP中继代理的需要,修改好的访问规则如下图所示:
  
 

  然后我们在外部客户Istanbul上拨入VPN进行测试,连接成功,如下图所示:
  
 

  注意看,VPN客户获得了两个DNS服务器的IP地址。其中第一个DNS服务器是通过DHCP中继代理从内部的DHCP服务器Perth处获得,而第二个DNS服务器是ISA防火墙把用于获取VPN客户IP地址的内部接口上的DNS服务器分配给VPN客户的。
  
  位于Perth上的Sniffer侦听到的数据如下图所示,其中第3、6、7、8个数据包就是DHCP中继代理转发的VPN客户Istanbul到DHCP服务器Perth的DHCP请求,以及DHCP服务器Perth到VPN客户Istanbul的DHCP回复,后面的DNS数据包是VPN客户Istanbul在DNS服务器Perth中注册自己的名字,
  
 

  在DNS管理控制台中刷新一下,你就可以在DNS服务器中看到Istanbul注册的域名记录,
  
 

  我们在Istanbul上Ping内部网络中的服务器Perth试试,如下图所示,成功,注意看Ping的结果,由于Istanbul配置了主DNS后缀,在解析计算机名时,会自动添加自己的主DNS后缀,所以它可以正确的解析Perth的名字。
  
 

  从位于Perth上的Sniffer侦听到的数据中,你也可以很清楚的发现Istanbul将计算机名加上了自己的主DNS后缀,然后发送到自己的DNS服务器请求解析;
  
 

  当然,访问Perth上的共享文件也是可以的。
  
 

  不过,无论通过DNS服务器还是WINS服务器来进行名字解析,你都不能让VPN客户通过网上邻居来访问内部网络中的计算机。原因在文章的开始部分就已经介绍了,这是网上邻居所使用的Netbios协议是基于本地网络中的Netbios广播,而VPN客户和内部网络并不位于相同的子网中。
 

[责任编辑:Lavy]


------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名:
最新评论 进入详细评论页>>