百思不得其解——关机再开机就无法连接服务器
首先说说拓扑
1.双IP光纤入室,连接到普通交换机上,交换机使用两根网线分别连接路由器的WAN0(IP:220.x.x.1)和WAN1(220.x.x.2)。
2.路由器LAN IP是192.168.1.1,2个LAN口,划分为2个子网(192.168.1——192.168.2/24);
3.数据库服务器在子网1,IP是192.168.1.2,直接连接到路由器的LAN1上,,子网192.168.2中多台计算机则通过普通交换机连接到路由器的LAN2上;
4.路由器上做了动态NAT,192.168.1子网NAT到WAN0,192.168.2子网NAT到WAN1,并做了端口转发,任何对WAN0中80端口和1433端口的访问,都被转发到192.168.1.2(数据库服务器);
5.数据库服务器环境:Win 2003 Server、SQL Server 2005、IIS 6、.NET 3.x。
问题:
在192.168.2.x,静态IP,新装操作系统(XP SP2和XP SP3都装过),客户端应用程序数据库地址是192.168.1.2:1433,登录连接数据库正常,PING正常,打开http://192.168.1.2网站正常。于是备份、关机。
第二天起来,开机,运行客户端程序,连接不上数据库了,PING,不通,http://192.168.1.2网站也打不开,于是重装客户端系统,使用原来的IP(192.168.2.x),还是不通。但是如果把客户端程序的数据库地址改为220.x.x.1:1433(外网地址),则可以连接数据库,也能打开http://220.x.x.1网站。
结论是:SQL Server 2005和IIS 6都没有问题,因为从外网可以访问,但使用内网地址访问数据库和内网网站,只要客户端关机后再开机,无论如何折腾,是无法访问的,甚至都PING不通,问题很可能在路由器上。
经过N次折腾,发现两个现象:
1.重启路由器,然后使用内网IP可以连接数据库,也可以访问内网网站;
2.更改客户端IP为一个未曾使用过的IP,也可以使用内网IP连接数据库和访问内网网站。如果更改后的IP是192.168.2这个子网中任何一台机器用过的IP,都无法连接。
3.即使上述互访不通,但是使用192.168.2的主机PING192.168.1.1(子网1的网关),都是可以PING通的。
4.无论数据库和网站能否连接访问,192.168.2中的任何一台机器访问互联网是没有问题的。
这个问题困扰我半年了,按道理,192.168.1——192.168.2/24这两个子网由于掩码相同,并非真正意义的子网,并且在客户端关机之前也被证明互访是没有问题的。如果说路由器的配置有问题,那为何首次配置好客户端后访问没有问题呢?即使是重启计算机,也照样能访问。反之,如果路由器的配置没有问题,那为何关机后再开机就不能访问了呢?
希望高手或者遇到类似问题并已经解决的朋友指点迷津,谢谢!
[解决办法]
楼主很辛苦,半夜三更还在为此事费心发帖子.
没有身临其境,很难提出一个可行的解决方案,建议楼主检查并分析以下内容:
* 尝试将WAN0到192.168.1.2的NAT使用MIP类型,静态一对一映射.
* 检查路由器的路由表和会话保持时间.
* 有条件的话,在路由器上检查数据包(2.x到1.2)的往返情况,看看断点在哪里?
* 2.x网的主机改用一个未使用近的新IP能访问1.2主机.前提是该新IP有没有先访问过外网?测试一下先访问外网再访问1.2(立即访问和闲置一断时间后再访问1.2)和直接访问1.2的通断情况.
[解决办法]
首先这个问题比较复杂,外网可以访问内部SQL说明服务器没有问题.192.168.2.0/24网段上外网也是没有问题说明系统,线路都是没有问题的.所以最有可能是出在路由器的设置问题.
我觉得很有可能是路由没有设置.也就是说192.168.1.0/24与192.168.2.0/24这两个网段分别是连在不同的端口,所以在物理上进行了隔离.并且划分了两个网段在逻辑上也进行的隔离.
建议:在路由器上设置两条静态路由试下.(PING不能通只能有两面三刀种可能,线路不通,防火墙打开了,无路由)前两点可以排除.