INPUT, FORWARD, OUTPUT zincirlerindeki sayılar iptables config dosyasında ne ifade eder?


34

Aşağıdaki yapılandırma dosyasına rastladım:

# 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 

Herkes ne olduğunu biliyor mu [368:102354], [0:0]ve [92952:20764374]ortalama?


1
0Config dosyanızı bir dosyaya kaydetmek istiyorsanız, bunları değiştirebilirsiniz . Tabii ki geri yüklediğinizde değerleri sıfırlayabilmesi dışında bu acımayacaktır.
Totor

@Topları yapılandırma dosyasından tamamen kaldırırsanız, motor bir fark yaratır mı? bir yapılandırmadan ziyade bir rapor gibi görünüyorlar, öyleyse neden bir yapılandırma dosyasındalar?
barlop

Yanıtlar:


34

İki değer karşılık paket sayısı ve bayt sayısı zincirinin varsayılan politikası şimdiye kadar uygulanmış ki (bkz bu diğer cevabı detayları için).

Kaynak koduna göre iptables-save.ckendi içinde:

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

Ve yapı xt_countersaşağıdaki gibi tanımlanır include/linux/netfilter/x_tables.h:

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

Ayrıca, yerleşik olmayan zincirlerin [0:0]yine de işaretlendiğine dikkat edin (kodda bir tuhaflıktır).


1
Proje Kaynak Kodundaki İçgörü ile Cevabınızı Seviyorum. Çok teşekkür ederim.
Bodo Hugo Barwich

9

İki sayı, sırasıyla varsayılan ilkenin uygulandığı paket ve bayt sayısıdır (zincir tarafından görülen toplam paket / bayt sayısı değil). Zincir için varsayılan politika ile birlikte belirlenirler - bunun nedeni daha iyi bir yer olmadığı için mantıksal olarak oraya ait olmalarıdır.

Varsayılan ilke, sonlandırılan hedefi olan hiçbir kural eşleşmediğinde paket üzerinde gerçekleştirilen eylemdir. Sonlandırıcı bir hedef, mevcut üst düzey zincirdeki kuralların daha fazla işlenmesini durduran hedeftir. Örneğin, KABUL veya DROP gibi hedefler sonlandırılıyor, LOG ise.

Bu sorudaki örnek yapılandırmada, INPUT zincirindeki son kural her şeyi DROP yapmaktır, bu nedenle varsayılan politika asla uygulanmayacak ve sayaçlar normalde 0'da kalmalıdır. Sıfır olmayan değerler (368 paket, 102354 bayt) açıklanabilir. "hepsini bırak" kuralından önce gerçekleşen trafik zincirine eklendi.

Yerleşik olmayan zincirler, tanım gereği varsayılan politikaya sahip olamaz, çünkü varsayılan eylem, çağrıldıkları zincire her zaman geri dönmek olduğundan, bu nedenle her zaman 0 sayaç değerlerine sahip olurlar.


Bunu iptables-save belgelerine (manpage) eklemeyi düşünebilirsiniz ... Sizce de öyle değil mi? :-)
perror

Kullanılabilir kodlarımda kurallar kullanıp bunları kullandım iptables-save: :INPUT DROP [0:0]ve :OUTPUT ACCEPT [249529:173953830]. Bu yüzden, config dosyasını oluşturan kişinin bu sayılara dikkat etmediğini düşünüyorum. Ama şimdi, her şey oldukça açık.
Mikhail Morfikov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.