
Bir projede şöyle bir ihtiyaç oldu: Bridge modda çalışıp belirli adreslere(1000.000 farklı ip adresi) giden istekler yereldeki bir proxy’e yönlendirilecek ve kullanıcıya uyarı gösterilecek.
Belirli adresler haricine gidecek paketlere hiç dokunulmayacak. Projede Linux kullandığımız için paket filtreleme/nat aracı olarak da Iptables(Linux ile birlikte gelen güvenlik duvarı yazılımı)kullanmak zorunda kaldık.
Proje sonucunun başarılı olabilmesi için iptables’a 1000.000 nat kuralı girmemiz gerekti, önce bir script aracılığıyla başarmaya çalıştık fakat iptables eş zamanlı olarak bir adet kural girilmesine izin verdi. Biz de 1000.000 ip adresini iptables-restore komutunun anlayacağı hale getirip
iptables-restore < black_list
komutuyla sisteme girmeye çalıştık. Bu arada sistem
“kernel: allocation failed: out of vmalloc space – use vmalloc=<size> to increase size.”
hatası vererek 100.000 den fazla kuralı kabul etmedi.
Çözüm:
grub.conf’da
kernel /vmlinuz-2..
satırının sonuna vmalloc=600MB(default’u 250MB miş gerektiği kadar arttırmak lazım) yapınca sorunumuz çözüldü ve istediğimiz sayıda kuralı iptables’a 40-50 saniye gibi kısa bir sürede girebildik.
Siz de firewall’un kural performansını test etmek isterseniz aşağıdaki rastgele ip üreteç scriptinden faydalanıp kendi kurallarınızı yazabilirsiniz.
Random ip adresi üretmek için kullandığım script:
#!/usr/bin/perl
use strict;
srand(time() ^ ($$ + ($$ << 15)));
for (1..1000000){
print join (‘.’, (int(rand(255))
,int(rand(255))
,int(rand(255))
,int(rand(255))))
, “\n”;
}
Kaynak:http://www.perlmonks.org/?node_id=389028