Server2003系统上的内置服务器设置某类IP无法访问问题
最近测试过程中遇到了一个很奇怪的现象,把服务器(测试产品)部署在Server2003系统的外网A上,把客户端(测试产品)部署在内网B,网络A,B用路由器相连,设置网络A为200.1.1.255,发现客户端连不上服务器,把服务器部署在Server2008,设置同一个IP,又能正常连接。或者在2003上设置IP为:200.1.1.254.也能正常连接。部署大致如下图所示:
wan口端的子网掩码是22位,则网络位占22位,主机位占10位。IP与子网掩码进行and与计算后,得到的是网络号:200.1.0.0。主机号全为1(3.255)加上网络号就是广播地址200.1.3.255.即使服务器设置IP是255,且是合法的IP地址,在Server2003还是不能用的。查阅官方文档:https://support.microsoft.com/en-us/kb/281579。
Windows Server 2003和Windows XP,因为微软的停止更新,已经正式退役了,导致产生一个后果当客户端发出一个x.x.x.255地址,从DHCP服务器或静态配置,客户端可能无法利用TCP/IP协议进行通讯。因为该地址被看作是“广播地址”,而不是在网络上的主机地址,即使它可能是一个有效的主机地址。这类现象还会发生在:
C类地址x.x.x.255基础
B类地址x.x.255.255和基础
A类基地址x.255.255.255可能是有效的,这些都是不允许的。
例如,假设网络地址与子网掩码分别为:200.57.8.0, 255.255.252.0,这两个地址,第一个字节必须完全匹配,这第三个字节的前六位必须匹配(252 = 111111 00)和最后一个字节不要紧。这个范围,200.57.8.0是网络地址和200.57.11.255是子网广播地址。这两者之间的每一个地址都是有效的。但是,下面的地址是不允许的因为他们是子网广播地址(基于标准的C类子网掩码255.255.255.0):
200.57.8.255
200.57.9.255
200.57.10.255
如果服务器设置成以上这样,都是会出现这类问题的。解决方法有很多种,避免使用该版本服务,设置iP的时候稍微注意下,避免设置位数255即可。
现象分析:服务器设置成200.1.1.0/22 这类是超网,是你说的聚合形,合理的IP范围是200.1.0.0(网络号)-200.1.3.255(广播地址) ,在2003上设置wan口IP为200.1.1.255不行,是因为基于标准的C类子网掩码255.255.255.0,对应的广播地址为200.1.1.255.而 Windows Server 2003和Windows XP已经把这类地址看成了“广播地址”,而不是在网络上的主机地址,即使它可能是一个有效的主机地址。