Các số trong chuỗi INPUT, FORWARD, OUTPUT có nghĩa là gì trong tệp cấu hình iptables?


34

Tôi đã xem qua tập tin cấu hình sau:

# 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 

Có ai biết những gì [368:102354], [0:0][92952:20764374]có nghĩa là?


1
Bạn có thể thay đổi chúng thành 0nếu bạn muốn lưu cấu hình của mình trong một tệp. Điều đó sẽ không gây hại gì, ngoại trừ việc nó sẽ thiết lập lại các giá trị khi bạn khôi phục nó.
Toto

@Totor có làm nên sự khác biệt nào không nếu bạn loại bỏ hoàn toàn các số khỏi tệp cấu hình? Có vẻ như chúng là một báo cáo chứ không phải là một cấu hình, vậy tại sao chúng lại nằm trong một tệp cấu hình?
barlop

Câu trả lời:


34

Hai giá trị tương ứng với số lượng góisố byte mà chính sách mặc định của chuỗi đã được áp dụng cho đến nay (xem câu trả lời khác này để biết chi tiết).

Theo mã nguồn của iptables-save.cchính nó:

/* 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");
    }
}

Và, cấu trúc xt_countersđược định nghĩa như include/linux/netfilter/x_tables.hsau:

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

Cũng lưu ý rằng các chuỗi không được dựng sẵn sẽ được đánh dấu bằng [0:0]bất kỳ cách nào (đó là một sự giải thích trong mã).


1
Tôi thích Câu trả lời của bạn với Thông tin chi tiết từ Mã nguồn dự án. Cảm ơn nhiều.
Bodo Hugo Barwich

9

Hai số là số lượng gói và byte tương ứng mà chính sách mặc định đã được áp dụng (không phải tổng số gói / byte được xem bởi chuỗi). Chúng được chỉ định cùng với chính sách mặc định cho chuỗi - điều này là do chúng thuộc về logic, không phải vì không có nơi nào tốt hơn.

Chính sách mặc định là hành động được thực hiện trên gói khi không có quy tắc nào với mục tiêu kết thúc phù hợp. Mục tiêu chấm dứt là một mục tiêu dừng xử lý thêm các quy tắc trong chuỗi cấp cao nhất hiện tại. Ví dụ: các mục tiêu như ACCEPT hoặc DROP đang chấm dứt, trong khi LOG thì không.

Trong cấu hình ví dụ trong câu hỏi này, quy tắc cuối cùng trong chuỗi INPUT là DROP mọi thứ, do đó, chính sách mặc định sẽ không bao giờ được áp dụng và các bộ đếm thường sẽ duy trì ở mức 0. Giá trị khác không (368 gói, 102354 byte) có thể được giải thích bởi lưu lượng truy cập diễn ra trước khi quy tắc "thả tất cả" được thêm vào chuỗi.

Các chuỗi không dựng sẵn không thể có chính sách mặc định theo định nghĩa, bởi vì hành động mặc định luôn luôn quay trở lại chuỗi mà chúng được gọi từ đó, đó là lý do tại sao chúng luôn có giá trị truy cập là 0.


Bạn có thể xem xét thêm phần này vào tài liệu của iptables-save (manpage) ... Bạn có nghĩ vậy không? :-)
perror

Tôi đã lưu các quy tắc trong iptables của mình bằng cách sử dụng iptables-savevà tôi đã nhận được: :INPUT DROP [0:0]:OUTPUT ACCEPT [249529:173953830]. Vì vậy, tôi nghĩ rằng người tạo ra tệp cấu hình đã không chú ý đến những con số đó. Nhưng bây giờ, mọi thứ đã khá rõ ràng.
Mikhail Morfikov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.