नवीनतम लिनक्स वितरण में / etc फ़ोल्डर में काफी कुछ उपहार हैं, लेकिन कुछ उन्हें सक्षम रूप से उपयोग करते हैं। यहां मैं डेबियन के नवीनतम स्थिर संस्करण के संबंध में उनमें से कुछ के बारे में बात करूंगा, और बैकअप चैनल पर स्विच करने के कार्यान्वयन का एक उदाहरण दूंगा।
एक तुच्छ ऑटो-स्विच को खोजने के सभी प्रयास 1-2 लिपियों का एक गुच्छा "खुद के लिए" लिखे गए हैं और बहुत विन्यास योग्य नहीं हैं। उनमें से कोई भी dhcp से जुड़ा नहीं था, जिसका अर्थ है कि प्रदाता की ओर से किसी भी हेरफेर को सेटिंग्स में हस्तक्षेप की आवश्यकता होती है। मैंने खुद एक समय में इन्हें लिखा था, लेकिन अब मैंने इसे नई प्रणाली पर खूबसूरती से डिजाइन करने का फैसला किया - जैसा कि डेबियन डेवलपर्स का इरादा था, अर्थात्, कॉन्फ़िगरेशन फ़ाइलों को बदलना, अपनी खुद की स्क्रिप्ट जोड़ना और जो सिस्टम हमें प्रदान किया गया है, उसे छूना नहीं।
तो हमारे पास है:
- दो प्रदाताओं से दो केबल, दोनों dhcp पर आईपी जारी करते हैं
- तीन नेटवर्क कार्ड के साथ डेबियन मट्ठा चलाने वाला एक ताजा इकट्ठे सर्वर (शायद मैं बाद में और जोड़ूंगा)
- यह इच्छा कि इंटरनेट गायब न हो (काम रुकता नहीं है!)। संतुलन, आदि। बाद के लिए छोड़ दें।
पहली नज़र में तर्क सरल है:
- हम अलग-अलग इंटरफेस के माध्यम से कुछ मेजबान को पिंग करते हैं
- अगर पिंग अस्थिर है, तो बैकअप चैनल पर स्विच करें।
यह केवल कार्यान्वयन में था कि लक्ष्य को यथासंभव सब कुछ लचीला करने के लिए निर्धारित किया गया था, उदाहरण के लिए, संभावित प्रदाताओं की संख्या को सीमित करने के लिए नहीं और बाद में पुनर्संरचना के लिए न्यूनतम आंदोलनों को करना।
पहले, आइए देखें कि सिस्टम में पहले से किस प्रकार के बन्स हैं।
/ Etc / नेटवर्क फ़ोल्डर में, हम इंटरफेस फ़ाइल और if-down.d, if-post-down.d, if-pre-up.d, if-up.d फ़ोल्डरों में रुचि रखते हैं।
root@ns:/etc/network
Ifup / ifdown के माध्यम से इंटरफेस में हेरफेर करने पर, रन-पार्ट्स फ़ोल्डरों पर सेट किए जाते हैं और निम्न वातावरण चर उनमें स्क्रिप्ट के लिए सुलभ होते हैं: IFACE, LOGICAL, ADDRFAM, METHOD, MODE, PHASE, MODE, VERBOSITY, PATH
जब सिस्टम शुरू होता है, तो if-pre-up.d फ़ोल्डर से स्क्रिप्ट पहले चलाए जाते हैं (प्रत्येक इंटरफ़ेस के लिए एक बार, लेकिन इससे पहले कि वे IFACE = ”- सभी” पर आते हैं, तो इंटरफ़ेस उठाए जाते हैं और if-up.d और IFACE फ़ोल्डर से स्क्रिप्ट चलाए जाते हैं = "- सभी" पहले से ही अंत में आता है। ifup के साथ, ethX केवल ethX (".all" के बिना) के लिए एक बार लॉन्च किया जाता है। इसी तरह, if-down.d और if-post-down.d जब ifdown और system shutdown।
सिस्टम आपको प्रत्येक ऑपरेशन के लिए और प्रत्येक इंटरफ़ेस के लिए एक स्क्रिप्ट असाइन करने की अनुमति देता है, लेकिन 20 में से हर 10 स्क्रिप्ट में समान परिवर्तन करने के लिए मेरी योजनाओं में शामिल नहीं किया गया था, इसलिए हम एक बड़ी स्क्रिप्ट लिखेंगे और उस पर सभी चार फ़ोल्डरों से सिमलिंक की व्यवस्था करेंगे। आप समझ सकते हैं कि यह पर्यावरण चर से कहां लॉन्च किया गया है।
हालाँकि, हमें अभी भी गेटवे की जानकारी जानना आवश्यक है जो कि dhcp से आई है। इस मामले के लिए, स्क्रिप्ट /etc/dhcp/dhclient-enter-hooks.d और /etc/dhcp/dhclient-exit-hooks.d के साथ फ़ोल्डर भी हैं
स्टार्टअप अनुक्रम निम्नानुसार है:
- पोल dhcp सर्वर
- dhclient-enter-hooks.d फ़ोल्डर की सामग्री को लॉन्च किया
- कॉन्फ़िगर नेटवर्क पैरामीटर (आईपी, डीएनएस, गेटवे, ...)
- dhclient-exit-hooks.d फ़ोल्डर की सामग्री को लॉन्च किया
स्क्रिप्ट में विभिन्न उपयोगी चर (dhcp सर्वर से आए पैरामीटर) की भी पहुंच है, जिनमें से कुछ को हमें सहेजना होगा।
कई शाम के बाद, निम्नलिखित हुआ:
सभी स्क्रिप्ट / आदि / नेटवर्क / स्क्रिप्ट फ़ोल्डर में हैं। विभिन्न फ़ोल्डरों से सहानुभूति होती है
सेटिंग्स - / etc / डिफ़ॉल्ट / नेटवर्क-स्क्रिप्ट
अस्थायी फाइलें डाल / var / lib / dhcp
लॉग फ़ाइल /var/log/network-scripts.log पर लिखे जाते हैं
सेटिंग्स
यहां सब कुछ स्पष्ट होना चाहिए। Interfaces LAN, WAN को आप जितना चाहें उतना जोड़ सकते हैं। WAN सूची में, पहली सर्वोच्च प्राथमिकता है, फिर अवरोही क्रम में।
कार्यों के साथ अलग फ़ाइल।
यहाँ हमारे पास है:
- / etc / डिफ़ॉल्ट / नेटवर्क-स्क्रिप्ट से आयात सेटिंग्स
- लॉगिंग (लॉग, चेतावनी),
- काम के मापदंडों और परिणामों के लॉग में रिकॉर्डिंग के साथ आदेशों का शुभारंभ
- update_local_redirect () 80 अतीत के पारदर्शी प्रॉक्सी को पोर्ट करने के लिए मार्ग जोड़ता है
- update_squid () स्वयं पारदर्शी प्रॉक्सी के लिए एक नियम जोड़ता है (/etc/init.d/squid3 में चलता है - यह एकमात्र सिस्टम स्क्रिप्ट है जिसे आपको प्राप्त करना था)
इसके बाद, प्रौद्योगिकी का उपयोग किया जाता है, जिसे मैंने कई साल पहले चर के साथ $ ADD और iptables के लिए $ INS के साथ आविष्कार किया था। आपको केवल एक ही स्थान पर एक नियम लिखने की अनुमति देता है, और उसके बाद केवल इन चरों को बदलते हुए इसे हटाता है।
- new_routers और new_ip_address को फ़ाइल में सहेजें (तब उन्हें समझा जाएगा)
- डिफ़ॉल्ट मार्ग केवल प्राथमिकता वाले इंटरफ़ेस के लिए अनुमत है
- बिलिंग प्रदाताओं वाली साइटों के लिए एक स्थिर मार्ग जोड़ें। मुझे प्रदाता के लॉक की आवश्यकता नहीं है, लेकिन आप इसे भी जोड़ सकते हैं DNS सर्वर द्वारा प्रमाणीकरण।
- रेनव मोड के लिए एक पुनर्संरचना जोड़ा (यदि प्रदाता में अचानक कुछ परिवर्तन होता है), लेकिन अभी तक इसका परीक्षण नहीं किया है।
फ़ायरवॉल नियम। सामान्य तालिकाओं के लिए, हम नेट-पोस्ट और प्री-डाउन में प्री-अप और पोस्ट-डाउन के समय लिखते हैं।
यह सरल है: हम प्राथमिकता के क्रम में पिंग करते हैं। सबसे अच्छा मिला - स्विच। कुछ भी हो, लॉग में लिखें।
और अंत में
सिमलिंक
/etc/dhcp/dhclient-enter-hooks.d/route-enter -> ../../network/scripts/route-enter /etc/dhcp/dhclient-exit-hooks.d/route-exit -> ../../network/scripts/route-exit /etc/network/if-pre-up.d/firewall -> ../scripts/firewall /etc/network/if-down.d/firewall -> ../scripts/firewall /etc/network/if-up.d/firewall -> ../scripts/firewall /etc/network/if-post-down.d/firewall -> ../scripts/firewall