可能的DNS路由问题,导致网站无法正常工作

我完全被困住了,没有太多的事情要继续下去,所以我跳了起来,有人可以提出可能的错误。

我已经成功地运行了DNS服务器和Web服务器,它们都在路由器后面的独立机器上。 我的域名服务器指向包含alogging的DNS服务器。 路由器将所有DNS通信(从端口53进入)发送到DNS服务器,并将所有HTTP通信(端口80和443)路由到networking服务器。

一切都一直工作了很长时间…直到突然间没有。 现在,每当我尝试查看我托pipe的任何网站,它只是不工作。 “与服务器的连接在页面加载时被重置”。

当我尝试从networking内部查看网站时,我的每个域都指向路由器。

奇怪的是,如果我查看configuration为从任何地方使用SSL的一个网站,那么它的工作原理似乎只是一个端口80的问题。

我最近在networking服务器(Windows Server 2008)上安装了SP2,除此之外,我非常确定没有其他更改。 路由器上的NAT表格都是正确的。

我不明白! 任何build议将不胜感激。

您需要本地化哪个部分不工作。 将“浏览网页”分解为各自的部分:

  1. 解决DNS
  2. 连接到IP
  3. 接受回应

所以,首先你需要validationDNS是否正确parsing。 理想情况下,这应该来自外部的机器(我假设您正在为外部客户提供网页)您的networking。

其次,先在内部telnet到80端口。 对我来说这是:

greeblesnort@greeblesnort:~$ telnet 172.18.1.100 80 Trying 172.18.1.100... Connected to 172.18.1.100. Escape character is '^]'. GET / <<<<<<<<<<<<<<type this and hit <ENTER> twice HTTP/1.0 301 Found <<<<<<<<<<<<this, while a "bad" response, *is* a response from the web server 

如果这有效(与任何有效的服务器响应),则服务器在该端口上响应。 如果你想挑剔,你可以使用:

 GET /index.htm HTTP/1.0 

用您的服务器默认使用的任何东西replaceindex.htm。 这应该返回一个有效的页面:

 HTTP/1.1 404 Not Found Content-Type: text/html Server: Microsoft-IIS/7.0 x-info: result=success;server=web01;build={IIS} Date: Fri, 18 Sep 2009 21:56:47 GMT Connection: close Content-Length: 12579 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> ... 

现在,如果您可以从外部执行此操作并接收任何有效的服务器响应,则问题出在服务器本身(代码或configuration)上。

第三,您需要validation您的服务器是否能够将其响应反馈给客户。 对于SLB设置,NAT,服务器和虚拟机都是不同的地址,服务器可以通过与请求(asynchronous路由)不同的地址与客户进行通信。

希望有所帮助。 如果您提供更多的信息,我相信我们中的一些人会愿意帮助您validation外部的东西…

编辑:那么,如果91.135.5.118是正确的决议,那么DNS似乎是两个域名服务器罚款。

但是,当我尝试:

 [greeblesnort@fjdx421 greeblesnort]$ telnet www.enfotext.com 80 Trying 91.135.5.118... Connected to cust118-dsl91-135-5.idnet.net (91.135.5.118). Escape character is '^]'. GET /index.htm HTTP/1.0 

它超时。

这通常会让我build议您与您的ISP谈谈他们可能阻止入站端口80的请求。 但是,如果他们让所有那些似乎是开放的其他港口,这将是有点愚蠢的。

我做了一个数据包捕获,只是为了看看线路上发生了什么,看来你的服务器从来没有真正完成TCP握手。 它似乎收到最初的SYN,返回一个SYN / ACK,我发送最后的ACK,并且您的服务器不断尝试重新发送SYN / ACK。

我的赌注移动到上游或您的服务器上的防火墙configuration。

从你的机器上得到一个命令提示符并键入nslookup。 这将显示您正在使用的DNS服务器,inputdebug。 通过这种方式,您可以知道正在解决的问题以及解决问题的DNS服务器,然后可以从中更新logging或条目(如果需要)。

你的服务器的内部IP地址与路由器的外部IP地址是不同的,对吗? 因此,当您尝试从内部计算机连接到www.whatever.com时,它正尝试连接到外部IP地址。 大多数路由器无法正确处理这个问题

所以你需要做的就是覆盖你的内部计算机的DNS,这样内部的计算机就可以使用你的Web服务器的内部IP地址。

快速和肮脏的解决方法是修改每台内部计算机上的hosts文件(windows:C:\ windows \ system32 \ drivers \ etc \ hosts; Linux:/ etc / hosts)以包含Web服务器的内部IP地址。

另一种方法是运行另一台内部DNS服务器,它提供服务器的内部IP地址。 然后将所有内部系统configuration为使用此DNS服务器。

我认为你的问题需要进一步的解释,但是你的parsing器听起来有点不对劲。 您可以通过nslookup直接查询服务器。 但是,你也说如果你查看HTTPS(端口TCP443)它的工作。 但是,由于DNS(UDP53)对于HTTP(TCP80)和HTTPS都是相同的,所以这对您的诊断会造成一些错误,因为如果DNS被破坏,您将无法查看HTTPS端口。 请注意,这里可能存在一些DNScaching ,这可能会使您的诊断混乱。

我最初的猜测是你的ISP开始阻塞端口。 TCP / UDP 53和/或TCP / UDP 80都将是阻止(传入)的公共端口,因为如果你有一个住宅连接,他们不希望你运行服务器。

总之我会:

  1. 使用nslookup来testing您的DNS服务器。 看看他们是否正确地解决IP。 从内部和外部检查ISP的连接。
  2. 使用telnet检查从连接外部连接到端口80和443的连通性(如果连接的话)
  3. 使用networking浏览器打开页面,然后检查服务器日志是否正在加载错误。

解决:非常愚蠢的问题,不知何故路由器已被重新configuration,以允许从互联网访问控制面板,所以显然是试图采取指向外部IP的所有端口80stream量。

感谢您提供的所有帮助!