OpenVPN प्रदर्शन: कितने समवर्ती ग्राहक संभव हैं?


37

मैं एक क्लाइंट के लिए एक सिस्टम का मूल्यांकन कर रहा हूं जहां कई OpenVPN क्लाइंट एक OpenVPN सर्वर से कनेक्ट होते हैं। "कई" का अर्थ है 50000 - 1000000।

मैं वह क्यों करूं? ग्राहकों को एम्बेडेड सिस्टम वितरित किए जाते हैं, प्रत्येक सिस्टम के मालिक dsl रूटर के पीछे बैठे होते हैं। सर्वर को क्लाइंट्स को कमांड भेजने में सक्षम होना चाहिए। मेरा पहला अनुभवहीन दृष्टिकोण क्लाइंट को सर्वर से एक ओपेनवैन नेटवर्क के माध्यम से कनेक्ट करना है। इस तरह, सुरक्षित संचार सुरंग का उपयोग दोनों दिशाओं में किया जा सकता है।

इसका मतलब है कि सभी क्लाइंट हमेशा सर्वर से जुड़े रहते हैं। कई ग्राहक वर्षों से योग कर रहे हैं।

सवाल यह है कि क्या OpenVPN सर्वर ग्राहकों की एक निश्चित संख्या तक पहुंचने पर विस्फोट करता है? मुझे पहले से ही एक अधिकतम टीसीपी कनेक्शन नंबर सीमा के बारे में पता है, इसलिए (और अन्य कारणों से) वीपीएन को यूडीपी परिवहन का उपयोग करना होगा।

OpenVPN गुरु, आपकी क्या राय है?


क्या आप इस बारे में अपने अंतिम निष्कर्ष हमारे साथ साझा कर सकते हैं? क्या आप> 5'000 उपयोगकर्ताओं के साथ परीक्षण कर पाए हैं?
फिलिपिंस

हैलो फिलिप, हमने ओपनवीपीएन योजना को खोद दिया क्योंकि यह स्पष्ट था कि हम जमीन को छू लेंगे जो पहले कभी किसी ने नहीं छुआ है। हमने Node.js कनेक्शन प्रबंधन सर्वर के लिए SSL आधारित सामान्य टीसीपी सॉकेट कनेक्शन का विकल्प चुना।
स्टीफन मुलर

जवाबों:


25

मुझे संदेह है कि एक सेटअप जिसे पहले कभी भी बड़ा करने का प्रयास किया गया है, इसलिए जब आप कोशिश कर रहे हैं तो संभावना सीमित हो जाएगी। मैं 400 ग्राहकों के लिए वीपीएन परिनियोजन पर एक लेख पा सकता था, लेकिन पाठ से देखते हुए, लेखक ने केवल मोटे तौर पर अनुमान लगाया कि कितने ग्राहक प्रति सीपीयू चलाए जा सकते हैं और उनके सेटअप का प्रदर्शन कैसे होगा, इसके बारे में कुछ समझ का अभाव था।

आपको मुख्य रूप से इन दो बिंदुओं पर विचार करना होगा:

  1. बैंडविड्थ जो आपके डेटा ट्रांसफर का उपयोग करने जा रहे हैं, उन्हें वीपीएन सर्वर साइड पर एन्क्रिप्शन / डिक्रिप्शन की आवश्यकता होगी, सीपीयू संसाधनों की खपत

  2. OpenVPN क्लाइंट कनेक्शन सर्वर पर मेमोरी और सीपीयू दोनों संसाधनों का उपभोग करते हैं, जब कोई डेटा स्थानांतरित नहीं होता है

आज उपलब्ध किसी भी सभ्य पीसी हार्डवेयर को आसानी से ब्लोफिश या एईएस -128 के साथ गीगाबिट लिंक को संतृप्त करना चाहिए, यहां तक ​​कि $ 100 एम्बेडेड डिवाइस 100 एमबीपीएस के पास दरों में सक्षम हैं , इसलिए बैंडविड्थ की तीव्रता के कारण सीपीयू की अड़चनें किसी भी चिंता का विषय नहीं होनी चाहिए।

3600 सेकंड्स के डिफॉल्ट रीचिंग अंतराल को देखते हुए, कई 1,000,000 क्लाइंट का मतलब होगा कि सर्वर को औसतन प्रति सेकंड 278 कुंजी एक्सचेंजों को पूरा करने में सक्षम होना चाहिए। जबकि एक प्रमुख एक्सचेंज एक सीपीयू-गहन कार्य है, आप इसे ज़रूरतमंद हार्डवेयर को लोड कर सकते हैं - यदि क्रिप्टोग्राफ़िक त्वरक कार्ड आसानी से उपलब्ध हों और यह संख्या टीएलएस हैंडशेक से अधिक हो। और मेमोरी प्रतिबंध बहुत ज्यादा परेशान नहीं करना चाहिए - एक 64-बिट बाइनरी को किसी भी वर्चुअल मेमोरी प्रतिबंध का ध्यान रखना चाहिए जो आपके अन्यथा हिट होने की संभावना होगी।

लेकिन OpenVPN के साथ असली सुंदरता यह है कि आप इसे आसानी से स्केल कर सकते हैं - बस OpenVPN सर्वर की एक मनमानी संख्या सेट करें और सुनिश्चित करें कि आपके क्लाइंट उनका उपयोग कर रहे हैं (जैसे DNS राउंड-रॉबिन के माध्यम से), अपनी पसंद का डायनेमिक रूटिंग प्रोटोकॉल कॉन्फ़िगर करें (आमतौर पर यह अपनी सादगी के कारण RIP होगा) और जब तक आप पर्याप्त हार्डवेयर प्राप्त कर लेते हैं, तब तक आपका बुनियादी ढांचा ग्राहकों की एक मनमानी संख्या का समर्थन करने में सक्षम होगा।


संक्षिप्त उत्तर के लिए धन्यवाद। क्या आप ओपेनवोन का उपयोग करने के लिए विकल्प देखते हैं? मुख्य लक्ष्य सिर्फ रूटर के माध्यम से जा रहे द्विदिश संचार है।
स्टीफन मुलर

2
@ SteffenMüller यदि आपको पूर्ण स्टैक की आवश्यकता नहीं है, लेकिन केवल एक नियंत्रण चैनल है, तो बॉटनेट के समान कुछ का उपयोग क्यों नहीं करें ? कार्यान्वयन उपलब्ध हैं और SANS आसानी से उन्हें सेट करने के तरीके के बारे में एक पेपर प्रदान करता है
एक wabbit

दिलचस्प लिंक के लिए धन्यवाद। दुर्भाग्यवश, बॉट साधारण मतदान का उपयोग कर रहा है कि क्या सर्वर ने सुझाव दिया है। हालांकि यह जाने का रास्ता हो सकता है, मैं एक द्विदिश कनेक्शन स्थापित करने और रखने का तरीका खोज रहा हूं। निरंतर मतदान या तो कमांड निष्पादन में देरी या बेकार मतदान अनुरोधों के लिए एक उच्च डेटा वॉल्यूम का कारण बनता है। शायद एक स्थायी टीसीपी कनेक्शन जाने का रास्ता है?
स्टीफन मुलर

1
@ SteffenMüller बोटनेट हजारों ग्राहकों को अच्छी तरह से संभालने के लिए सिद्ध होते हैं - इस प्रकार इस पर गौर करने का मेरा सुझाव है। आपको SANS द्वारा बताए गए विशिष्ट कार्यान्वयन के साथ जाने की ज़रूरत नहीं है - वास्तव में बहुत सारे हैं। इसके अलावा, आपकी सटीक आवश्यकताओं को जाने बिना यह बताना वास्तव में मुश्किल है। टीसीपी कनेक्शन रखने वाले रखवाले निश्चित रूप से यह सुनिश्चित करने में सक्षम होंगे कि एनएटी गेटवे पर राज्य के संबंध की उम्र कम नहीं है। लेकिन आपको खुद से और सब कुछ (प्रमाणीकरण, एन्क्रिप्शन, त्रुटि से निपटने) का ध्यान रखने की आवश्यकता होगी।
वाबेट

2
BTW, ऐसा कोई कारण नहीं है जिससे आप रीगिंग अंतराल को कम नहीं कर सकते हैं (सुरक्षा ट्रेडऑफ़ है, जिसमें एक कुंजी का समझौता किया जा रहा है, जो सादे को अंतिम रीपिंग में प्रकट करेगा)। इसके अलावा, मैं पहले रूटिंग या अन्य कनेक्शन-लुक-अप विफल होने के बारे में अधिक चिंतित हूं । मेरा मतलब है, अगर ओपनवीपीएन का उद्देश्य है कि <100 कनेक्शन सक्रिय हैं, तो क्या मौका है कि कहीं कनेक्शन का एक ओ (एन) लुकअप है?
derobert

26

मैंने वास्तव में ऐसा किया है, यद्यपि "रूमाल" के साथ ही कुछ सौ रिमोट कनेक्शन समान रूप से डीएसएल रूटर्स के पीछे हैं। मैं रीज़निंग मुद्दों के बारे में बहुत अधिक टिप्पणी नहीं कर सकता, लेकिन कुछ व्यावहारिक चीजें जो मैंने रास्ते में सीखीं:

1) जब क्लाइंट्स की तैनाती करते हैं, तो सुनिश्चित करें कि आप क्लाइंट में कई वीपीएन सर्वरों को निर्दिष्ट करते हैं, vpn1.example.com, vpn2.example.com, vpn3 ..... भले ही आप इनमें से केवल एक या दो प्रदान करते हों, लेकिन आप देते हैं खुद हेडरूम। ठीक से कॉन्फ़िगर किया गया, क्लाइंट उन्हें यादृच्छिक रूप से तब तक पुन: प्रयास करता रहेगा जब तक कि वह एक काम नहीं करता।

2) हम एक कस्टम AWS VPN सर्वर छवि का उपयोग करते हैं, और मांग पर अतिरिक्त क्षमता को स्पिन कर सकते हैं, और Amazon DNS (R53) चीजों के डीएनएस पक्ष को संभालता है। यह हमारे बुनियादी ढांचे के बाकी हिस्सों से पूरी तरह अलग है।

3) सर्वर (एस) के अंत में, संभावित ग्राहकों की संख्या को सीमित करने के लिए नेटमास्क का सावधानीपूर्वक उपयोग करें। सीपीयू के मुद्दों को कम करने, एक वैकल्पिक सर्वर पर ग्राहकों को मजबूर करना चाहिए। मुझे लगता है कि हम अपने सर्वर को 300 या तो क्लाइंट तक सीमित करते हैं। यदि आप चाहें तो यह पसंद कुछ हद तक हमारी मनमानी थी - "आंत महसूस"।

4) इसके अलावा सर्वर के अंत में, आपको फायरवॉल का सावधानीपूर्वक उपयोग करना चाहिए। सरल शब्दों में, हमारे पास ऐसे कॉन्फ़िगर किए गए हैं कि क्लाइंट वीपीएन कनेक्ट कर सकते हैं, लेकिन सर्वर एक ज्ञात आईपी पते को छोड़कर सभी ssh कनेक्शनों को सख्ती से रोक देते हैं। हम ग्राहकों के लिए SSH कर सकते हैं अगर हमें कभी-कभी जरूरत पड़ती है, तो वे SSH को हमारे पास नहीं भेज सकते हैं।

5) OpenVPN पर भरोसा मत करो ग्राहक अंत में आप के लिए फिर से कनेक्ट कर रहा है। 10 में से 9 बार यह होगा, लेकिन कभी-कभी यह अटक जाता है। नियमित रूप से क्लाइंट अंत में ओपन वीपीएन को रीसेट / पुनरारंभ करने के लिए एक अलग प्रक्रिया है।

6) आपको क्लाइंट्स के लिए यूनीक कीज़ बनाने का एक तरीका चाहिए ताकि आप उन्हें कभी-कभी डिसाइड कर सकें। हम अपने सर्वर बिल्ड (PXEboot) प्रक्रिया के साथ आंतरिक रूप से उत्पन्न करते हैं। हमारे साथ कभी नहीं हुआ, लेकिन हम जानते हैं कि हम यह कर सकते हैं।

7) आपको अपने वीपीएन सर्वर कनेक्शन को प्रभावी ढंग से मॉनिटर करने के लिए कुछ प्रबंधन टूल, स्क्रिप्ट की आवश्यकता होगी।

दुर्भाग्य से ऐसा करने के बारे में बहुत अधिक सामग्री नहीं है, लेकिन यह संभव है, सावधान कॉन्फ़िगरेशन के साथ।


अंतर्दृष्टि के लिए बहुत बहुत धन्यवाद। मुझे आश्चर्य है कि पहले से ही 300 ग्राहकों के साथ आप को परेशान करने वाली समस्याओं ने ...
स्टीफन मुलर

स्पष्ट करने के लिए - उन्होंने नहीं किया है, लेकिन मैं इसे ट्रैक नहीं कर रहा हूं ....: - / "300" नंबर उचित लगा। अगर हमें समस्या है तो हम AWS छवि को एक बड़े उदाहरण के रूप में टक्कर देंगे। मैंने पहले कभी किसी सर्वर पर उस कई कनेक्शन के करीब नहीं लिया है, शायद केवल लगभग 100 अधिकतम, लेकिन हम कई सर्वर चलाते हैं और वे लगभग खुले रूप से एक ज्ञात सूची से गंतव्य का चयन करते हैं।
एसीसी

क्या आप ऐसा करने के बारे में कोई और विवरण साझा कर सकते हैं: "5) ग्राहक अंत तक आपके लिए पुन: कनेक्ट करने वाले OpenVPN पर भरोसा न करें। यह 10 में से 9 बार होगा, लेकिन कभी-कभी यह अटक जाता है। एक अलग प्रक्रिया है। नियमित रूप से क्लाइंट एंड पर ओपन वीपीएन को रीसेट / रीस्टार्ट करें। "
डग

क्षमा करें कि नौकरी 4.5 साल पहले (!) याद नहीं है, लेकिन लगभग निश्चित रूप से प्रक्रिया सूची में से कुछ को मार डालो, फिर सेवा पुनरारंभ करें।
ऐच

(मैं एक वीपीएन सर्वर पर वर्तमान में लगभग 400 उपकरणों के साथ एक अनुकरणीय सेटअप करता हूं) आपको यह निर्णय लेने की आवश्यकता है कि वीपीएन तक नहीं पहुंचा जा सकता है, टाइमआउट या अस्वीकार कर दिया गया है। यादृच्छिक रिट्रीवल अंतराल न हमेशा के लिए आपकी मदद करेगा और केवल यातायात उत्पन्न करेगा। समस्या के आधार पर आपको या तो क्लाइंट पर फ़ायरवॉल / डीएसएल पर कुछ करना होगा, जिसे आप आमतौर पर नहीं कर सकते हैं, और बाद में सिस्टम को स्लीप फेज़ "meh, ट्रांसफर डेटा बाद में" भेज सकते हैं, या यदि समस्या वीपीएन सर्वर की ही है । आप अनुमान लगा सकते हैं कि लॉग के माध्यम से और उसी के आधार पर निर्णय ले सकते हैं। rekeying हमारे लिए एक समस्या नहीं है (अभी तक)।
डेनिस नोल्टे

3

अपडेट 2018

यह सुनिश्चित नहीं है कि 2012 के बाद से सभी क्या बदल गया है। बस 2018 में मेरे अनुभव के अनुसार एक अपडेट देना चाहता था। हमने ओप सेटअप के समान एक ओपनवैप नेटवर्क तैनात किया है। हमारे समापन बिंदु एम्बेडेड उपकरणों के बजाय पूर्ण विकसित लिनक्स पीसी हैं। प्रत्येक समापन बिंदु पर उस साइट के लिए सूचना और अलार्म प्रदर्शित करने के लिए उपयोग किया जाने वाला एक मॉनिटर होता है और हमारा सर्वर हमें सभी बिंदुओं में रिमोट के लिए एक बिंदु की अनुमति देता है। नेटवर्क अत्यधिक सक्रिय नहीं है, लेकिन कभी-कभी 5-10 दूरस्थ सत्र एक साथ होते हैं।

एक सिंगल कोर और 2 जीबी की रैम के साथ एज़्योर इमेज पर लगभग 100 क्लाइंट्स पर ओपनवीएनपी की वर्तमान बिल्ड का उपयोग करते हुए हम औसतन लगभग 0.7% मेमोरी का उपयोग करते हैं और सीपीयू का उपयोग लगभग हमेशा 0% के आसपास होता है। इस छोटे परीक्षण के लिए मुझे जो कुछ मिला, उसके आधार पर मैंने एक ही सर्वर को सभ्य चश्मे के साथ आसानी से 50000 समवर्ती संभाल लिया अगर इसमें राम का समर्थन होता। यदि राम का उपयोग रैखिक रूप से बढ़ाया जाता है, तो 16gb 50000 उपयोगकर्ताओं को एक समर्पित ओपनवीएनएन मशीन पर पर्याप्त अतिरिक्त संभालने में सक्षम होगा।

हम यह कहने के लिए पर्याप्त बड़े पैमाने पर नहीं हैं कि महत्वपूर्ण आत्मविश्वास के साथ लेकिन मैं अभी हाल ही में एक अपडेट देना चाहता था जब मूल रूप से हमारे नेटवर्क को तैनात करते हुए मुझे यह मिला और इस पैमाने पर बहुत अधिक संसाधन उपयोग की उम्मीद थी। अब, मुझे विश्वास है कि इसे चलाने वाले सीपीयू में हार्डवेयर एन्क्रिप्शन होता है और मुझे यकीन नहीं है कि किस बिंदु पर ट्रैफ़िक वार को ओवरलोड किया जाएगा, लेकिन एंडपॉइंट्स के लिए जो बहुत संवाद नहीं करते हैं, यह एक मुद्दा नहीं होना चाहिए।

1000000 पर आपको एक मशीन पर 200GB RAM की आवश्यकता होगी (यदि अतिरिक्त रूप से रैखिक रूप से स्केल की गई है) जबकि यह संभव है, मैं इस बिंदु पर सोचूंगा कि आप 64gb के साथ 5 मशीनें चाहते हैं ताकि आपके पास एक भी बिंदु न हो असफलता का। यह महत्वपूर्ण मुद्दों के बिना 1 या 2 मशीनों के रखरखाव, पुनरारंभ और प्रतिस्थापन की अनुमति देनी चाहिए।

मेरे राम का अनुमान संभावित रूप से ओवरकिल है क्योंकि मैं पूरे ओपनवैप उपयोग को ग्राहकों की संख्या से विभाजित कर रहा हूं जहां केवल उस हिस्से का एक हिस्सा ग्राहकों के कारण है।

हमने शुरू में एक साल में 74 समापन बिंदु जोड़े हैं। मुझे उम्मीद है कि उस संख्या में काफी वृद्धि जारी रहेगी और अगर हम एक अच्छे स्तर पर पहुंचते हैं तो एक और अपडेट करेंगे।


क्या आप ऐसा करने के बारे में कोई और जानकारी साझा कर सकते हैं: "5) इस पर भरोसा न करें, मुझे ऊपर दिए गए थ्रेड पर टिप्पणी नहीं करने देंगे, लेकिन मैं इसका जवाब देना चाहता था: OpenVPN आपके लिए क्लाइंट अंत में पुन: कनेक्ट कर रहा है। 9 10 में से कई बार यह होगा, लेकिन कभी-कभी यह अटक जाता है। नियमित रूप से क्लाइंट के अंत में ओपन वीपीएन को रीसेट / पुनरारंभ करने के लिए एक अलग प्रक्रिया है। " - डग 18 मई 17 को 17:12
क्रेगज

एक चरित्र सीमा मारो। ऐसा करने के लिए पर्यवेक्षक का उपयोग करें। इसे हर 6-12h पर स्वचालित रूप से पुनः आरंभ करें
क्रेगज

1

मैं एक समान समस्या देख रहा हूं, हालांकि ग्राहकों की संख्या सैकड़ों में होगी शायद हजारों की संख्या में।

मुझे लगा कि मैं सभी ग्राहकों को हर समय कनेक्ट नहीं रख सकता।

मैं यादृच्छिक समय अंतराल पर ग्राहकों पर ओपनवीपीएन डेमॉन शुरू करने की सोच रहा हूं ताकि वे जांच कर सकें कि क्या वे मतदान कर रहे थे। अगर वे थे तो उन्हें एक ईमेल या कुछ और भेजना है जो वे ऑनलाइन हैं और जीवित पैकेट को कुछ समय के लिए भेजते हैं ताकि मैं उनसे जुड़ सकूं।

अगर कुछ समय के लिए यातायात नहीं होता है तो डेमन को रोक दिया जाएगा।

मैं अभी जिस समस्या का सामना कर रहा हूं वह यह है कि वर्तमान में जुड़े वीपीएन ग्राहकों की सूची प्राप्त करना असंभव लगता है ...


1
आप ओपेनवैन स्टेटस लॉग के माध्यम से कनेक्टेड क्लाइंट की एक वर्तमान सूची प्राप्त कर सकते हैं। वहाँ आप वर्तमान सर्वर से सभी जुड़े हुए ips देखते हैं।
Fa11enAngel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.