ตาราง mangle ใน iptables คืออะไร


28

ฉันใช้กฎ iptable เพื่อกรองและจัดการแพ็คเก็ตในเซิร์ฟเวอร์ Ubuntu ของฉัน แต่ฉันไม่เข้าใจตาราง mangle

การอ้างอิงจากการสอน iptables นี้ :

ตารางนี้ควรเป็นตามที่เราได้กล่าวไว้แล้วว่าส่วนใหญ่จะใช้สำหรับแพ็กเก็ต mangling กล่าวอีกนัยหนึ่งคุณสามารถใช้ mangle match และอื่น ๆ ที่สามารถใช้เพื่อเปลี่ยนฟิลด์ TOS (ประเภทของบริการ) และอื่น ๆ

คุณควรอย่างยิ่งที่จะไม่ใช้ตารางนี้สำหรับการกรองใด ๆ และจะไม่มีการทำ DNAT, SNAT หรือ Masquerading ในตารางนี้

ใครช่วยอธิบายตาราง mangle ให้ฉันและให้ตัวอย่างเข้าใจเมื่อฉันควรใช้


6
iptables(8)หน้าคนมีทั้งหมดของข้อมูลที่คุณต้องการรวมทั้งตัวอย่างที่ดีของการใช้งานหลายตารางฉีก
Michael Hampton

คำตอบ:


23

นอกเหนือจากคำตอบที่ดีอื่น ๆ เมื่อเร็ว ๆ นี้ฉันต้องใช้ตาราง mangle เพื่อปรับความคลาดเคลื่อนของ MTU (หน่วยการส่งข้อมูลสูงสุด) ที่เกิดจากการรับส่งข้อมูลผ่าน PPPoE, PPP และ ATM แต่ละเครื่องเพิ่มโอเวอร์เฮดซึ่งช่วยลดภาระสำหรับ IP จาก 1500 bytes ปกติของเฟรมอีเธอร์เน็ต

ระบบที่ปลายแต่ละด้านของไพพ์ตามปกติจะมี MTU เป็นค่าเริ่มต้นปกติที่ 1500 ดังนั้นพวกเขาจึงพยายามส่งเฟรม IP ที่มีขนาดใหญ่ เนื่องจากขนาดของโหลดที่แท้จริงที่มีอยู่มีขนาดเล็กลงสิ่งนี้อาจทำให้เกิดการแตกแฟรกเมนต์ของแพ็กเก็ตยกเว้นว่าบ่อยครั้งที่ผู้ส่งจะขอให้แพ็กเก็ตไม่แยกส่วนและเป็นเช่นนั้น

ในโลกอุดมคติการค้นพบเส้นทาง MTU จะอนุญาตให้จุดปลายปรับ MTU ตามต้องการ แต่การค้นพบนี้ขึ้นอยู่กับ ICMP และเครือข่ายที่อยู่นอกการควบคุมของฉันมักถูกกำหนดค่าให้วาง ICMP ด้วยเหตุผลด้านความปลอดภัย

ทางเลือกเดียวคือใช้แพ็กเก็ต mangling ในเราเตอร์ของฉันเพื่อปรับเปลี่ยนแพ็คเก็ต TCP SYN เพื่อลดขนาดเซกเมนต์สูงสุดที่เลเยอร์การขนส่ง:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452

เรื่องแบบนี้ยุ่งและควรหลีกเลี่ยง แต่ฉันไม่มีทางเลือกอื่นและวิธีนี้ก็แก้ปัญหาได้

หวังว่าตัวอย่างเหล่านี้จะช่วยได้เช่นเดียวกับหน้าคน


23

ฉันเพิ่งพบคำอธิบายที่ดีที่นี่ โดยทั่วไปจะใช้เพื่อตั้งค่าส่วนหัวเฉพาะสำหรับแพ็คเก็ต IP เพื่อส่งผลกระทบต่อการตัดสินใจกำหนดเส้นทางที่ทำต่อไป ถ้ามีตัวเลือก TTL น่าจะเป็นสิ่งที่น่าสนใจที่สุด:

เป้าหมาย TTL ใช้เพื่อเปลี่ยนฟิลด์ TTL (เวลาเป็นสด) ของแพ็กเก็ต เราสามารถบอกแพ็คเก็ตที่มีเฉพาะ TTL และอื่น ๆ เหตุผลหนึ่งที่ดีสำหรับเรื่องนี้อาจเป็นเพราะเราไม่ต้องการให้ตัวเราเองกับผู้ให้บริการอินเทอร์เน็ตที่มีจมูกยาว ผู้ให้บริการอินเทอร์เน็ตบางรายไม่ชอบผู้ใช้ที่ใช้คอมพิวเตอร์หลายเครื่องในการเชื่อมต่อครั้งเดียวและมีผู้ให้บริการอินเทอร์เน็ตบางรายที่รู้จักกันในการค้นหาโฮสต์เดียวที่สร้างค่า TTL ที่แตกต่างกันและใช้สิ่งนี้เป็นหนึ่งในสัญญาณหลายเครื่อง สัมพันธ์

TOS, MARK, SECMARK, CONNSECMARKเป้าหมายอื่น ๆ


4
Mangle ยังใช้ใน QOS เพื่อจัดการการทำเครื่องหมายของแพ็กเก็ตหรือในการกระจายโหลดข้อมูลเพื่อกระจายแพ็คเก็ตไปยังเส้นทางที่แตกต่างกัน
TomTom

8

ในฐานะที่เป็น iptables noob ฉันจะพูดว่า: ตาราง mangle อนุญาตให้แก้ไขรายการพิเศษบางอย่างในส่วนหัวของแพ็คเก็ต (เช่น: ประเภทของบริการ, เวลาที่ใช้งาน) (อนุญาตให้ตั้งเครื่องหมายพิเศษและเครื่องหมายบริบทด้านความปลอดภัย)


2

มีดีการดำน้ำลึก แต่ไม่ยากเกินไปที่จะเข้าใจการสอนเกี่ยวกับ iptables เป็นที่นี่

ตาราง mangle ถูกใช้เพื่อเปลี่ยนส่วนหัว IP ของแพ็กเก็ตในรูปแบบต่างๆ ตัวอย่างเช่นคุณสามารถปรับค่า TTL (เวลาเป็นสด) ของแพ็คเก็ตได้ไม่ว่าจะยาวหรือลดจำนวนเครือข่ายที่ใช้งานได้ที่แพ็คเก็ตสามารถรองรับได้ ส่วนหัว IP อื่น ๆ สามารถเปลี่ยนแปลงได้ในลักษณะที่คล้ายกัน

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

ช่วยฉันมากเพราะมันอธิบายได้อย่างชัดเจนว่าชิ้นส่วนทั้งหมดเข้าด้วยกันและแทรกเข้าหากันได้อย่างไร

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