Bir müşterinin 1 milyondan az IP adresini (alt ağ yok) bir kara listeye koyması gereken bir durumla karşılaştım ve ağ performansı bir endişe kaynağı. IPTables kurallarının rotalardan daha az performans etkisine sahip olacağını varsaysam da, bu sadece bir varsayım.
IP adreslerini veya uzun IP adres listelerini kara listeye almak için null yönlendirme yapmak için herhangi bir sağlam kanıtı veya başka bir gerekçesi var mı? Bu durumda her şey otomatik, kullanım kolaylığı gerçekten bir sorun değil.
EDIT 26-Kasım-11
Bazı test ve geliştirmelerden sonra, bu seçeneklerden hiçbirinin işe yaramadığı anlaşılıyor. Hem rota aramalarının hem de iptables'ın kurallar arasında doğrusal aramalar yaptığı ve bu kadar fazla kuralı işlemesi çok uzun sürdüğü anlaşılıyor. Modern donanımda, 1M öğelerini iptables kara listesine koymak, sunucuyu saniyede yaklaşık 2 düzine pakete düşürüyor. Yani IPTable'lar ve boş yollar açık.
ipset
Jimmy Hedman'ın önerdiği gibi, bir sette 65536'dan fazla adresi izlemenize izin vermemesi haricinde, harika olurdu, bu yüzden birisi hakkında hiçbir fikri olmadığı sürece kullanmaya bile çalışamıyorum.
Görünüşe göre bu kadar çok IP'yi engellemenin tek çözümü, uygulama katmanında dizine alınmış bir arama yapmak. Öyle değil mi?
Daha fazla bilgi:
Bu örnekte kullanım durumu, "bilinen suçluların" bir IP adresi listesinin bir web sunucusundaki statik içeriğe erişmesini engelliyor. FWIW, Apache'leri kullanarak engelleme yapmak Deny from
da aynı derecede yavaş (eğer değilse) doğrusal bir tarama yapıyor.
FYI: Son çalışma çözümü, kara listeye karşı arama yapmak için apache'nin mod_rewrite'ını bir berkeley DB haritası ile birlikte kullanmaktı. Berkeley DB'lerin endekslenmiş yapısı, listenin O (log N) performansı ile ölçeklenmesini sağladı.