Apache 响应 telnet http 请求,但不响应浏览器

Apache 响应 telnet http 请求,但不响应浏览器

在 CentOS 上运行 Apache:

  • 服务器才不是回应远程 http 请求通过制作curl 或 Web 浏览器(连接已建立,请求已发送,但过了一会儿就超时了),
  • 服务器回应远程 http 请求通过制作远程登录
  • 奇怪的是,它回应本地 curl http 请求

远程 telnet 请求:

$ telnet www.MYDOMAIN.com.cn 80                                                                                                                     
Trying XXX.XX.X.XX...
Connected to www.MYDOMAIN.com.cn.
Escape character is '^]'.

GET / HTTP/1.1
User-Agent: curl/7.39.0
Host: www.MYDOMAIN.com.cn
Accept: */*

HTTP/1.1 200 OK
Date: Wed, 17 Jun 2015 23:21:10 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Wed, 17 Jun 2015 19:31:35 GMT
ETag: "601a7-8-518bbbd2925bd"
Accept-Ranges: bytes
Content-Length: 8
Connection: close
Content-Type: text/html; charset=UTF-8

Hello !
Connection closed by foreign host.

远程 curl 请求:

$ curl -v http://www.MYDOMAIN.com.cn/
* Hostname was NOT found in DNS cache
*   Trying XXX.XX.X.XX...
* Connected to www.MYDOMAIN.com.cn (XXX.XX.X.XX) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.39.0
> Host: www.MYDOMAIN.com.cn
> Accept: */*
> 

因此,它似乎不是一个防火墙问题(iptables 配置为让传入的 tcp 流量通过端口 80,因为远程 telnet 请求得到了答复,所以它确实这样做了)。

我整天都在为这个问题苦思冥想:欢迎提出所有建议。

编辑:

这似乎是 PMTUD 问题。这是我尝试修复后的输出iptables-save(它仍然不起作用):

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [29:2820]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
*mangle
:PREROUTING ACCEPT [6344:506105]
:INPUT ACCEPT [601:53242]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [29:2820]
:POSTROUTING ACCEPT [29:2820]
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
COMMIT

相关内容