अपने सभी नियमों के साथ एक iptables श्रृंखला हटाएं


31

मेरे पास कई नियमों के साथ एक श्रृंखला है जैसे:

> :i_XXXXX_i - [0:0]
> -A INPUT -s 282.202.203.83/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.62.253/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.60.62/32 -j i_XXXXX_i 
> -A INPUT -s 224.93.27.235/32 -j i_XXXXX_i 
> -A OUTPUT -d 282.202.203.83/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.62.253/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.60.62/32 -j i_XXXXX_i 
> -A OUTPUT -d 224.93.27.235/32 -j i_XXXXX_i

जब मैं इस श्रृंखला को हटाने की कोशिश करूं:

iptables -X XXXX

लेकिन त्रुटि मिली (पहले iptables -F XXXXX की कोशिश की):

iptables: बहुत सारे लिंक।

क्या एक बार कमांड द्वारा चेन को हटाने का एक आसान तरीका है?


2
मैं पहले कभी नहीं की तरह iptables बार देखा है जब फ्लश करने की कोशिश कर रहा।
टॉम ओ'कॉनर

बस उत्सुक ... कैसे कई नियम "कई" है?
लद्दादरा

1
2 कई कई हैं :) अगर मैं पहले नियमों को हटाने की कोशिश करता हूं, तो यह कई बार टाइप करना पसंद करेगा: iptables -D OUTPUT -d XXX / 32 -j i_XXXXX_i
timy

3
इसे आजमाएँ:iptables-save | grep -v i_XXXXX_i | iptables-restore
स्टीवन मंडे

@StevenMonday उत्तर के रूप में क्यों नहीं लिखा जाता है, यह सबसे उपयोगी है (विकल्प फ़ाइल और संपादन फ़ाइल के माध्यम से ऐसा करें)। केवल एक चीज जो इसे नहीं
हटाती है

जवाबों:


38

जब आप '-J CHAINTODELETE' के नियमों को संदर्भित कर रहे हैं, तो आप जंजीरों को नहीं हटा सकते। अपनी श्रृंखला (लिंक) को संदर्भित कर रहा है, और उसे हटा दें। इसके अलावा, फ्लश तो मार डालो।

-एफ, --फ्लश [श्रृंखला]

चयनित श्रृंखला को फ्लश करें (यदि कोई नहीं दिया गया है तो तालिका में सभी श्रृंखलाएं)। यह एक-एक करके सभी नियमों को हटाने के बराबर है।

-X, -डेली-चेन [चेन]

निर्दिष्ट वैकल्पिक उपयोगकर्ता-परिभाषित श्रृंखला को हटा दें। श्रृंखला का कोई संदर्भ नहीं होना चाहिए। यदि वहाँ हैं, तो आपको हटाए जाने वाले नियमों को श्रृंखला को हटाने से पहले हटाना या बदलना होगा । श्रृंखला खाली होनी चाहिए, अर्थात कोई नियम नहीं होना चाहिए। यदि कोई तर्क नहीं दिया जाता है, तो यह तालिका में प्रत्येक गैर-निर्मित श्रृंखला को हटाने का प्रयास करेगा।


मैं सीधे श्रृंखला को हटाने का एक तरीका खोजना चाहता हूं (जिसमें कई '-j CHAINTODELETE' रेफरी नियम) हैं, लेकिन आपके उत्तर से, यह असंभव लगता है :(
टिम्पी

1
@timy StevenMonday की टिप्पणी श्रृंखला के किसी भी संदर्भ को हटा देगी। शायद आदर्श नहीं, लेकिन करीब करीब।
जेफ फेरलैंड

12

यह संभावित रूप से विषय है, लेकिन मैंने इस पोस्ट को ढूंढने के बाद यह किया है! कुछ उपयोग मामलों के लिए iptables -D विकल्प उपयोगी हो सकता है। चूंकि यह आपको एए के साथ प्रोग्रामेटिक रूप से जोड़े गए नियमों को स्पष्ट करने की अनुमति देता है (यदि आप ठीक से जानते हैं कि आपने उन्हें कैसे जोड़ा है)।

उदाहरण के लिए

    iptables -N MYCHAIN
    iptables -A INPUT -i interface -j MYCHAIN
    iptables -A MYCHAIN -j ACCEPT

के साथ उलटा हो सकता है

   iptables -D INPUT -i interface -j MYCHAIN
   iptables --flush MYCHAIN
   iptables -X MYCHAIN

8

आपको दो चरणों की आवश्यकता है, लेकिन यह इसे एक कमांड में करता है ।

एक फ़ाइल बनाएं, और इसे इसमें रखें।

# Empty the entire filter table
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

फ़ाइल को "स्पष्ट-सभी-नियम" के रूप में सहेजें। अब, यह कमांड करें:

iptables-restore < clear-all-rules

अब आप इसे केवल एक कमांड से कभी भी साफ़ कर सकते हैं।


1
+1 यह वास्तव में क्लीन fw कॉन्फिग के साथ शुरू करने का सबसे तेज़ तरीका है।
dr01

6

यहाँ एक वैकल्पिक योजना है। इसमें तीन कमांड शामिल हैं, एक नहीं, बल्कि भाग्य के साथ, यह काम करना चाहिए।

iptablesफ़ाइल के लिए अपना नियम डंप करें :

iptables-save > /tmp/iptables.txt

अपमानजनक श्रृंखला के (और संदर्भ के) सभी उपयोगों को निकालें:

sed -i '/i_XXXXX_i/d' /tmp/iptables.txt

फिर नियम को फिर से लोड करें:

iptables-restore < /tmp/iptables.txt && rm /tmp/iptables.txt

0

इन लाइनों के साथ कुछ भी किसी भी तरह से iptables नीचे लेने के बिना एक पंक्ति में उन सभी को मिल जाएगा।

for chain in `iptables -L |grep i_XXXXX_i|awk '{ print $2 }'`; do iptables -X $chain; done

0

Iptables मैन फाइल में एक विकल्प है -S

एस, - सूची-नियम [श्रृंखला] चयनित श्रृंखला में सभी नियमों को प्रिंट करें। यदि कोई श्रृंखला चयनित नहीं है, तो सभी श्रृंखलाएं iptables-save की तरह प्रिंट की जाती हैं। प्रत्येक दूसरे iptables कमांड की तरह, यह निर्दिष्ट तालिका पर लागू होता है (फ़िल्टर डिफ़ॉल्ट है)।

का उपयोग करके iptables -S | grep <CHAINNAMEHERE>। उदाहरण के लिए:

root @ root: ~ # iptables -S | grep TRAFFICLOG

-एन ट्रैफिकलॉग

-ए फॉरवर्ड -i eth0 -j TRAFFICLOG

फिर आप देख सकते हैं कि कौन से नियम तालिका से श्रृंखला के विलोपन को रोक रहे हैं। को छोड़कर प्रत्येक नियम के माध्यम से जाना ( iptables -N <CHAINNAMEHERE>और का उपयोग करके यह नियम हटाना -Dविकल्प

-D, --delete चेन rulenum चयनित श्रृंखला से एक या अधिक नियम हटाएं। इस आदेश के दो संस्करण हैं: नियम को श्रृंखला में एक संख्या के रूप में निर्दिष्ट किया जा सकता है (पहले नियम के लिए 1 पर शुरू) या मिलान करने के लिए एक नियम।

उदाहरण के लिए iptables -D FORWARD -i eth0 -j TRAFFICLOG। आपके द्वारा अपनी श्रृंखला के लिए प्रत्येक नियम को हटाने के बाद -F, विकल्प के साथ श्रृंखला को फ्लश करें iptables -F <CHAINNAMEHERE>

-एफ, --फ्लश [श्रृंखला] चयनित श्रृंखला को फ्लश करें (यदि कोई नहीं दिया गया है तो तालिका में सभी श्रृंखलाएं)। यह एक-एक करके सभी नियमों को हटाने के बराबर है।

फिर -Xविकल्प के साथ अपनी श्रृंखला हटाएं ,iptables -X <CHAINNAMEHERE>

-X, --delete-chain [चेन] निर्दिष्ट उपयोगकर्ता द्वारा परिभाषित वैकल्पिक उपयोगकर्ता को हटाएं। श्रृंखला का कोई संदर्भ नहीं होना चाहिए। यदि वहाँ हैं, तो आपको हटाए जाने वाले नियमों को श्रृंखला को हटाने से पहले हटाना या बदलना होगा। श्रृंखला खाली होनी चाहिए, अर्थात कोई नियम नहीं होना चाहिए। यदि कोई तर्क नहीं दिया जाता है, तो यह तालिका में प्रत्येक गैर-निर्मित श्रृंखला को हटाने का प्रयास करेगा।

Iptables एक जटिल उपकरण सेट है जिससे एक आदर्श ट्यूटोरियल की आवश्यकता होती है। आप www.iptables.info पर एक कोशिश कर सकते हैं


0

यह जंजीरों को थूक देगा और उन्हें हटा देगा

for i in $(iptables -S | awk '{print $2}' | uniq ); do iptables -F $i && iptables -Z $i && iptables -X $i  ; done

0

मैंने पाया है कि आप /etc/iptables/rules.v4 में नियम फ़ाइल को संपादित करके नियमों और श्रृंखला को हटा सकते हैं। यदि आप इस फ़ाइल में अवांछित श्रृंखला को हटाते हैं और फिर iptables को फिर से लोड करते हैं, तो आपको iptables -L करते समय श्रृंखला को नहीं देखना चाहिए।


यह फ़ाइल केवल कुछ लिनक्स वितरणों पर मौजूद है, और फिर केवल कुछ लिनक्स वितरणों के कुछ संस्करणों पर ।
माइकल हैम्पटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.