Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
Log in
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
vc5 — Linux के लिए XDP/eBPF का उपयोग करने वाला एक क्षैतिज रूप से स्केलेबल Direct Server Return लेयर 4 लोड बैलेंसर | Kitploit
उपकरण/GitHubGitHub/davidcoles/vc5
क्लाउड इन्फ्रास्ट्रक्चर सुरक्षानेटवर्क सुरक्षाDevSecOpsDNS विश्लेषण
GitHubdavidcoles/vc5

vc5

Linux के लिए XDP/eBPF का उपयोग करने वाला एक क्षैतिज रूप से स्केलेबल Direct Server Return लेयर 4 लोड बैलेंसर

रिपॉजिटरी देखें
12512271 महीना पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

VC5

यह README हाल के बदलावों को दर्शाने के लिए अभी अद्यतन किया जा रहा है - कुछ जानकारी वर्तमान कोडबेस को प्रतिबिंबित नहीं कर सकती है। कोड का यह संस्करण अभी उत्पादन-तैयार नहीं है - उत्पादन के लिए v0.2 रिलीज़ का उपयोग करें

Linux के लिए एक क्षैतिज रूप से स्केलेबल Direct Server Return (DSR) लेयर 4 लोड बैलेंसर (L4LB) जो XDP/eBPF का उपयोग करता है।

यदि आपको लगता है कि यह उपयोगी हो सकता है या आपके कोई प्रश्न/सुझाव हैं, तो बेझिझक मुझसे [email protected] पर संपर्क करें या GitHub issue खोलें।

अब IPv6 और लेयर 3 पर वितरण (यानी टनलिंग) का समर्थन करता है! XVS लाइब्रेरी को इन सुविधाओं को शामिल करने के लिए अद्यतन किया गया है, और नेटवर्क नेमस्पेस से हेल्थ चेक चलाने की आवश्यकता को भी समाप्त करता है, जिससे कोड काफी सरल हो जाता है। इससे यह आवश्यकता समाप्त हो जाएगी कि सभी बैकएंड लोड बैलेंसर के साथ एक VLAN साझा करें।

कोड की वर्तमान सीमाओं के कारण प्रति-सेवा आधार पर टनलिंग सक्षम करना समर्थित नहीं है। -tunnel विकल्प का उपयोग करके एक ही योजना (IP-in-IP, GRE, FOU या GUE) के साथ लेयर 3 टनलिंग को वैश्विक रूप से सक्षम किया जा सकता है। आगे चलकर, कोड को अद्यतन किया जाएगा ताकि टनलिंग को सेवा स्तर पर कॉन्फ़िगर किया जा सके।

लेयर 2 लोड बैलेंसिंग का समर्थन जारी रहेगा - परियोजना शुरू करने का प्राथमिक कारण Facebook के Katran लोड बैलेंसर द्वारा लेयर 2 समर्थन की कमी थी।

एक नमूना IPv6/L3 कॉन्फ़िगरेशन फ़ाइल शामिल है - बेहतर दस्तावेज़ीकरण बाद में आएगा।

परिचय

VC5 एक नेटवर्क लोड बैलेंसर है जिसे पुराने हार्डवेयर उपकरणों के प्रतिस्थापन के रूप में काम करने के लिए डिज़ाइन किया गया है। यह वर्चुअल IP पते (VIP) वाली सेवाओं को बैकएंड ("वास्तविक") सर्वरों के समूहों में वितरित करने की अनुमति देता है। वास्तविक सर्वर स्वयं सेवाएँ चला सकते हैं या सर्वरों की दूसरी परत के लिए प्रॉक्सी के रूप में कार्य कर सकते हैं (जैसे HAProxy लेयर 7 HTTP राउटर/SSL ऑफलोड के रूप में काम करता है जब एप्लिकेशन-लेयर निर्णय लेने की आवश्यकता होती है)। एकमात्र आवश्यकता यह है कि VIP को प्रत्येक वास्तविक सर्वर पर लूपबैक डिवाइस पर कॉन्फ़िगर किया जाना चाहिए, जैसे: ip addr add 192.168.101.1/32 dev lo

सेवाएँ और वास्तविक सर्वर एक कॉन्फ़िगरेशन फ़ाइल में हेल्थ चेक परिभाषाओं के साथ निर्दिष्ट किए जाते हैं। जब बैकएंड सर्वर जाँच पास कर लेते हैं और कोई सेवा प्रदान करने के लिए पर्याप्त सर्वर उपलब्ध होते हैं, तो वर्चुअल IP पते BGP के माध्यम से राउटरों को विज्ञापित किए जाते हैं।

अब लेयर 2 और लेयर 3 दोनों पर ट्रैफ़िक वितरण समर्थित है। लेयर 2 वितरण के लिए आवश्यक है कि वास्तविक सर्वर लोड बैलेंसर के साथ एक VLAN साझा करें; वितरित किए जाने वाले पैकेट को प्राप्त करने पर, लोड बैलेंसर पैकेट में ईथरनेट हार्डवेयर पते अद्यतन करता है ताकि गंतव्य के रूप में वास्तविक सर्वर का MAC पता और स्रोत के रूप में अपना MAC पता उपयोग करे, और उचित इंटरफ़ेस के माध्यम से पैकेट को आगे भेजता है; यदि पैकेट VLAN टैग किए गए हैं तो 802.1Q VLAN ID भी अद्यतन करता है।

लेयर 3 वितरण के लिए पैकेटों को वास्तविक सर्वर IP पर संबोधित एक टनलिंग प्रोटोकॉल में एनकैप्सुलेट करने और एक राउटर के माध्यम से आगे भेजने की आवश्यकता होती है (जब तक कि सर्वर और लोड बैलेंसर एक VLAN साझा नहीं करते)। यदि एनकैप्सुलेट करने पर कोई पैकेट नेटवर्क के अधिकतम ट्रांसमिशन आकार से अधिक हो जाता है, तो स्रोत को उपयुक्त MTU के बारे में सलाह के साथ एक ICMP संदेश भेजा जाता है। बैकएंड सर्वरों को केवल पैकेट डीकैप्सुलेट करने की आवश्यकता होती है - लोड बैलेंसर के साथ द्विदिश टनलिंग आवश्यक नहीं है।

10Gbit/s नेटवर्क इंटरफ़ेस वाला एक सर्वर अधिकांश इंटरनेट ट्रैफ़िक की असममित प्रकृति के कारण 100Gbit/s से अधिक की egress बैंडविड्थ वाली HTTP सेवा का समर्थन करने में सक्षम होना चाहिए। छोटी सेवाओं के लिए, एक या दो साधारण वर्चुअल मशीनें संभवतः कुछ गीगाबिट/सेकंड egress ट्रैफ़िक उत्पन्न करने वाली सेवा को संभाल लेंगी।

यदि एक इंस्टेंस पर्याप्त नहीं है, तो आपके राउटर की ECMP सुविधा का उपयोग करके क्षमता को क्षैतिज रूप से स्केल करने (और अतिरेक प्रदान करने) के लिए अधिक सर्वर जोड़े जा सकते हैं। 802.3ad बॉन्डेड इंटरफ़ेस और 802.1Q VLAN ट्रंकिंग समर्थित है (examples/ निर्देशिका देखें)।

किसी कर्नेल मॉड्यूल या जटिल सेटअप की आवश्यकता नहीं है, हालाँकि सर्वोत्तम प्रदर्शन के लिए XDP नेटिव मोड समर्थन वाले नेटवर्क कार्ड ड्राइवर की अनुशंसा की जाती है (जैसे: mlx4, mlx5, i40e, ixgbe, ixgbevf, nfp, bnxt, thunder, dpaa2, qede)। पूरी सूची XDP प्रोजेक्ट के ड्राइवर समर्थन पृष्ठ पर उपलब्ध है।

लक्ष्य/स्थिति

  • ✅ एकल बाइनरी के साथ सरल परिनियोजन
  • ✅ Maglev हैशिंग एल्गोरिदम के साथ स्थिर बैकएंड चयन
  • ✅ रूट हेल्थ इंजेक्शन स्वचालित रूप से संभाला जाता है; ExaBGP जैसे अन्य सॉफ़्टवेयर चलाने की आवश्यकता नहीं
  • ✅ न्यूनतम हस्तक्षेपकारी; बैलेंसर पर iptables नियमों में किसी संशोधन की आवश्यकता नहीं
  • ✅ L3 वितरण के साथ बैकएंड सर्वरों में VIP को लूपबैक डिवाइस/टनल समाप्ति में जोड़ने के अलावा कोई संशोधन नहीं
  • ✅ हेल्थ चेक बैकएंड सर्वरों पर उनके वास्तविक पतों के बजाय VIP के विरुद्ध चलाए जाते हैं
  • ✅ HTTP/HTTPS, आधे-खुले SYN प्रोब और UDP/TCP DNS हेल्थ चेक अंतर्निहित
  • ✅ eBPF/XDP के साथ इन-कर्नेल पैकेट स्विचिंग; नेटिव मोड ड्राइवर sk_buff आवंटन से बचते हैं
  • ✅ एकाधिक VLAN समर्थन
  • ✅ कम बैंडविड्थ/विकास अनुप्रयोगों के लिए एकाधिक NIC समर्थन
  • ✅ उच्च-उपलब्धता/उच्च-बैंडविड्थ का समर्थन करने के लिए टैग/बॉन्डेड नेटवर्क डिवाइस
  • ✅ वेब कंसोल, Elasticsearch लॉगिंग (विकास में) और Prometheus मेट्रिक्स के माध्यम से अवलोकनीयता
  • ✅ IPv6 समर्थन और किसी भी प्रकार के VIP के साथ IPv4 और IPv6 बैकएंड मिश्रित करने की क्षमता
  • ✅ IP-in-IP, GRE, FOU और GUE समर्थन के साथ लेयर 3 ट्रैफ़िक वितरण

त्वरित आरंभ

सर्वोत्तम परिणामों के लिए आपको irqbalance को अक्षम/अनइंस्टॉल करना चाहिए।

आपको बैलेंसर को देने के लिए एक प्राथमिक IP चुनना होगा। इसका उपयोग BGP राउटर ID के रूप में किया जाता है।

एकल, बिना टैग वाले ईथरनेट इंटरफ़ेस वाले सर्वर पर एक सरल उदाहरण:

  • apt-get install git make libelf-dev golang-1.20 libyaml-perl libjson-perl ethtool (या आपके डिस्ट्रो का समकक्ष)
  • ln -s /usr/lib/go-1.20/bin/go /usr/local/bin/go (सुनिश्चित करें कि Go बाइनरी आपके PATH में है)
  • git clone https://github.com/davidcoles/vc5.git
  • cd vc5/cmd
  • cp config.sample.yaml config.yaml (अपनी आवश्यकताओं के अनुसार config.yaml को संपादित करें)
  • make (libbpf लाइब्रेरी को डाउनलोड करता है, बाइनरी और JSON कॉन्फ़िगरेशन फ़ाइल बनाता है)
  • ./vc5 10.1.10.100 config.json eth0 (अपने सर्वर के IP पते और ईथरनेट इंटरफ़ेस के अनुसार संशोधित करें)
  • एक वेब कंसोल डिफ़ॉल्ट रूप से आपके लोड बैलेंसर सर्वर के पोर्ट 80 पर उपलब्ध होगी
  • अपने बैकएंड सर्वरों पर लूपबैक डिवाइस में अपना VIP जोड़ें (जैसे: ip addr add 192.168.101.1/32 dev lo)
  • अपने नेटवर्क/क्लाइंट को आपके VIP के ट्रैफ़िक को लोड बैलेंसर तक भेजने के लिए कॉन्फ़िगर करें, या तो BGP के माध्यम से (कॉन्फ़िगरेशन फ़ाइल देखें) या स्टैटिक रूटिंग द्वारा

लगभग निश्चित रूप से नवीनतम GitHub रिलीज़ (x86-64 के लिए संकलित) से बाइनरी का उपयोग करना आसान है। यह उत्पादन में परीक्षण किया गया होगा इसलिए विश्वसनीय होना चाहिए। सुनिश्चित करें कि आपका कॉन्फ़िगरेशन इस संस्करण के साथ संगत है, इसके लिए टैग की गई रिलीज़ से config.pl स्क्रिप्ट का उपयोग करें (या, निश्चित रूप से, आप अपनी पसंद के अनुसार अपना स्वयं का JSON कॉन्फ़िगरेशन बना सकते हैं)।

यदि आप YAML कॉन्फ़िगरेशन फ़ाइल को अद्यतन करते हैं और JSON को पुनः उत्पन्न करते हैं (make config.json), तो आप प्रक्रिया को SIGINT (Ctrl-C) या SIGUSR2 भेजकर नए कॉन्फ़िगरेशन को पुनः लोड कर सकते हैं। SIGQUIT (Ctrl-\) या SIGTERM प्रक्रिया को BGP कनेक्शन को सुचारू रूप से बंद करके बाहर निकलने का कारण बनेगा।

LACP बॉन्डेड ईथरनेट डिवाइस के साथ एक अधिक जटिल उदाहरण, जिसमें दो इंटरफ़ेस (मेरे परीक्षण सर्वर पर 10Gbps Intel X520) शामिल हैं, नेटिव XDP ड्राइवर मोड सक्षम और टैग किए गए VLAN के साथ:

config.yaml में vlans प्रविष्टि:

vlans:
  10: 10.1.10.0/24
  20: 10.1.20.0/24
  30: 10.1.30.0/24

कमांड लाइन:

./vc5 -n 10.1.10.100 config.json enp130s0f0 enp130s0f1

टूल डाउनलोड करें