निम्नलिखित स्थिति: हम लगभग 2000 अंतिम उपयोगकर्ताओं के साथ स्थानीय निवासी हॉल के लिए इंटरनेट कनेक्शन का प्रबंधन करने वाले छात्रों का एक समूह हैं।
हमारे पास एक ट्रैफ़िक पॉइंट सिस्टम है, प्रत्येक MB डाउन- या लागत अंक अपलोड करता है, नए अंक घंटे द्वारा जोड़े जाते हैं। फिलहाल, हम एक उपयोगकर्ता के इंटरनेट एक्सेस को रोकते हैं जब उसने अपने सभी बिंदुओं को खर्च किया है (उसे हमारे डेबियन गेटवे राउटर पर iptables में एक REJECT नीति में रखकर)।
हम केवल उपयोगकर्ता की बैंडविड्थ को सीमित करना चाहेंगे। इसे करने का बेहतरीन तरीका क्या है?
सरल उत्तर उपयोगकर्ता के स्विच पोर्ट (ज्यादातर सिस्को उत्प्रेरक 3550 के दशक) पर एक दर-सीमा निर्धारित करना होगा। हालाँकि, यह अवांछनीय है, क्योंकि हमारे अपने नेटवर्क के अंदर और विश्वविद्यालय नेटवर्क के लिए यातायात असीमित होना चाहिए। क्या सिस्को एसओएस में एक निश्चित गंतव्य या स्रोत आईपी रेंज (इसलिए ईग्रेस और इंग्रेस) दोनों के साथ पैकेट के लिए बैंडविड्थ को सीमित करने का एक तरीका है? मुझे कुछ भी नहीं मिला।
दूसरा तरीका यह होगा कि हमारे गेटवे राउटर पर ट्रैफिक को नियंत्रित किया जाए। मेरे दिमाग में कई समाधान आते हैं:
tc या tcng - ऐसा लगता है कि दोनों के पास एक समान रूप से सिंटैक्स है और न ही प्रति-आईपी ट्रैफ़िक नियंत्रण करने के लिए अच्छी सुविधाएँ प्रदान करता है। इतने सारे लोगों के लिए समर्पित QDisc शायद राउटर को काफी धीमा कर देगा। इसके अलावा, दोनों पर प्रलेखन बहुत पुराना है।
Shorewall - लगता है कि विन्यास के लिए एक साफ सिंटैक्स है, हालांकि, मैं अनिश्चित हूं कि क्या यह ट्रैफ़िक और उपयोगकर्ताओं की इस राशि को संभाल सकता है और क्या यह प्रति-आईपी ट्रैफ़िक सीमित करने के लिए उपयुक्त है
pfSense - हमारे जैसे उद्देश्यों के लिए इच्छित OS जैसा दिखता है। हालाँकि, इसके लिए हमें अपने गेटवे राउटर को समान रूप से पुनर्स्थापित करना होगा। हमारे पास अन्य बीएसडी सिस्टम नहीं हैं और pfSense को बहुत अच्छी ट्रैफ़िक अकाउंटिंग क्षमताओं की आवश्यकता होगी (हम इस समय फप्रो-उलॉग और अलॉग-एसीटीडी का उपयोग कर रहे हैं), भी।
आपका अनुभव क्या है? कौन सा समाधान हमारी आवश्यकताओं के अनुरूप है और सबसे आसानी से बनाए रखा जा सकता है? क्या आपके पास अन्य विचार हैं?
यदि आपको हमारे सिस्टम के बारे में कोई अतिरिक्त जानकारी चाहिए, तो कृपया पूछने में संकोच न करें।
अग्रिम में धन्यवाद।
संपादित करें : मैं के साथ प्रणाली को लागू किया है iptables
और tc
।
प्रत्येक उपयोगकर्ता के पास एक / 28-सबनेट, एक वीपीएन आईपी (10.0.0.0/8 से दोनों) और एक बाहरी आईपी है, सभी को एक iptables श्रृंखला के माध्यम से रखा जाता है। इस श्रृंखला में केवल एक नियम है, एक सरल RETURN
।
हर पांच मिनट में, पायथन स्क्रिप्ट इन नियमों के बाइट काउंटरों को पढ़ती है। यह काउंटरों को रीसेट करता है और हमारे PostgreSQL डेटाबेस में उपयोगकर्ता के यातायात बिंदु खाते को अपडेट करता है।
यदि किसी निश्चित सीमा से नीचे किसी उपयोगकर्ता का पॉइंट बैलेंस कम हो जाता है, तो इस उपयोगकर्ता के लिए दो टीसी कक्षाएं बनाई जाती हैं (इनकमिंग के लिए, हमारे गेटवे राउटर पर आउटगोइंग इंटरफेस के लिए एक), इन कक्षाओं से संबंधित आईपी फिल्टर टीसी फिल्टर में दर्ज किए जाते हैं। HTB द्वारा कक्षाएं गति-सीमित हैं।
पिछली प्रणाली की तुलना में fprobe-ulog
और ulog-acctd
यह बहुत तेज़ है क्योंकि बाइट की गिनती iptables द्वारा की जाती है।
हमारे उपयोगकर्ताओं के लिए नेटवर्क की गति में काफी सुधार हुआ है।