子网掩码及其应用

[ 2005/09/20 16:38 | by gOxiA ]

一直以来都对子网掩码的认识不深,也没有过多的研究过,无奈并且可悲。今天看到了一片文章故转载到自己的Blog上,有时间研究一下。

  在TCP/IP协议中,SUBNET MASKS(子网掩码)的作用是用来区分网络上的主机是否在同一网络取段内。在大型网络中,CLASS A的SUBNET MASKS为255.0.0.0, CLASS B的SUBNET MASKS为255.255.0.0,CLASS C的SUBNET MASKS为255.255.255.0。

  假如某台主机的SUBNET MASKS为IP地址为202.119.115.78,它的SUBNET MASKS为255.255.255.0。将这两个数据作AND运算后,所得出的值中的非0的BYTE部分即为NETWORK ID 。运算步骤如下:

  202.119.115.78的二进制值为:
  11001010.01110111.01110011.01001110
  255.255.255.0的二进制值为:
  11111111.11111111.11111111.00000000
  AND后的结果为:  
  11001010.01110111.01110011.00000000
  转为二进制后即为:
  202.119.115.0

  它就是NETWORK ID,在IP地址中剩下的即为HOST ID,即为78,这样当有另一台主机  的IP 地址为202.119.115.83,它的SUBNET MASKS也是255.255.255.0,则其NETWORK ID  为202.119.115,HOST ID为83,因为这两台主机的NETWORK ID都是202.119.115,因此,这两台主机在同一网段内。

  但是,在实际应用中,可能会有多个分布与各地的网络,而且,每个网络的主机数量并不很多,如果申请多个NETWORK ID,会造成IP资源的浪费,而且很不经济,如果我们在SUBNET MASKS上动一下手脚,可以在只申请一个NETWORK ID的基础上解决这个问题。

  比如,我们有三个不同的子网,每个网络的HOST数量各为20、25和50,下面依次称为甲、乙和丙网,但只申请了一个NETWORK ID 就是202.119.115。首先我们把甲和乙网的SUBNET MASKS改为255.255.255.224,224的二进制为11100000,即它的SUBNET MASKS为:

  11111111.11111111.11111111.11100000

  这样,我们把HOST ID的高三位用来分割子网,这三位共有000、001、010、011、100、 101、110、111八种组合,除去000(代表本身)和111(代表广播),还有六个组合,也就是可提供六个子网,它们的IP地址分别为:(前三个字节还是202.119.115)


  00100001~00111110 即33~62为第一个子网
  01000001~01011110 即65~94为第二个子网
  01100001~01111110 即97~126为第三个子网  
  10000001~10011110 即129~158为第四个子网  
  10100001~10111110 即161~190为第五个子网  
  11000001~11011110 即193~222为第六个子网
  选用161~190段给甲网,193~222段给乙网,因为各个子网都支持30台主机,足以应付甲网和乙网20台和25台的需求。

  再来看丙网,由于丙网有50台主机,按上述分割方法无法满足它的IP需求,我们 可以将它的SUBNET MASKS设为255.255.255.192, 由于192的二进制值为11000000,按上述方法,它可以划分为两个子网,IP地址为:

  01000001~01111110 即65~126为第一个子网  
  10000001~10111110 即129~190为第二个子网

  这样每个子网有62个IP可用,将65~126分配丙网,多个子网用一个NETWORK ID 即告实现。


  如果将子网掩码设置过大,也就是说子网范围扩大。那么根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的相与结果而认为是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃。数据不能正确到达目的机,导致网络传输错误。如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。因此,任意设置子网掩码是不对的,应该根据网络管理部门的规定进行设置。

  随着IP地址资源的日趋枯竭,可供分配的IP地址越来越少,往往一个拥 有几百台计算机规模的网络只能得到区区几个IP地址,于是,许多人开始采用其他技术来扩展IP空间。

  1.子网掩码设置

  如果你所分配的IP地址仅能满足对主机的需求,但远不能满足你欲在局 域网中再建若干子网的需要,设置子网掩码就是你不得不采取的措施了。

  子网掩码同样也以四个字节来表示,用来区分IP地址的网络号和主机号, 默认子网掩码如下表所示:

  子网掩码(以十进制表示)
  A类 255.0.0.0
  B类 255.255.0.0
  C类 255.255.255.0

  当IP地址与子网掩码相与时,非零部分即被确认为网络号。

  假如我们将子网掩码中第四字节最高位起的某些位由0修改成1,使本来应当属于主机号的 部分改变成为网络号,这样就实现了我们划分子网的目的。例如你得到了一个C类网络地址198.189.98,按常规,你所有的设备从198.189.98.0到198.189.98.254都将处于同一网络之中,但如果你需要将自己 的网络划分成5个子网以便管理,那就必须修改子网掩码255.255.255.0,将此 掩码的第四个字节中的前三位再拿出来充当子网掩码,即将第四字节的00000000 修改成11100000(十进制数为224),故应当将子网掩码设置为255.255.255.224。这样我们有001、010、011、100、101、110六种方式与之相与得到不同的网络号(除去000和111作为保留地址不能使用),各子网的前三个字节仍然是198.189.98。可以知道:如子网掩码的位数越多,能划分的子网数也就越多,但 是每个子网的主机数就会越少。子网掩码的划分设置也有一个缺点:划分的子网越多,损失的IP地址也会越多。因为每个子网都会保留全0或全1的两个地址而不能使用。

  2.动态IP地址设置

  DHCP(DynamicHostConfigurationProtocol)动态主机配置协议是一种 多个工作站共享IP地址的方法。当我们分配到的IP地址数目远小于一个网络工作站的数目时,如果为每个设备都分配一个固定的IP地址,则显然有一部分计 算机将不能连入网络。DHCP为我们提供了一个较好的解决方法,其前提条件是其中每一个设备都不是随时都需要连接入网,并且同一时刻上网的设备不会很多。动态IP地址,顾名思义就是每一个设备所取得的IP地址是非固定的,即计算机连入网络时自动申请取得一个合法的IP地址,断开网络时自动归还,以便其他计算机使用。这样,我们可以用较少的IP地址构建较大的网络,也可以 增加网络工作站的可移性,如果一台主机从一个子网移动到另一个子网时,由于网络号的不同将修改该计算机的IP地址,否则无法与其他主机通信,而如果我 们采用动态IP地址,就会减少网络管理的复杂性。现在DHCP已非常流行,所支持的软件很多,且可以运行于不同机器和平台。目前拨号上Internet的用户就基本上采用这种方法。

  3.非路由地址

  在IP地址范围内,IANA(InternetAssignedNumbersAuthority)将一部 分地址保留作为私人IP地址空间,专门用于内部局域网使用,这些地址如下表:
  类 IP地址范围             网络数
  A 10.0.0.0---10.255.255.255     1
  B 172.16.0.0---172.31.255.255    16
  C 192.168.0.0---192.168.255.255   255

  这些地址是不会被Internet分配的,因此它们在Internet上也从来不会被路由,虽然它们不能直接和Internet网连接,但仍旧可以被用来和Internet通讯,我们可以根据需要来选用适当的地址类,在内部局域网中大胆地将这些地址当作公用IP地址一样地使用。在Internet上,那些不需要与Internet通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省IP地址资源。

  4.代理服务器

  代理服务器其实是Internet上的一台主机设备,它有一个固定的IP地址,当你需要上Internet时,就向该服务器提出请求,代理服务器接受请求并为你 建立连接,然后将你所需要的服务返回信息通知你,所有的数据信息和通讯处理 都是通过代理服务器的IP地址来完成。这种情况下,我们局域网内部的主机就应使用非路由地址,这样,即能保证内部主机之间的通讯,又能拒绝外来网络的 直接访问请求。

  代理服务器具有以下两个优点:一是如果你请求的数据已被同一网段上的其他人请求过了,那么大多数代理服务器都能从Cache中调用这些数据直接传给你,避免重新连接的时间和带宽;二是代理服务器可以保护你的内部网络不受入侵,也可以设置对某些主机的访问能力进行必要限制,这实际上起着代理防火墙 的作用。

  支持代理服务器的软件也非常多,WinGate、MsProxy等都是非常流行的代理服务器软件。在中国,代理服务器的使用也越来越广泛,中国公众多媒体通讯网(169)其实就是一个巨大的使用代理服务器的例子。

  5.地址翻译

  所谓地址翻译实际上是路由器中的一个数据包处理过程。当数据包通过路由器时,地址翻译过程将其中的内部私有IP地址解析出来,将其翻译为一个合法的IP地址。地址翻译过程可以按预先定义好的地址表一一映射翻译,也可以将多个内部私有地址翻译为一个外部合法IP地址。由于网络内每个设备都有一个内部稳定的IP地址,所以这种方法具有较 强的网络安全控制性能。

在Windows Server 2003的AD环境下,当AD架构完成后,系统栏中的时间配置中,也随之消失与Internet时间服务器同步的选项。

我的环境中AD服务器总是提示时间有问题,我就很郁闷了,微软的技术资料一直没有一个完整的解释,那还把时间服务器这块作成这样。。。

昨天收到的TechNet中文资源指南-企业IT构建核心基础结构解决方案中有一节让我很感兴趣,他就是配置Windows时间服务器,不管怎样先在AD服务器上实施再说。

1、打开一个命令行提示符窗口。(就是CMD环境)

2、键入

w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manual
,执行此命令后应该显示“成功地完成命令”。

3、键入

w32tm /config /update
,运行命令后应该显示“成功地完成命令”。

使ISA的功能和特性得到完全的体现,需要客户端安装FWC。其实原本我都是用sNAT模式,后来因为要做基于AD的身份验证访问,所以需要用到代理方式,为了客户端能够快速的配置,决定分发FWC,但是因为其默认安装后是自动查找ISA服务器,那么就必须开启ISA的WPAD功能。于是经过几番周折终于实现了ISA的WPAD。

其实之前作完配置一直有问题时因为早期作AD迁移遗留下来的一个小问题及我恢复过DHCP保留造成的。后来解决也就正常了,但是考虑了一下还是做一个完整的配置记录比较好!

首先需要了解一下ISA的WPAD的感念(以下是引用微软MVP吕劼专栏中“深入探讨ISA Server的自动发现特性”的文字):

ISA Server是Microsoft开发的用于替代Microsoft Proxy Server2.0的最新代理服务器和防火墙产品,其强大的功能及易用性给不同规模的企业带来的很多显而易见的好处。因此,ISA Server也正在逐步的成为很多企业,特别的基于Microsoft网络的企业的首选代理服务器和防火墙产品。今天,朗月繁星想和大家一起来深入的研究一下ISA Server中的自动发现(AutoDiscovery)特性。

        在一个全球性的企业里,网络覆盖全球的很多城市,在每个城市里或者站点里有很多ISA Server或者是ISA Server的阵列(Array)。工作在这个企业的员工有很大一部分是使用笔记本电脑来访问位于公司其他站点或者是Internet上的资源,我们知道如果一台客户机要访问位于ISA Server外端的资源就必须成为ISA Server的三种客户端之一,要么是SNAT客户端,要么是Web代理客户端,要么是Firewall Client客户端(以下简称FWC)。三种客户端的共同之处是要明确自己的代理服务器的位置,也就是要知道代理服务器的IP地址。然而,当一个移动用户从一个城市或者站点出差(漫游)到另外一个城市或者站点的时候,你该如何配置这些客户机使他们无障碍地访问Internet的资源?换句话讲你将做什么样的配置使这些移动的客户机顺利的找到提供代理服务的ISA Server?

我想读到这里的朋友可能已经猜到了,是的,没错!就是利用ISA Server的自动发现(AutoDiscovery)特性!这是一个令人振奋的功能,下面朗月繁星就来谈谈支持自动发现(AutoDiscovery)特性所涉及的一些技术要素。

如果您急于在网络中实现ISA Server的自动发现功能,你或许不需要了解过多的技术细节和讨论。这样,你可以直接参考设置“自动发现”之实施篇。
在此文中说的客户机和客户端是有区别的,客户机指用户使用的计算机,他可能使用Windows9x,Windows NT/2000或者其他Microsoft的操作系统,甚至是Linux;客户端指客户机操作系统上的某种应用程序或某种配置,例如,我们可以给Internet Explorer(以下简称IE)配置一个代理的信息,使之成为Web代理客户端;或者给用户的操作系统配置IP地址,网关以及DNS,这样这个操作系统就可以作为 SNAT客户端;如果您安装的ISA Server光盘中的Firewall Client,则运行在用户的操作系统上的网络应用程序的Winsock请求就会被FWC截获,从而做为ISA Server的FWC客户端。换句话说,客户机上可能存在多种客户端。此外,文中的domainsuffix.net指您的网络的DNS命名空间或者是您网络的域名称。在具体配置“自动发现”时,注意以您网络的所用的名称来代替domainsuffix.net。


自动发现(AutoDiscovery)特性的定义
自动发现是使ISA Server的客户端在不知道ISA Server的具体位置(IP地址)的情况下,通过网络上的其他网络服务来自动的发现ISA Server的IP地址及端口(Web代理客户需要知道提供Web代理服务的端口)的特性。

何种的客户端可以利用自动发现(AutoDiscovery)特性
我们知道ISA Server有三种客户端类型,在这3中客户端类型中,只有Web代理客户端和FWC可以利用自动发现(AutoDiscovery)特性,SNAT客户端不行!而且对于客户机使用的操作系统也有一定要求,客户机的OS必须是下面列表中的一种:
Windows98
Windows ME
Windows 2000
Windows XP
注意:不包含WinNT和Win95(Win95可以利用DHCP服务器发现ISA Server)

自动发现(AutoDiscovery)特性的机制讨论
之所以Microsoft称之为自动发现,足以证明ISA Server 的客户端在不经过“发现”这一过程前,是不知道代理服务器的具体位置的。那么,不难推断,在“发现”这一过程中,客户机肯定不是向ISA Server 来查询,所以就我的知识范围来讲,我想只有2种可以使用的方法来查找代理服务器ISA Server :一个是通过发送广播,另外一个是向某个公共的中心服务器来查找这个信息。最终Microsoft采取了后者,我想这也是明智之选,因为以广播的方式查找,对于网络的利用极其不利。以太网中广播是任何网络管理员应该避免的问题,说广播是网络杀手,我想不会有人有异议!在一个LAN(或者VLAN)中,所有节点都处于一个广播域,所以,当其中一个节点发送广播数据帧时,任何处于这个广播域的所有其他节点都会处理这个帧,尽管这个帧对于很多节点都是毫无意义的。如果在一个包含一个非常的大的冲突域的基于CSMA/CD的以太网中,广播会导致处于这个冲突域的其他节点,无法“抢夺”到传输介质,而导致暂时无法发送和接受其他数据的情况,直到这个广播被所有节点处理完成。

现在我们就来谈谈ISA Server的客户端是如何向中心服务器来查找代理服务器ISA Server的。这个中心服务器的角色可以是DNS,也可以是DHCP,或者是其两者(请放心,两者同时利用不会产生任何冲突,而是会提高发现ISA Server的机率)。Web代理客户端和FWC都可以利用DHCP和DNS来发现ISA Server。没有FWC只能使用其中之一(指DNS和DHCP),或者Web代理客户只能使用其中之一这样的限制。正是由于没有这样的限制,所以最终Web代理客户和FWC究竟是从DNS还是从DHCP来“自动发现”ISA Server的始终是我们困惑的问题。所以,朗月繁星分以下几种情况分析说明。

如果客户机不是DHCP Client,那么不论的Web代理客户还是FWC都是不能通过DHCP服务器“自动发现”ISA Server的,那么就只能利用DNS服务器。向DNS查询的条件就是:客户机配置了DNS。如果DNS服务器上的WPAD记录配置正确,则查询成功;如果DNS服务器没有配置DNS或者错误配置了WPAD记录,则查询失败。如果客户机是DHCP Clinet,这种情况,客户机具备从DNS和DHCP“自动发现”ISA Server,但至于是否可以完成“自动发现”要看DHCP和DNS服务器的设置。执行的过程如下,DHCP Client在引发“发现”这个过程时,它会向自己的DHCP服务器发送Inform消息,当DHCP服务器收到这个信息后,会给客户机发送ACK信息,这个信息告诉客户机到什么位置去得到配置信息的文件,这个配置文件的作用就是把客户机配置成为Web代理客户端或者是FWC,配置成功后,客户机就可以通过ISA Server来访问特定的资源了。如果DHCP服务器上没有配置252记录(也就是用于支持自动发现特性的252记录),但客户机配置了DNS,则客户机就会向DNS服务器查询wpad.domainsuffix.net,如果DNS配置了WPAD记录,则“自动发现”成功,如果DNS服务器没有配置WPAD记录,则“自动发现”失败。若客户机根本没有配置DNS,那么也会失败。这里还有一点要注意,如果DHCP服务器虽然配置了252记录,但是配置有错误,那么客户机也不会在向DNS服务器查询,所以,结果还是会失败!有关上边的论述,我做了一张流程图,如图1,大家可以参考。

接下来就是我的操作步骤:

我的环境:
ISASrv:Windows Server 2003 ST SP1,ISA2004,DCHP,WINS,WAN219.154.154.1,LAN192.168.0.1
ADSrv:Windows Server 2003 ST SP1,AD,DNS
XPClient:Windows XP Pro SP2

备注:之前此环境使用的是sNat方式,在客户端直接配置网关访问,ISA上直接作了条Allow 4 All(嘿嘿比较懒)。后来准备实施基于AD身份验证的访问规则,发现客户端就无法访问了,后来才想起来需要配置代理方式才可以,还是群里的哥们提醒!想了想直接安装FWC又方便又可靠。于是开始实施(之前并不知道WPAD),之后发现自动查找ISA服务器失败,才搜索资料找到了微软MVP吕劼的那篇文章,粗略的浏览了一下,看了主要的细节,其实还是很头大,干脆做着理解着算了!(昨天本来就头脑混乱,没想到下午下班前还试验成功了!)

1、准备工作:
其实也没什么准备工作可言,XPClient的IE默认连接我全部不打勾,直接通过网关访问,DHCP已经配置好了TCP/IP数据。ISA在部署的时候就选择了安装FWC并共享。我所做的就是进入AD管理中为OU建立一个策略,分发FWC。

2、配置DNS和DHCP支持WPAD:
WPAD可以用DNS和DHCP实现,推荐两者都作设置,这样ISA在实现WPAD更加准确有效。
(1)DNS方式:
进入DNS控制台,查找ISA服务器的A记录,如果没有就建立。(废话,我的ISA是成员,所以在DNS中存在它的A记录)。
之后,为这个A记录建立一个CNAME记录,命名为WPAD(注:一定要用这个WPAD名字,别问问什么微软的ISA自动发现就认这个名字)

理论上讲,到这里DNS下WPAD的设置就完成,客户端应该可以自动查询到ISA服务器,但是我这里的一些故障导致查询失败,所以就继续DHCP下WPAD的设置,浏览此文章的朋友可以自己试验一下。

(2)、DHCP方式:
首先进入DHCP控制台,单击DHCP服务器,右键选择“预定义的选项和值”,单击“添加”
之后在“名称”填写“WPAD”,数据类型选择“字符串”,“代码”填写“252”

然后点击“确定”,并为此选型类型定义值为“http://isasrv.office.local:8080/wpad.dat”(注:如果你只有一台ISA,那么这个值完全可以填写为IP方式,毕竟使用域名会增加一次对DNS的查询。另外wpad.dat必须是小写,因为ISA对他的名字大小写敏感。

最后单击左侧选项中的“服务器选项”,右键选择“配置选项”,找到“252 WPAD”并购选,当完成这一步后,“作用域选项”中就自动添加上了此选择配置(在“服务器选项”上应用这个配置是一个高效的做法)。

3、设置ISA启动WPAD
进入ISA2004控制台,单击ISA服务器,选择“配置”-“网络”-选择网络下的“内部”-右键“属性”
之后切换到“自动发现”购选“发布自动发布信息”

最后切换到“防火墙客户端”,复查配置是否正确。(有网友提到如果将ISA服务器名称添写为IP,更加适合FWC客户端的查找,这里我依旧是用的是完整的FQDN,并且最终测试无错误!)

完成以上的配置,ISA2004的WPAD就完成了。在客户端配置FWC自动查询,你就可以查找到ISA服务器。

结尾,在完成这些配置后我这边的客户端依旧无法找到ISA服务器,最终在DHCP中找到了问题,我设置的保留中出现了错误的MAC绑定,正好影响了AD服务器。修正后我这边才算大功告成!!欣慰啊。

微软MVP吕劼的“深入探讨ISA Server的自动发现特性”这边文章的地址是:
http://www.microsoft.com/china/community/Columns/Lvjie/3.mspx

分页: 1/8 第一页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]