GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara status iptables dan ctstate?

Jawaban utama :

Conntrack menggantikan state , tetapi di kernel modern sekarang tidak ada perbedaan antara keduanya.State saat ini diberi alias dan diterjemahkan ke conntrack di iptables jika kernel memilikinya, jadi sintaks -m state --state sebenarnya diterjemahkan ke dalam -m conntrack --ctstate dan ditangani oleh modul yang sama.

Namun, pada beberapa kernel lama, contrack harus diaktifkan secara khusus.

Kemungkinan penjelasan :

Menurut saya, aturan yang Anda kutip menyertakan duplikat, melayani kernel yang lebih lama dan lebih baru.

Atau mungkin ini hanya kasus pemrograman kultus Cargo.


Ada pertanyaan ini di ServerFault dari tahun 2012:

Apa perbedaan praktis antara:

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

dan

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

Mana yang terbaik untuk digunakan?

Jawaban yang diterima adalah:

Keduanya menggunakan internal kernel yang sama di bawahnya (subsistem pelacakan koneksi).

Tajuk xt_conntrack.c :

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

Jadi saya akan mengatakan - modul negara lebih sederhana (dan mungkin lebih sedikit rawan kesalahan). Itu juga lebih lama di kernel. Conntrack di sisi lain memiliki lebih banyak opsi dan fitur[1].

Panggilan saya adalah menggunakan conntrack jika Anda membutuhkan fitur-fiturnya, jika tidak tetap gunakan modul status.

Pertanyaan serupa di netfiltermaillist.

[1] Cukup berguna seperti -m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup;-)

Salah satu jawaban lain mengarah ke dokumen ini tentang iptables . Dikatakan:

conntrack match adalah versi tambahan dari state cocok, yang memungkinkan untuk mencocokkan paket dengan cara yang jauh lebih terperinci. Ini memungkinkan Anda melihat informasi yang tersedia secara langsung di sistem pelacakan koneksi, tanpa sistem "ujung depan", seperti di state cocok.

Jadi menurut saya ini benar (dari jawaban lain di sana):

Tidak ada perbedaan hasil dari kedua aturan tersebut.

Perhatikan ada juga komentar menarik di bawah pertanyaan:

state tidak digunakan lagi karena conntrack , dan mungkin atau mungkin tidak dikompilasi tergantung pada bagaimana kernel Anda dibuat.


Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Git Switch dan Checkout?

  3. Apa perbedaan antara adduser dan useradd?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara Redhat dan centOS?

  3. Apa perbedaan antara $(CC) dan $CC?

  1. Apa perbedaan antara insmod dan modprobe

  2. Apa perbedaan antara strtok_r dan strtok_s di C?

  3. Apa perbedaan antara fsck dan e2fsck?