Saya telah menemukan sebuah situasi di mana seorang klien perlu memasukkan satu set daftar kurang dari 1 juta alamat IP individual (tidak ada subnet), dan kinerja jaringan menjadi perhatian. Sementara saya akan menduga bahwa aturan IPTables akan memiliki lebih sedikit dampak kinerja daripada rute, itu hanya dugaan.
Apakah ada yang punya bukti kuat atau pembenaran lain untuk memilih IPTable atau null routing sebagai solusi untuk daftar hitam daftar panjang alamat IP? Dalam hal ini semuanya otomatis, jadi kemudahan penggunaan tidak terlalu menjadi perhatian.
EDIT 26-Nov-11
Setelah beberapa pengujian dan pengembangan, tampaknya tidak satu pun dari opsi ini bisa dikerjakan. Tampaknya kedua pencarian rute dan iptables melakukan pencarian linear melalui ruleet, dan terlalu lama untuk memproses banyak aturan ini. Pada perangkat keras modern, menempatkan item 1M dalam daftar hitam iptables memperlambat server menjadi sekitar 2 lusin paket per detik. Jadi IPTable dan null rute keluar.
ipset
, seperti yang direkomendasikan oleh Jimmy Hedman, akan sangat bagus, kecuali bahwa itu tidak memungkinkan Anda untuk melacak lebih dari 65536 alamat dalam satu set, jadi saya bahkan tidak dapat mencoba menggunakannya kecuali seseorang memiliki ide.
Tampaknya satu-satunya solusi untuk memblokir banyak IP ini adalah melakukan pencarian indeks di lapisan aplikasi. Bukan begitu?
Informasi Lebih Lanjut:
Kasus penggunaan dalam kasus ini memblokir daftar "alamat yang diketahui melanggar" dari alamat IP dari mengakses konten statis di server web. FWIW, melakukan pemblokiran melalui Apache Deny from
sama lambatnya (jika tidak lebih) karena ia juga melakukan pemindaian linier.
FYI: Solusi kerja terakhir adalah menggunakan mod_rewrite apache bersama dengan peta DB berkeley untuk melakukan pencarian terhadap daftar hitam. Sifat terindeks DB berkeley memungkinkan daftar untuk skala dengan kinerja O (log N).