INPUT, FORWARD, OUTPUT चेन्स की संख्या iptables config फाइल में क्या होती है?


34

मैं निम्नलिखित विन्यास फाइल भर में आया:

# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed on Sun Apr 23 06:19:53 2006 

क्या किसी को पता है [368:102354], [0:0]और क्या [92952:20764374]मतलब है?


1
0यदि आप किसी फ़ाइल में अपना कॉन्फ़िगर सहेजना चाहते हैं तो आप उन्हें बदल सकते हैं । जब आप इसे पुनर्स्थापित करते हैं, तो यह निश्चित रूप से इसके अलावा नुकसान नहीं होगा कि यह मूल्यों को रीसेट करेगा।
टॉटर

@ यदि आप पूरी तरह से कॉन्फिग फाइल से नंबर हटाते हैं तो इससे कोई फर्क नहीं पड़ता? ऐसा लगता है कि वे एक कॉन्फ़िगरेशन के बजाय एक रिपोर्ट हैं इसलिए वे एक कॉन्फ़िगरेशन फ़ाइल में क्यों हैं?
बार्लोप

जवाबों:


34

दो मान पैकेट की संख्या और बाइट्स की संख्या के अनुरूप होते हैं जो श्रृंखला की डिफ़ॉल्ट नीति अब तक लागू की गई है ( विवरण के लिए इस अन्य उत्तर को देखें)।

iptables-save.cअपने आप में स्रोत कोड के अनुसार :

/* Dump out chain names first,
 * thereby preventing dependency conflicts */
for (chain = iptc_first_chain(h);
     chain;
     chain = iptc_next_chain(h)) {

    printf(":%s ", chain);
    if (iptc_builtin(chain, h)) {
        struct xt_counters count;
        printf("%s ", iptc_get_policy(chain, &count, h));
        printf("[%llu:%llu]\n", 
               (unsigned long long)count.pcnt, 
               (unsigned long long)count.bcnt);
    } else {
        printf("- [0:0]\n");
    }
}

और, संरचना xt_countersनिम्नानुसार परिभाषित की गई है include/linux/netfilter/x_tables.h:

struct xt_counters {
    __u64 pcnt, bcnt; /* Packet and byte counters */
};

यह भी ध्यान दें कि चेन जो बिल्ट नहीं हैं, [0:0]वैसे भी चिह्नित हैं (यह कोड में एक क्विक है)।


1
मुझे प्रोजेक्ट सोर्स कोड से इनसाइट के साथ आपका उत्तर पसंद है। आपका बहुत बहुत धन्यवाद।
बोडो ह्यूगो बारविच

9

दो नंबर क्रमशः पैकेट और बाइट की संख्या है जो कि डिफ़ॉल्ट नीति पर लागू की गई है (श्रृंखला द्वारा देखे गए पैकेट / बाइट की कुल संख्या नहीं)। उन्हें श्रृंखला के लिए डिफ़ॉल्ट नीति के साथ निर्दिष्ट किया जाता है - इसका कारण यह है कि वे तार्किक रूप से वहां हैं, इसलिए नहीं कि कोई बेहतर जगह नहीं थी।

डिफ़ॉल्ट नीति वह क्रिया है जो पैकेट पर की जाती है जब कोई समाप्ति लक्ष्य के साथ कोई नियम मेल नहीं खाता है। समाप्ति लक्ष्य वह है जो वर्तमान शीर्ष-स्तरीय श्रृंखला में नियमों के आगे के प्रसंस्करण को रोकता है। उदाहरण के लिए, ACCEPT या DROP जैसे लक्ष्य समाप्त हो रहे हैं, जबकि लॉग नहीं है।

इस प्रश्न में उदाहरण कॉन्फ़िगरेशन में INPUT श्रृंखला में अंतिम नियम सब कुछ DROP है, इसलिए डिफ़ॉल्ट नीति कभी लागू नहीं होगी और काउंटर सामान्य रूप से 0. नॉन-जीरो मान (368 पैकेट, 102354 बाइट्स) पर बने रहने को समझाया जा सकता है। "ड्रॉप-ऑल" नियम से पहले होने वाले ट्रैफिक को श्रृंखला में जोड़ा गया था।

गैर-अंतर्निहित चेन में परिभाषा के अनुसार डिफ़ॉल्ट नीति नहीं हो सकती है, क्योंकि डिफ़ॉल्ट कार्रवाई हमेशा उस श्रृंखला पर वापस लौटना है जिसे वे कहा जाता था, इसीलिए उनके पास हमेशा 0 के काउंटर मान होते हैं।


आप इसे iptables-save (manpage) के प्रलेखन में जोड़ने पर विचार कर सकते हैं ... क्या आपको नहीं लगता? :-)
पेरेंट

मैंने अपने iptables का उपयोग करके नियमों को बचाया iptables-saveऔर मुझे मिला: :INPUT DROP [0:0]और :OUTPUT ACCEPT [249529:173953830]। इसलिए, मुझे लगता है कि कॉन्‍फ़िगर फ़ाइल बनाने वाले ने उन नंबरों पर ध्यान नहीं दिया। लेकिन अब, सब कुछ बहुत स्पष्ट है।
मिखाइल मोरफिकोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.