Iptables อะไรคือความแตกต่างระหว่าง -m state และ -m conntrack?


48

อะไรคือความแตกต่างในทางปฏิบัติระหว่าง:

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

และ

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

ใช้ตัวไหนดีที่สุด?

ขอขอบคุณ.


9
โปรดทราบว่าสำหรับ Linux Kernel 3.7 และใหม่กว่าสถานะจะถูกลบออก มีเพียง conntrack
Mr. X

ฉันกำลังใช้งาน 3.10.0 และสถานะยังคงรองรับ ...

1
สถานะจะเลิกในความโปรดปรานของ conntrack และอาจหรือไม่อาจรวบรวมขึ้นอยู่กับวิธีการสร้างเคอร์เนลของคุณ
Michael Hampton

คำตอบ:


26

ทั้งสองใช้เคอร์เนล internals เดียวกันภายใต้ (ระบบย่อยการติดตามการเชื่อมต่อ)

ส่วนหัวของ xt_conntrack.c:

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

ดังนั้นฉันจะบอกว่า - โมดูลรัฐนั้นง่ายกว่า (และอาจเกิดข้อผิดพลาดได้น้อยลง) มันยังยาวในเคอร์เนล เชื่อมต่ออีกด้านหนึ่งมีตัวเลือกและคุณสมบัติเพิ่มเติม [1]

การโทรของฉันคือการใช้ conntrack หากคุณต้องการคุณสมบัติของมันมิฉะนั้นยึดติดกับโมดูลสถานะ

คำถามที่คล้ายกันเกี่ยวกับ netfilter maillist

[1] ค่อนข้างมีประโยชน์เช่น "-m conntrack --ctstate DNAT -j MASQUERADE" การกำหนดเส้นทาง / การแก้ไข DNAT ;-)


8

ผลลัพธ์ของกฎทั้งสองนั้นไม่แตกต่างกัน ส่วนขยายการจับคู่ทั้งสองใช้ข้อมูลเดียวกันเพื่อจับคู่สถานะการติดตามการเชื่อมต่อ state เป็นส่วนขยายการจับคู่ "เก่า" และ conntrack นั้นใหม่กว่าและมีตัวเลือกมากมายมากกว่าเพียงแค่จับคู่สถานะการติดตามการเชื่อมต่อ


1

Iptables Doc

ตามเอกสารระบุว่า:

การจับคู่แบบ Conntrack เป็นเวอร์ชั่นขยายของการจับคู่สถานะซึ่งทำให้สามารถจับคู่แพ็คเก็ตได้อย่างละเอียดยิ่งขึ้น มันช่วยให้คุณดูข้อมูลที่มีอยู่โดยตรงในระบบติดตามการเชื่อมต่อโดยไม่มีระบบ "ส่วนหน้า" ใด ๆ เช่นในการจับคู่สถานะ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระบบติดตามการเชื่อมต่อให้ดูที่บทเครื่องสถานะ


การอ้างอิงไม่ทำงานอีกต่อไป
prosti

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.