IPtables पर विफलता फ़ायरवॉल

सर्वर स्थापित नहीं करने पर नए साल की छुट्टियों में क्या करना है!



यह लेख सामान्य दृष्टिकोण का यथासंभव वर्णन करता है:

- iptables पर एक क्लस्टर बनाएं

- क्लस्टर को fwbuilder GUI के माध्यम से कॉन्फ़िगर करें

- जब कन्वर्टर-टूल्स का उपयोग करके विफलता होने पर उपयोगकर्ता कनेक्शन को बचाएं



सामान्य वातावरण जिसमें ऐसा क्लस्टर मेरे लिए काम करता है:

- बैकएंड और फ्रंटेंड सर्वर से आंतरिक नेटवर्क

- बाहरी आईपी पते को ब्लॉक करें

- लिनक्स-आधारित क्लस्टर के लिए 2 सर्वर (मेरे मामले में फेडोरा 13 x64_86 में): fw1 और fw2 मास्टर / बैकअप मोड में



क्लस्टर कार्य:

- स्थानीय नेटवर्क के लिए प्रवेश द्वार

- आईपी-पतों के बाहरी ब्लॉक पर सेवाओं का प्रकाशन



सामान्य तौर पर, यह इस तरह काम करता है:

- ucarp सेवा क्लस्टर की स्थिति पर नज़र रखती है और विफलता के मामले में आवश्यक स्क्रिप्ट खींचती है

- contrackd सेवा सर्वर के बीच कनेक्शन जानकारी को सिंक्रनाइज़ करती है

- fwbuilder iptables के लिए आवश्यक स्क्रिप्ट संकलित करता है



कट फाइल विधानसभा निर्देशों के तहत





सर्वर की तैयारी



हम fw1 और fw2 पर एक न्यूनतम सेट के साथ संकुल स्थापित करते हैं, iptables पहले से ही है।



जोड़ना:

यम स्थापित ucarp - क्लस्टर के लिए दिल की धड़कन

यम कॉनट्रैक-टूल्स - कनेक्शन ट्रैकर को स्थापित करें

yum स्थापित pssh (scp उपयोगिता के लिए)



हम / etc / sysconfig / network-script / में जाते हैं और इंटरफेस को कॉन्फ़िगर करते हैं।

उदाहरण के लिए प्रति इंटरफ़ेस केवल एक व्यक्तिगत आईपी-पता निर्दिष्ट करें:

eth0 - आंतरिक

eth3 क्लस्टर सर्वर के बीच कनेक्शन जानकारी को सिंक्रनाइज़ करने के लिए एक इंटरफ़ेस है।

सुरक्षा कारणों से, यह अनुशंसा की जाती है कि आप क्लस्टर सर्वर को सीधे इस कॉर्ड से कनेक्ट करें, जैसा कि कॉनराट्रैक प्रोटोकॉल असुरक्षित है।

बाहरी इंटरफ़ेस स्क्रिप्ट से कॉन्फ़िगर किया जाएगा।



Ucarp सेटअप



जब ucarp प्रक्रिया चल रही है, प्रत्येक सर्वर वीआरआरपी पैकेट को मल्टीकास्ट एड्रेस 224.0.0.18 पर भेजेगा

यदि सर्वर को साथी से पैकेट प्राप्त नहीं होता है, तो वह मानता है कि वह अकेला रह गया है और अपस्क्रिप्ट शुरू करता है, जो /etc/init.d/ucarp फ़ाइल में पंजीकृत है

UPSCRIPT=/usr/libexec/ucarp/vip-up





यदि सर्वर एक सक्रिय स्थिति में है और साथी से पैकेट प्राप्त करता है, जो अधिक महत्वपूर्ण है - डाउनस्क्रिप्ट शुरू होता है और बैकअप स्थिति में जाता है

DOWNSCRIPT=/usr/libexec/ucarp/vip-down





अपस्क्रिप्ट / डाउनस्क्रिप्ट स्क्रिप्ट को थोड़ी देर बाद अपडेट किया जाएगा।



अगला, वीआईपी पते को कॉन्फ़िगर करें जो एक सर्वर से दूसरे में विफलता होने पर स्थानांतरित हो जाएगा।

हमारे पास जो वीआइपी पता होगा, वह वीआरआरपी पैकेट के आदान-प्रदान के लिए आंतरिक नेटवर्क और आंतरिक नेटवर्क का प्रवेश द्वार का पता होगा।

सेटिंग्स फ़ाइलें:

/etc/ucarp/vip-common.conf





/etc/ucarp/vip-001.conf



(सैद्धांतिक रूप से कई वीआईपी पते हो सकते हैं, लेकिन एक व्यक्ति के लिए पर्याप्त है)



इस तरह, ucarp गेटवे IP पते के संक्रमण को विफल होने पर नियंत्रित करेगा।



दुर्भाग्य से, ucarp OpenBSD पर कार्प के समान नहीं है और दो समस्याओं को हल करने की आवश्यकता होगी:

- यदि विफलता, स्थानीय नेटवर्क पर सभी ग्राहकों के लिए गेटवे आईपी पते के लिए एआरपी बदलें या क्लस्टर में सर्वर के लिए एक आम मैक बनाएं

- विभाजित मस्तिष्क के जोखिम को कम करें, अर्थात। यदि संभव हो तो, ऐसी स्थिति से बचें जहां दोनों सर्वर सोचते हैं कि उनका साथी मर चुका है और मुख्य बनने की कोशिश करें।



चाप की उपयोगिता पहली समस्या को हल करने में मदद करेगी।

एक विभाजित मस्तिष्क की संभावना को कम करने के लिए सिफारिशों के रूप में, मैं पहले बॉन्डिंग में सभी कामकाजी इंटरफेस के संयोजन की सिफारिश कर सकता हूं, और फिर आंतरिक और बाहरी नेटवर्क के लिए वलान-एस को काट सकता हूं।

यह मदद करेगा अगर किसी भी इंटरफेस पर भौतिकी के लिए कुछ होता है।



Fwbuilder के साथ iptables कॉन्फ़िगर करना



Fwbuilder वेबसाइट ने नियमों को विज़ुअलाइज़ करने के लिए सुविधाजनक उपकरण के रूप में fwbuilder का उपयोग करने पर काफी विस्तृत प्रलेखन दिया है।

लेकिन fwbuilder यह जानने और समझने की आवश्यकता को समाप्त नहीं करता है कि iptables कैसे काम करता है।



उपयोग का क्रम इस प्रकार है:

- नियम बनाना

- स्क्रिप्ट का संकलन

- स्क्रिप्ट को क्लस्टर सर्वर से स्कैप के माध्यम से कॉपी करना

- ssh के माध्यम से स्क्रिप्ट चलाना



fwbuilder नियमों को सही ढंग से संकलित करता है: यह व्यक्तिगत श्रृंखलाओं का चयन करता है, यह सुनिश्चित करता है कि नियम एक-दूसरे को ओवरलैप नहीं करते हैं।

एक क्लस्टर बनाने के लिए, प्रलेखन अनुभाग पढ़ें।



हम नाम के साथ एक क्लस्टर बनाते हैं, उदाहरण के लिए, "fw-क्लस्टर", जिसमें "iptables फ़ायरवॉल" टाइप के दो ऑब्जेक्ट होंगे, उदाहरण के लिए, fw1 और fw2 (यह महत्वपूर्ण है कि नाम फ़ायरवॉल सर्वर पर "hostname -s" कमांड के परिणाम से मेल खाता है, क्योंकि । इसे बाद में स्क्रिप्ट में ध्यान में रखा जाएगा)



राज्य सिंक समूह के गुणों में, प्रकार निर्दिष्ट करें: कॉनट्रैक ताकि fwbuilder कॉनट्रैक पैकेज के लिए एक्सेस नियम जोड़ता है



हम सभी इंटरफेस को क्लस्टर्ड बनाते हैं।

यह क्लस्टर ऑब्जेक्ट बनाता है, उदाहरण के लिए:

fw- क्लस्टर: eth0: सदस्य (इंट्रानेट इंटरफ़ेस)

fw- क्लस्टर: eth1: सदस्य

fw- क्लस्टर: eth3: सदस्य



ऑब्जेक्ट fw-क्लस्टर के लिए: eth0: सदस्य, वीआरआरपी के प्रकार (फिर से एक्सेस नियमों के लिए) निर्दिष्ट करें।

अन्य ऑब्जेक्ट के लिए, प्रकार निर्दिष्ट नहीं है।



फ़ायरवॉल ऑब्जेक्ट की सेटिंग में स्क्रिप्ट टैब पर आपको "लोड iptables मॉड्यूल" को छोड़कर सभी आइटम बंद करने की आवश्यकता होती है।

यह इस तथ्य के कारण है कि संकलित स्क्रिप्ट स्वयं इंटरफेस और वलान-एस को कॉन्फ़िगर कर सकती है, लेकिन इस सुविधा का उपयोग करने के दौरान हमें कुछ बग का सामना करना पड़ा।



डिफ़ॉल्ट रूप से, fwbuilder खुद संबंधित और स्थापित कनेक्शन के लिए नियम जोड़ देगा।

संकलन के बाद, fw1.fw और fw2.fw स्क्रिप्ट दिखाई देंगी।

दूरदराज के सर्वर पर स्क्रिप्ट स्थापित करने और चलाने के लिए fwbuilder के लिए, फ़ायरवॉल ऑब्जेक्ट के इंटरफेस में से एक को प्रबंधक के रूप में चिह्नित किया जाना चाहिए।



Conntrack सेटअप



प्रलेखन में हमारे मामले के लिए एक उदाहरण सेटअप है।

प्राथमिक-backup.sh स्क्रिप्ट को ही लें

कॉन्फ़िगर करना

- "मल्टीकास्ट" अनुभाग में इंटरैक्शन इंटरफ़ेस निर्दिष्ट करें

- "एड्रेस इग्नोर" सेक्शन में, आप क्लस्टर सर्वर के स्वयं के आईपी एड्रेस के सभी कनेक्शनों को फ़िल्टर कर सकते हैं, जो फेलओवर कहीं भी नहीं जाएगा

fwbuilder अपने आप में ip-multicast एड्रेस के लिए एक्सेस नियम जोड़ देगा, इसलिए आपको इसे contrackd.conf में बदलने की आवश्यकता नहीं है।



IP पते के बाहरी ब्लॉक को कॉन्फ़िगर करना



आईपी ​​पते के बाहरी ब्लॉक की विफलता के लिए संक्रमण उसी तरह से किया जा सकता है जैसे गेटवे पते के लिए।

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



एक समाधान है - फ़ायरवॉल पर बाहरी इंटरफ़ेस के लिए एक सामान्य मैक पते का उपयोग करें।

दुर्भाग्य से, मैं किसी भी काम के समाधान को Google नहीं कर सकता था, iptables के लिए क्लस्टर मॉड्यूल को छोड़कर, मुझे खुशी होगी अगर कोई दूसरा रास्ता सुझाएगा।

एक अप्रिय परिणाम के रूप में, आपको मल्टीकास्ट मैक पते से निपटना होगा।



यह upstart और updown स्क्रिप्ट को संशोधित करने का समय है



लिपियों के बगल में, सुविधा के लिए, एक टेक्स्ट फ़ाइल (फाइलें) बनाएं जिसमें बिना मास्क के आईपी पते लाइन-बाय-लाइन लिखे हों, उदाहरण के लिए, eth1.addr.external





eth1 - बाहरी नेटवर्क इंटरफ़ेस का नाम

बाहरी पता ब्लॉक के लिए बाकी नियमों की तुलना में पहले काम करने के लिए क्लीपिप मॉड्यूल के लिए, हम इसे मेंटल टेबल में लिखते हैं



upscript


#!/bin/sh



# - fwbuilder

ROOT="/etc/fw"



# conntrackd, primary

/etc/conntrackd/primary-backup.sh primary



# fwbuilder

$ROOT/$(hostname -s).fw start



# ip-

# $2 $1 ucarp

# , ,

/sbin/ip address add "$2"/24 dev "$1"



# ip-



# /var/log/messages clusterip

iptables -t mangle -I PREROUTING -m state --state INVALID -j DROP



# , *.addr.external

for ADDRFILE in $(ls $ROOT/*.addr.external)

do

DEV=$(basename "$ADDRFILE" | awk -F "." '{print $1}')

for ADDR in $(cat $ROOT/$DEV.addr.external | grep -v ^#)

do

# ip-

/sbin/ip addr add $ADDR/24 dev $DEV

# ip-

iptables -t mangle -A PREROUTING -d "$ADDR" -i "$DEV" -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5E:00:01:01 --total-nodes 1 --local-node 1 --hash-init 0

done

done



# arp- 2 , MAC-

arping -A -c 2 -I "$1" "$2"









downscript


संक्षेप में, हम सभी क्लस्टर IP पते हटाते हैं और mangle टेबल को साफ करते हैं

#!/bin/sh

ROOT="/etc/fw"



/etc/conntrackd/primary-backup.sh backup



/sbin/ip address del "$2"/24 dev "$1"



for ADDRFILE in $(ls $ROOT/*.addr.*)

do

DEV=$(basename "$ADDRFILE" | awk -F "." '{print $1}')

for ADDR in $(cat $ADDRFILE | grep -v ^#)

do

/sbin/ip addr del $ADDR/24 dev $DEV

done

done



iptables -t mangle -F



$ROOT/$(hostname -s).fw start









उपरोक्त चरणों के परिणामस्वरूप, दोनों सर्वरों पर आप ucarp सेवा शुरू करते हैं।

सर्वरों में से एक सक्रिय हो जाएगा और अपस्क्रिप्ट शुरू हो जाएगा, जो बदले में आंतरिक और बाहरी नेटवर्क पर सभी क्लस्टर आईपी पते जुटाने चाहिए, iptables के लिए नियमों का एक सेट रोल करें।



All Articles