![我如何需要一个 IP 范围而不是 1 个 IP?](https://linux22.com/image/656126/%E6%88%91%E5%A6%82%E4%BD%95%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%20IP%20%E8%8C%83%E5%9B%B4%E8%80%8C%E4%B8%8D%E6%98%AF%201%20%E4%B8%AA%20IP%EF%BC%9F.png)
我的 IP 变化会导致不同的 D 类,所以我想设置一个范围:
123.123.123.xxx,其中最后一段可以是 0-255。
目前,Apache 表示:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
答案1
首先,尽管有“apache-2.2”标签,我还是假设您指的是 Apache 2.4,因为您发布的语法来自 2.4。
来自 Apache 文档:
IP地址是 IP 地址、部分 IP 地址、网络/网络掩码对或网络/nnn CIDR 规范。
我假设您的意思是您希望允许 /24,因为 D 类是多播地址,而有类网络在 90 年代就消失了。要允许 /24,您可以使用以下任何一种:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
就我个人而言,我发现最后一个比第一个歧义更少,并且比第二个更容易阅读。
您可能会发现本文档的这一部分很有用:http://httpd.apache.org/docs/2.4/howto/access.html#host
答案2
在 Apache 2.2 及以下版本中,您可以使用:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
在您的 中.htaccess
,直接在基础级别上(不在任何 内<directive>
)。
从 Apache 2.4 及更高版本开始,您可以:
<RequireAny>
#IPv4 range at my work
Require ip 207.100
#IPv4 range I usually get through my mobile provider
Require ip 29.11
#IPv6 from home
Require ip 2a02:4126:2aa4::/48
</RequireAny>
(所有数字都是虚构的,不用担心 ;-)。
多年来,我一直使用这个来保护我的后端文件夹免受 99% 的潜在用户的攻击。(除非您是旅行中的狂热博主,否则效果非常好。如果您是 Gmail 用户:最底部的“上次帐户活动”链接是一种轻松的方式来了解您自己的“IP 习惯”)。
答案3
阿帕奇的要求指令用于授权阶段,以确保允许或拒绝用户访问资源。mod_authz_host 使用 ip、host、forward-dns 和 local 扩展授权类型。也可以使用其他授权类型,但可能需要加载其他授权模块。
这些授权提供商会影响哪些主机可以访问服务器的某个区域。访问可以通过主机名、IP 地址或 IP 地址范围来控制。
自 v2.4.8 起,表达式在主机需要指令中受支持。需要 ip
ip 提供程序允许根据远程客户端的 IP 地址控制对服务器的访问。当指定 Require ip ip-address 时,如果 IP 地址匹配,则允许访问请求。
完整的 IP 地址:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
允许访问的主机的 IP 地址
部分 IP 地址:
Require ip 10.1
Require ip 10 172.20 192.168.2
IP 地址的前 1 到 3 个字节,用于子网限制。
网络/网络掩码对:
Require ip 10.1.0.0/255.255.0.0
一个网络 abcd 和一个网络掩码 wxyz 用于更细粒度的子网限制。
网络/nnn CIDR 规范:
Require ip 10.1.0.0/16
与前一种情况类似,只是网络掩码由 nnn 个高位 1 组成。
请注意,上面最后三个示例与同一组主机完全相同。
IPv6 地址和 IPv6 子网可以按如下所示指定:
Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48
注意:由于 IP 地址在启动时进行解析,因此表达式不会在请求时进行评估。
来源:https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html
答案4
注意:我将其留在这里是因为其他人可能会从中受益;这不是对问题的直接回答。
例如:
需要 ip 192.168.100.0/22
有效,同时
需要 ip 192.168.100.0/22 #本地网络
失败!
重新启动 httpd 输出:
httpd.service 的作业失败,因为控制进程以错误代码退出。有关详细信息,请参阅“systemctl status httpd.service”和“journalctl -xe”。
因此,似乎此行不允许发表评论。