मैं ऐसी स्थिति में आया हूं, जहां एक ग्राहक को केवल 1 मिलियन व्यक्तिगत आईपी पते (कोई सबनेट) के तहत एक सेट को ब्लैकलिस्ट करने की आवश्यकता है, और नेटवर्क प्रदर्शन एक चिंता का विषय है। जबकि मैं अनुमान लगाता हूं कि IPTables नियमों में मार्गों की तुलना में प्रदर्शन प्रभाव कम होगा, यह केवल अनुमान है।
क्या किसी के पास IPTables या शून्य रूटिंग के पक्ष में कोई ठोस सबूत या अन्य औचित्य है जो IP पतों की लंबी सूचियों को ब्लैकलिस्ट करने के लिए समाधान के रूप में है? इस मामले में सब कुछ स्वचालित है, इसलिए आसानी से उपयोग वास्तव में एक चिंता का विषय नहीं है।
EDIT 26-Nov-11
कुछ परीक्षण और विकास के बाद, ऐसा प्रतीत होता है कि इनमें से कोई भी विकल्प व्यावहारिक नहीं है। ऐसा प्रतीत होता है कि दोनों रूट लुकअप और आईपीटेबल्स नियम के माध्यम से रैखिक खोज करते हैं, और इस कई नियमों को संसाधित करने के लिए बस बहुत लंबा समय लेते हैं। आधुनिक हार्डवेयर पर, एक iptables ब्लैकलिस्ट में 1M आइटम डालने से सर्वर लगभग 2 दर्जन पैकेट प्रति सेकंड धीमा हो जाता है। इसलिए IPTables और अशक्त मार्ग बाहर हैं।
ipset
, जैसा कि जिमी हेडमैन द्वारा सिफारिश की गई, यह बहुत अच्छा होगा, सिवाय इसके कि यह आपको एक सेट में 65536 से अधिक पतों को ट्रैक करने की अनुमति नहीं देता है, इसलिए मैं तब तक इसका उपयोग करने की कोशिश नहीं कर सकता जब तक कि किसी के पास कोई विचार न हो।
जाहिरा तौर पर यह कई आईपी को अवरुद्ध करने का एकमात्र समाधान अनुप्रयोग परत में अनुक्रमित खोज कर रहा है। क्या ऐसा नहीं है?
अधिक जानकारी:
इस उदाहरण में उपयोग मामला वेब सर्वर पर स्थिर सामग्री तक पहुंचने से आईपी पते की "ज्ञात अपराधियों" सूची को अवरुद्ध कर रहा है। एफडब्ल्यूआईडब्ल्यू, अपाचे के माध्यम से अवरुद्ध Deny from
करना समान रूप से धीमा है (यदि ऐसा नहीं है) तो यह एक रैखिक स्कैन भी करता है।
FYI करें: अंतिम कार्य समाधान ब्लैकलिस्ट के खिलाफ लुकअप करने के लिए एक बर्कले DB मानचित्र के साथ संयोजन में अपाचे के mod_rewrite का उपयोग करना था। बर्कले DBs की अनुक्रमित प्रकृति ने सूची को O (लॉग एन) प्रदर्शन के साथ स्केल करने की अनुमति दी।