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 ACCEPTdan
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTMana 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
conntrackjika 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:
conntrackmatch adalah versi tambahan daristatecocok, 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 distatecocok.
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:
statetidak digunakan lagi karenaconntrack, dan mungkin atau mungkin tidak dikompilasi tergantung pada bagaimana kernel Anda dibuat.