ฉันไม่ได้อ้างว่าเป็นผู้เชี่ยวชาญที่มีiptables
กฎ แต่คำสั่งแรกใช้ประโยชน์จากส่วนขยายการติดตามการเชื่อมต่อ ( conntrack
) ในขณะที่คำสั่งที่สองใช้ประโยชน์จากstate
ส่วนขยาย
จุดข้อมูล # 1
ตามเอกสารนี้ขยายแทนที่conntrack
state
Obsolete extensions:
• -m state: replaced by -m conntrack
จุดข้อมูล # 2
ถึงกระนั้นฉันก็พบคำถามและคำตอบของ SF นี้: คำถามเกี่ยวกับสถานะและนโยบายของไฟร์วอลล์? โดยที่ OP อ้างว่าได้ถามคำถามนี้กับ IRC ใน # iptables @ freenode หลังจากพูดคุยกันแล้วเขาก็สรุปว่า:
ในทางเทคนิคแล้วการแข่งขันแบบ conntrack นั้นจะใช้แทนการแข่งขันแบบรัฐ แต่ในทางปฏิบัติแล้วการจับคู่ของรัฐนั้นไม่ล้าสมัย แต่อย่างใด
จุดข้อมูล # 3
สุดท้ายฉันพบคำถามและคำตอบของ SF นี้: Iptables อะไรคือความแตกต่างระหว่าง -m state และ -m conntrack? . คำตอบจากคำถามนี้น่าจะเป็นหลักฐานที่ดีที่สุดและให้คำแนะนำเกี่ยวกับวิธีการดูการใช้งานของและconntrack
state
สิ่งที่สกัดมา
ทั้งสองใช้เคอร์เนล internals เดียวกันภายใต้ (ระบบย่อยการติดตามการเชื่อมต่อ)
ส่วนหัวของ xt_conntrack.c:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
ดังนั้นฉันจะบอกว่า - โมดูลรัฐนั้นง่ายกว่า (และอาจเกิดข้อผิดพลาดได้น้อยลง) มันยังยาวในเคอร์เนล conntrack ในด้านอื่น ๆ มีตัวเลือกมากขึ้นและคุณสมบัติ[1]
การโทรของฉันคือการใช้ conntrack หากคุณต้องการคุณสมบัติของมันมิฉะนั้นยึดติดกับโมดูลสถานะ
[1]ค่อนข้างมีประโยชน์เช่น"-m conntrack --ctstate DNAT -j MASQUERADE"
การกำหนดเส้นทาง / DNAT fixup ;-)
จุดข้อมูล # 4
ฉันพบกระทู้นี้จากการสนทนา netfilter@vger.kernel.org netfilte / iptables หัวข้อ: การจับคู่สถานะล้าสมัย 1.4.17ซึ่งค่อนข้างบอกว่าstate
เป็นเพียงนามแฝงconntrack
ดังนั้นจึงไม่สำคัญว่าคุณจะใช้ใน conntrack
ทั้งสถานการณ์ที่คุณกำลังใช้
สิ่งที่สกัดมา
ที่จริงฉันต้องยอมรับ ทำไมเราไม่ให้สถานะเป็นนามแฝงและยอมรับไวยากรณ์เก่าใน "conntrack"?
ขณะนี้สถานะเป็นนามแฝงและแปลเป็น conntrack ใน iptables หากเคอร์เนลมีอยู่ ไม่มีสคริปต์ใดเสียหาย
หากนามแฝงเสร็จสิ้นใน userspace แล้วส่วนของเคอร์เนลสามารถลบออกได้ - สักวันหนึ่ง
นามแฝงเสร็จเรียบร้อยแล้วใน userspace หนึ่งประเภทใน "สถานะ" และถูกแปลงเป็น "conntrack" และที่ถูกส่งไปยังเคอร์เนล (เท่าที่ฉันเห็นถ้า ipt_state, aliases โมดูลอื่น ๆ ถูกเพิ่มเข้ากับโมดูล conntrack, แม้กระทั่งโมดูลเคอร์เนลสถานะก็สามารถลบออกได้)
อ้างอิง