Apa arti angka dalam rantai INPUT, FORWARD, OUTPUT dalam file konfigurasi iptables?

34

Saya menemukan file konfigurasi berikut:

# 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 

Adakah yang tahu [368:102354], [0:0]dan apa [92952:20764374]artinya?

Mikhail Morfikov
sumber
1
Anda dapat mengubahnya menjadi 0jika Anda ingin menyimpan konfigurasi Anda dalam file. Itu tidak akan sakit kecuali tentu saja akan mereset nilai ketika Anda mengembalikannya.
Totor
@ Motor apakah ada bedanya jika Anda menghapus angka sepenuhnya dari file konfigurasi? sepertinya itu adalah laporan daripada konfigurasi jadi mengapa mereka ada dalam file konfigurasi?
barlop

Jawaban:

34

Dua nilai sesuai dengan jumlah paket dan jumlah byte yang telah diterapkan oleh kebijakan default rantai sejauh ini (lihat jawaban lain ini untuk perincian).

Menurut kode sumber iptables-save.citu sendiri:

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

Dan, struktur xt_countersdidefinisikan sebagai berikut include/linux/netfilter/x_tables.h:

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

Perhatikan juga bahwa rantai yang tidak dibangun ditandai dengan [0:0]pula (ini adalah kekhasan dalam kode).

perror
sumber
1
Saya suka Jawaban Anda dengan Wawasan dari Kode Sumber Proyek. Terima kasih banyak.
Bodo Hugo Barwich
9

Kedua angka tersebut adalah jumlah paket dan byte yang masing-masing telah diterapkan kebijakan default (bukan jumlah total paket / byte yang dilihat oleh rantai). Mereka ditentukan bersama dengan kebijakan default untuk rantai - ini karena mereka secara logis berada di sana, bukan karena tidak ada tempat yang lebih baik.

Kebijakan default adalah tindakan yang dilakukan pada paket ketika tidak ada aturan dengan target terminasi telah cocok. Target yang mengakhiri adalah salah satu yang menghentikan pemrosesan lebih lanjut dari aturan dalam rantai tingkat atas saat ini. Misalnya, target seperti ACCEPT atau DROP berakhir, sedangkan LOG tidak.

Dalam contoh konfigurasi dalam pertanyaan ini, aturan terakhir dalam rantai INPUT adalah untuk MENGURANGI segalanya, sehingga kebijakan default tidak akan pernah diterapkan dan penghitung biasanya tetap pada 0. Nilai tidak nol (368 paket, 102354 byte) dapat dijelaskan oleh lalu lintas yang terjadi sebelum aturan "drop-all" ditambahkan ke rantai.

Rantai non-bawaan tidak dapat memiliki kebijakan standar menurut definisi, karena tindakan default selalu untuk kembali ke rantai asal mereka, itulah sebabnya mereka selalu memiliki nilai lawan 0.

pengguna56143
sumber
Anda dapat mempertimbangkan untuk menambahkan ini ke dokumentasi iptables-save (manpage) ... Jangan menurut Anda? :-)
perror
Saya menyimpan aturan di iptables menggunakan iptables-savedan saya mendapat: :INPUT DROP [0:0]dan :OUTPUT ACCEPT [249529:173953830]. Jadi, saya pikir orang yang membuat file konfigurasi tidak memperhatikan angka-angka itu. Tapi sekarang, semuanya cukup jelas.
Mikhail Morfikov