ตัวเลขในกลุ่ม INPUT, FORWARD, FORPARD, OUTPUT หมายถึงอะไรในไฟล์กำหนดค่า iptables


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หากคุณต้องการบันทึกการกำหนดค่าของคุณในไฟล์ ที่จะไม่เจ็บยกเว้นว่าแน่นอนมันจะรีเซ็ตค่าเมื่อคุณคืนค่า
Totor

@Totor สร้างความแตกต่างหรือไม่หากคุณลบตัวเลขทั้งหมดออกจากไฟล์ปรับแต่ง ดูเหมือนว่าพวกเขาเป็นรายงานมากกว่าการกำหนดค่าดังนั้นทำไมพวกเขาถึงอยู่ในไฟล์การกำหนดค่า
barlop

คำตอบ:


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
ฉันชอบคำตอบของคุณด้วย Insight จากรหัสแหล่งที่มาของโครงการ ขอบคุณมาก.
Bodo Hugo Barwich

9

ตัวเลขสองจำนวนคือจำนวนของแพ็กเก็ตและไบต์ตามลำดับที่นโยบายเริ่มต้นถูกนำไปใช้กับ (ไม่ใช่จำนวนรวมของแพ็กเก็ต / ไบต์ที่เห็นโดยเชน) พวกเขาถูกระบุพร้อมกับนโยบายเริ่มต้นสำหรับลูกโซ่ - นี่เป็นเพราะพวกเขาอยู่ในระบบมีเหตุผลไม่ใช่เพราะไม่มีสถานที่ที่ดีกว่า

นโยบายเริ่มต้นคือการกระทำที่ดำเนินการบนแพ็กเก็ตเมื่อไม่มีกฎที่ตรงกับเป้าหมายที่ยกเลิก เป้าหมายการยกเลิกคือสิ่งที่หยุดการประมวลผลกฎในห่วงโซ่ระดับบนสุดในปัจจุบัน ตัวอย่างเช่นเป้าหมายเช่น ACCEPT หรือ DROP กำลังยกเลิกในขณะที่ LOG ไม่ได้

ในการกำหนดค่าตัวอย่างในคำถามนี้กฎสุดท้ายในห่วงโซ่ INPUT คือ DROP ทุกอย่างดังนั้นนโยบายเริ่มต้นจะไม่ถูกนำไปใช้และตัวนับควรจะอยู่ที่ 0 ซึ่งเป็นค่าที่ไม่เป็นศูนย์ (แพ็คเก็ต 368, 102354 ไบต์) โดยปริมาณการใช้งานที่เกิดขึ้นก่อนที่จะเพิ่มกฎ "drop-all" ทั้งหมดลงในห่วงโซ่

กลุ่มที่ไม่ได้สร้างขึ้นภายในไม่สามารถมีนโยบายเริ่มต้นได้ตามคำจำกัดความเนื่องจากการกระทำเริ่มต้นมักจะกลับไปยังเครือข่ายที่ถูกเรียกมานั่นคือเหตุผลที่พวกเขามักจะมีค่าตัวนับเป็น 0 เสมอ


คุณอาจพิจารณาเพิ่มสิ่งนี้ลงในเอกสารของ iptables-save (manpage) ... คุณไม่คิดเหรอ? :-)
perror

ฉันบันทึกกฎใน iptables ของฉันโดยใช้iptables-saveและฉันได้: และ:INPUT DROP [0:0] :OUTPUT ACCEPT [249529:173953830]ดังนั้นฉันคิดว่าคนที่สร้างไฟล์กำหนดค่าไม่สนใจตัวเลขเหล่านั้น แต่ตอนนี้ทุกอย่างค่อนข้างชัดเจน
มิคาอิล Morfikov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.