-M conntrack --ctstate ve -m state --state arasındaki fark nedir


85

Okuduğum bu howto ve bunun gibi bir şeyler var:

Oluşturulan oturumların trafik almasına izin verebiliriz:

$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Yukarıdaki kural, ESTABLISHED, RELATED içinde virgülün iki tarafında da boşluk bırakmaz.

Yukarıdaki satır işe yaramazsa, sağlayıcı uzantıyı kullanmadıysa, kısmi bir VPS'de olabilirsiniz; bu durumda daha düşük bir sürüm son çare olarak kullanılabilir:

$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Arasında çalışan önemli bir fark var mı -m conntrack --ctstateve -m state --state? Bunun işe yaramayabileceğini söylüyorlar ama nedenini söylemiyorlar. Neden birini diğerine tercih etmeliyim?



Anladım, bu soruyu kaldırmalı mıyım?
Mikhail Morfikov

1
@ John1024 - kopyalar yalnızca tek bir SE sitesi içindedir. Q'lar belirli bir SE sitesini yöneten kurallar dahilinde olduğu sürece, çok sayıda SE sitesine benzer soruları göndermek gayet iyi!
slm

1
@MikhailMorfikov - Sorunuz, diğer SE sitelerindeki diğer Q'lara benzese de burada mükemmel!
slm

1
@Totor - Cevabımdaki "veri noktası # 4" ü görürseniz stateaslında bir takma addır conntrack. Yani önemli değil. Gelecekte bir noktada statetamamen kaldırabileceklerini sanıyorum ama şimdilik kullanmakta olmanızın bir önemi yok.
slm

Yanıtlar:


99

iptablesKurallar konusunda uzman olduğumu iddia etmiyorum, ancak ilk komut bağlantı izleme uzantısını ( conntrack) kullanıyor, ikincisi ise stateuzantıyı kullanıyor.

Veri noktası # 1

Göre bu belgeninconntrack uzantısı yerini state.

 Obsolete extensions:
  • -m state: replaced by -m conntrack

Veri noktası # 2

Öyle olsa bile, bu SSS Soru ve Cevaplarını başlıklı buldum: Güvenlik duvarı devlet ve politika hakkında sorular? OP'nin IRC'de # iptables @ freenode'deki bu soruyu sorduğunu iddia ettiği yer. Orada tartıştıktan sonra şöyle sonuçlandı:

Teknik olarak, conntrack maçı, devlet eşleşmesinin yerini alır - ve böylece eskidir -. Fakat pratikte devlet eşleşmesi hiçbir şekilde eskimiş değildir.

Veri noktası # 3

Son olarak şu SF Q&A başlıklı parçayı buldum : Iptables, -m state ve -m conntrack arasındaki fark nedir? . Bu sorunun cevabı muhtemelen kullanımını görmek için nasıl en iyi kanıt ve tavsiyem conntrackve state.

alıntı

Her ikisi de altında aynı çekirdek dahili kullanır (bağlantı izleme alt sistemi).

Xt_conntrack.c üstbilgisi:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

Yani diyebilirim ki - durum modülü daha basittir (ve belki de daha az hataya eğilimlidir). Aynı zamanda çekirdekte daha uzun. Diğer taraftaki conntrack daha fazla seçenek ve özelliğe sahiptir [1] .

Benim çağrım, özelliklerine ihtiyacınız varsa, conntrack kullanmak, aksi halde durum modülünü kullanmak.

[1]"-m conntrack --ctstate DNAT -j MASQUERADE" Yönlendirme / DNAT düzeltme ;-) gibi oldukça kullanışlıdır

Veri noktası # 4

Ben netfilter@vger.kernel.org netfilte gelen Konuyu buldum / iptables tartışmalar, başlıklı: devlet maçı eskimiş 1.4.17 olduğunu hemen hemen söylüyor, statesadece bir takma addır conntrackyani gerçekten olursa olsun içinde, kullanmaz her iki durumda da kullanıyorsun conntrack.

alıntı

Aslında aynı fikirdeyim. Neden "devlet" i takma ad olarak tutmuyoruz ve eski sözdizimini "conntrack" de kabul etmiyoruz?

durum şu anda takma ad ve çekirdek varsa, iptables içinde conntrack'e çevrilir. Hiçbir komut dosyası bozuk değil.

Takma kullanıcı alanında yapılırsa, çekirdek kısmı kaldırılabilir - bir gün belki.

Takma ad zaten kullanıcı alanında yapıldı. Bir "devlet" türünde "conntrack" e çevrilir ve bu daha sonra çekirdeğe gönderilir. (İpt_state, etc modül takma adlarının conntrack modülüne eklenip eklenmediğini görebildiğim kadarıyla durum çekirdeği modülü bile kaldırılabilir.)

Referanslar


3

Ben bir netfilter uzmanı değilim, ancak iptables-extension man-sayfasını inceledim ve işte orada

The "state" extension is a subset of the "conntrack" module.

Bu yüzden devlet, gerçekten bir ihtiyaç duyduğunuzda, devletin bir parçası ve sadece daha basit bir versiyonudur.

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.