如何阻止国家的IP地址

时间:2015-01-09 08:26:58

标签: .htaccess ip

我有以下代码来阻止htaccess中的单个IP地址,它可以正常工作

SetEnvIF X-Forwarded-For 182.65.209.192 DenyIP     
Order allow,deny      
Deny from env=DenyIP     
Allow from all

现在我想阻止国家/地区的IP地址访问我的网站。

我尝试了这个,但没有效果

SetEnvIF X-Forwarded-For 37.230.192.0/19 DenyIP  

SetEnvIF X-Forwarded-For 37.230.192.[0-19] DenyIP  

而不是

SetEnvIF X-Forwarded-For 182.65.209.192 DenyIP

如何阻止ip范围或子网ip(例如:37.230.192.0/19)?

2 个答案:

答案 0 :(得分:2)

SetEnvIF使用正则表达式:

http://httpd.apache.org/docs/current/en/mod/mod_setenvif.html#setenvif

您可以使用:

SetEnvIF X-Forwarded-For ^37\.230\.192\.[01][0-9]?$ DenyIP  

答案 1 :(得分:2)

您无法与CIDR地址范围匹配,您需要使用正则表达式。你想要这样的东西:

SetEnvIF X-Forwarded-For 37\.230\.(19[2-9]|2[01][0-9]|22[0-3])\.[0-9]+ DenyIP
SetEnvIf Remote_Addr 37\.230\.(19[2-9]|2[01][0-9]|22[0-3])\.[0-9]+ DenyIP
SetEnvIF X-Forwarded-For 37\.230\.2[23][0-9]\.[0-9]+ DenyIP
SetEnvIf Remote_Addr 37\.230\.2[23][0-9]\.[0-9]+ DenyIP