Dalam konfigurasi Apache saya, saya ingin mengatur variabel lingkungan jika saya melihat bahwa pengunjung berasal dari rentang IP tertentu. Saat ini saya melakukannya dengan cara ini:
SetEnvIfNoCase Remote_Addr "^194\.8\.7[45]\." banned=spammer-ip
SetEnvIfNoCase Remote_Addr "^212\.156\.170\." banned=spammer-ip
Yang saya inginkan adalah sesuatu seperti ini:
SetEnvIfIpRange 194.8.74.0/23 banned=spammer-ip
SetEnvIfIpRange 212.156.170.0/24 banned=spammer-ip
... karena saya berpikir bahwa mengubah alamat IP menjadi sebuah string dan kemudian melakukan ekspresi reguler adalah pemborosan total sumber daya.
Saya bisa melakukan
Deny From 194.8.74.0/23
... tapi kemudian saya tidak mendapatkan variabel yang bisa saya periksa di halaman kesalahan 403 saya - untuk menemukan alasan mengapa akses telah ditolak.
Ada saran yang mungkin saya lewatkan? Apakah ada MOD Apache2 yang dapat mengatur variabel lingkungan berdasarkan "IP Address Ranges"?
Anda dapat menggunakan format CIDR dengan Apache 2.4 yang memungkinkan
<If>
:sumber
Ini sebenarnya bukan solusi untuk beralih dari RegExp ke IP Ranges , tetapi saya menemukan skrip yang bagus yang diselenggarakan oleh Google untuk mengubah rentang IP ke regexp yang cocok. Dapat bermanfaat bagi sebagian dari Anda, juga ...
Bagaimana cara mengecualikan lalu lintas dari berbagai alamat IP?
[Memperbarui]
Sepertinya Google telah menghapus Alat Alamat IP (atau setidaknya tautan yang mereka miliki di situs mereka rusak), tetapi ada alat serupa di sini: http://www.analyticsmarket.com/freetools/ipregex
sumber