apache2 没有出站连接

apache2 没有出站连接

我无法从另一台机器上的浏览器访问我的服务器(它给出“连接已超时”错误),尽管从机器内的浏览器键入http://localhosthttp://my-ip-here可以工作。我可以从其他机器 ping 和 ssh 进入服务器;似乎 apache 拒绝了端口 80 浏览器连接。

我该怎么做才能进一步诊断/修复此问题?提前感谢您的帮助。

编辑:没有防火墙。这是我的默认站点:

keone@kserver:/etc/apache2/sites-enabled$ ls -l
total 0
lrwxrwxrwx 1 root root 26 2010-12-16 15:20 000-default -> ../sites-available/default

keone@kserver:/etc/apache2/sites-available$ cat default
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/manual
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

还有,这个和这个帖子似乎验证没有防火墙:

keone@kserver:/etc/apache2$ sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
keone@kserver:/etc/apache2$ sudo /sbin/iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

答案1

在客户端和服务器上运行 tcpdump 并查看数据包是否通过也可能会有所帮助

典型的交换机:tcpdump -i -n -p port 80

-n = 不解析主机名 -p = 非混杂模式

另一件需要检查的事情是你的 apache 配置中的 listen 指令,尝试:grep -ir listen /etc/httpd/ 这应该是类似 *:80 或你的 ip 地址各一个:80

答案2

您需要检查 apache 所在机器上运行的防火墙 - 它可能阻止了端口 80。一旦解除阻止,您应该能够从另一台机器访问它。

答案3

  1. 关闭防火墙(暂时..稍后,您可以修复规则)(或允许端口 80 连接)。
  2. 从远程机器 Ping/traceroute 到 IP(apache 运行的地方)。

步骤 1、2 应该能让您了解问题所在。另外,请检查您的 apache 配置。确保您的默认站点配置中未提及“允许来自本地主机/拒绝来自所有人”。

答案4

在您的客户端计算机上,通过端口 80 远程登录到服务器。

如果结果是连接被拒绝,那么唯一的原因是防火墙阻止(您说它关闭)或 Apache 没有在公共 IP 上运行。

如果结果超时,并且 ping 正常,那么除了防火墙之外我看不出还有其他原因。

如果可以连接,那么至少您已经联系到了 Apache,并且知道问题出在那一边。

相关内容