我试图了解发生了什么。如果我使用
将一个IP添加到我的黑名单中Require not ip xxx.xxx.xxx.xxx
它正常工作,Apache 2.4抛出403.现在我已经尝试使用整个范围,它仍然让请求通过。我用过:
Require not ip xxx.xxx.xxx.1 xxx.xxx.xxx.255
Apache 2.4返回200而不是403.我做错了什么?
由于
修改: 这是我本地网络的一个简单测试用例。
Require not ip 192.168.1.180/192.168.1.185
在ip 192.168.1.183上使用过的计算机,并没有被阻止。
这是我的httpd.conf和ips分开的blacklist.txt。它也适用于单个IP,该问题仅与IP的 RANGE 有关。
<Directory "f:/root">
Options Indexes FollowSymLinks
AllowOverride All
<LimitExcept GET POST HEAD>
</LimitExcept>
<RequireAll>
Require all granted
Include conf/blacklist.txt
</RequireAll>
</Directory>
EDIT2 : 做了另一个测试,似乎问题来自使用黑名单+ GEOIP 。黑名单单独适用于xxx.xxx.xxx.0 / xxx.xxx.xxx.255但是只要mod_geoip处于活动状态,黑名单就会被忽略。
这是我的GEOIP配置:
<IfModule geoip_module>
GeoIPEnable On
GeoIPEnableUTF8 On
GeoIPOutput Env
GeoIPScanProxyHeaders On
GeoIPDBFile bin/GeoIP.dat MemoryCache
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
</IfModule>
如果有办法让 BOTH黑名单和GEOIP 一起工作?
答案 0 :(得分:3)
您的IP范围格式错误。它应该如下所述。
Require not ip xxx.xxx.xxx.1/xxx.xxx.xxx.255
答案 1 :(得分:2)
好的,所以这次发现了真正的问题哈哈。这是一个使用Apache 2.4.10的WAMP服务器,不确定是否相关。 阻止IP范围的唯一方法是阻止整个范围:
Require not ip 192.168.1
阻止整个192.168.1.0到192.168.1.255块。如果我试过
Require not ip xxx.xxx.xxx.0/xxx.xxx.xxx.255
实际上永远不会工作并让访问者通过。出于某种原因,在我的测试中,我认为它与GEOIP有关,但它不是(不确定我做了什么)。
我从来没有找到一个解决方案,只是不幸地阻止了部分范围,并尝试了几乎所有的东西。所以我可以忍受它,但神秘面纱并没有完全解决......
答案 2 :(得分:2)
虽然我知道我的回答有点晚,但希望这有助于其他人。
我非常确定使用Apache 2.4进行IP范围的最简单方法是CIDR。你可以查找&#34; CIDR发生器&#34;在Google上设置您的特定范围。
我用过这个: http://www.ipaddressguide.com/cidr
对于您的原始问题,我会尝试这样做,而不是阻止整个内部范围。
不要求ip 192.168.1.180/30 192.168.1.184/31
此外,由于专门输入了IP,我非常确定GeoIP模块没有任何影响。