我如何需要一个 IP 范围而不是 1 个 IP?

我如何需要一个 IP 范围而不是 1 个 IP?

我的 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”。

因此,似乎此行不允许发表评论

相关内容