อะไรคือความแตกต่างในทางปฏิบัติระหว่าง:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
และ
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ใช้ตัวไหนดีที่สุด?
ขอขอบคุณ.
อะไรคือความแตกต่างในทางปฏิบัติระหว่าง:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
และ
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ใช้ตัวไหนดีที่สุด?
ขอขอบคุณ.
คำตอบ:
ทั้งสองใช้เคอร์เนล 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 ;-)
ผลลัพธ์ของกฎทั้งสองนั้นไม่แตกต่างกัน ส่วนขยายการจับคู่ทั้งสองใช้ข้อมูลเดียวกันเพื่อจับคู่สถานะการติดตามการเชื่อมต่อ state เป็นส่วนขยายการจับคู่ "เก่า" และ conntrack นั้นใหม่กว่าและมีตัวเลือกมากมายมากกว่าเพียงแค่จับคู่สถานะการติดตามการเชื่อมต่อ
ตามเอกสารระบุว่า:
การจับคู่แบบ Conntrack เป็นเวอร์ชั่นขยายของการจับคู่สถานะซึ่งทำให้สามารถจับคู่แพ็คเก็ตได้อย่างละเอียดยิ่งขึ้น มันช่วยให้คุณดูข้อมูลที่มีอยู่โดยตรงในระบบติดตามการเชื่อมต่อโดยไม่มีระบบ "ส่วนหน้า" ใด ๆ เช่นในการจับคู่สถานะ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระบบติดตามการเชื่อมต่อให้ดูที่บทเครื่องสถานะ