Apache“允许来自”规则仅适用于 IP 地址

Apache“允许来自”规则仅适用于 IP 地址

我在个人服务器上设置了一个非常简单的 apache2 - 即配置文件中除了允许/拒绝规则之外几乎没有自定义内容,并且我刚刚将 Ubuntu 版本从 8.04 升级到 8.10。但是,尽管在升级过程中保留了 apache 配置文件,但如果我尝试访问以前可以访问的网页,除非我使用本地主机,否则 apache 现在会给我“403 fobidden”。如果我更改

允许来自 hostname.domain.local

允许来自 192.168.1.xxx

在我请求的目录的 apache 配置文件中,我可以顺利访问该页面。

不幸的是我的 Apache 技能不太高。有人能提供一些建议来解释为什么会发生这种情况吗?

以下是我们尝试过的一些方法:

  • 通过主机名 nslookup 查找受影响计算机的 IP 地址(我得到了预期的结果)
  • php -r 'echo gethostbyaddr("192.168.1.196")."\n";' 此命令以主机名作为回复

答案1

好的,我找到了问题:它与 avahi-daemon 有关:请参阅错误 80900 如果我禁用守护进程,apache 就可以正常工作。可能还有一个我可以编辑的配置文件,但目前我只能花时间禁用守护进程。如果我找到更好的答案,我会更新这个问题!

答案2

Apache 的 mod_access 提供了“允许来自...”功能。

对于“允许来自”的要求,mod_access 将执行:

  • 对客户端 IP 进行反向 DNS 查找(IP 地址到主机名)
  • 正向 DNS 查找(从第一次查找的主机名到 IP 地址)

如果反向和正向查找成功并且一致(匹配主机名/IP),并且“允许来自”部分中的主机名相同(或为后缀),则应该允许您访问。

由于您的“允许来自”语句适用于 IP 地址,但不适用于主机名,因此它可能与 DNS 有关。

从你的网络服务器,你应该能够执行以下操作:

  1. dig -x 192.168.1.xxx,给出 hostname.domain.local 的 PTR 结果(或以此为后缀的主机名)
  2. dig hostname.domain.local(或来自 1. 的主机名),提供如 1 中的 IP 地址。

如果 DNS 结果不符合您的预期,则首先要确定哪些文件/名称服务器(/etc/hosts 和 /etc/resolv.conf、/etc/nsswitch.conf?)是开始调试的地方。

相关内容