ความแตกต่างระหว่าง SNAT และ Masquerade


38

ฉันสับสนว่าอะไรคือความแตกต่างที่แท้จริงระหว่าง SNAT และ Masquerade

หากฉันต้องการแบ่งปันการเชื่อมต่ออินเทอร์เน็ตของฉันบนเครือข่ายท้องถิ่นฉันควรเลือก SNAT หรือ Masquerade หรือไม่?

คำตอบ:


41

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

เอกสารที่ดีรวมถึงHOWTOs บนเว็บไซต์ Netfilterและหน้าคนiptables


2
ฉันมีปัญหาในการเข้าใจถึงประโยชน์ของ SNAT ทำไมมันถึงสำคัญถ้าเคอร์เนลติดตามการเชื่อมต่อหรือไม่เมื่ออินเตอร์เฟสหยุดทำงาน? เกี่ยวกับ MASQUERADE, netfilter docs พูดว่า "แต่ที่สำคัญกว่านั้นคือถ้าลิงค์ตกการเชื่อมต่อ (ซึ่งตอนนี้หายไป) จะถูกลืมซึ่งหมายถึงความผิดพลาดน้อยลงเมื่อการเชื่อมต่อกลับมาพร้อมกับที่อยู่ IP ใหม่" ฟังดูสมเหตุสมผล (แม้ว่าความบกพร่องคืออะไร) ตอนนี้ดูที่ SNAT ประโยชน์ของการติดตามการเชื่อมต่อที่หายไปคืออะไร ทำไมไม่ใช้ MASQUERADE ทุกครั้ง
Carl G

1
@CarlG ฉันเดาว่าข้อบกพร่องจะเกิดขึ้นกับการติดตามอย่างถาวร-j SNAT(เมื่อเทียบกับการติดตามการรีไซเคิลด้วย-j MASQUERADE) เมื่อการเชื่อมต่อขาออกใหม่จากโหนด LAN ใช้หมายเลขพอร์ตต้นทางเดียวกันกับการเชื่อมต่อขาออกที่ตัดออกจากโหนด LAN เดียวกัน ในกรณีนี้ฉันสามารถจินตนาการถึงแพ็กเก็ตที่เข้ามาจากการเชื่อมต่อขาออกเก่าที่ส่งไปยังโหนดทำให้เกิดความสับสนของสแต็ก TCP สำหรับประโยชน์ของ -j SNAT จะเกิดอะไรขึ้นถ้ามีการกำหนดค่ากล่อง NAT ด้วยที่อยู่ IP ภายนอกเดียวกันและเคอร์เนลจะส่งต่อแพ็กเก็ตจากการเชื่อมต่อเก่าแทนที่จะตอบกลับด้วย RST?
ปลาไหล gEEE

SNAT มีประโยชน์ถ้าเช่นคุณมีหลายที่อยู่ IP ที่กำหนดให้กับอินเทอร์เฟซขาออกและต้องการให้แหล่ง NAT เป็นหนึ่งในเหล่านี้
pgoetz

19

โดยพื้นฐานSNATแล้วMASQUERADEทำ NAT แหล่งเดียวกันในตาราง nat ภายใน POSTROUTING chain

ความแตกต่าง

  • MASQUERADEไม่ต้องการ--to-sourceเนื่องจากทำงานกับ IP ที่กำหนดแบบไดนามิก

  • SNAT ทำงานได้กับ IP คงที่เท่านั้นนั่นเป็นสาเหตุ --to-source

  • MASQUERADEมีค่าใช้จ่ายเพิ่มเติมและช้ากว่าSNATเนื่องจากแต่ละครั้งที่MASQUERADEเป้าหมายโดนแพ็คเก็ตจะต้องตรวจสอบที่อยู่ IP ที่จะใช้

หมายเหตุ : กรณีการใช้งานทั่วไปสำหรับMASQUERADE: อินสแตนซ์ AWS EC2 ใน VPC มี IP ส่วนตัวภายใน VPC CIDR (เช่น 10.10.1.0/24) - 10.10.1.100 ตัวอย่างเช่นยังมี IP สาธารณะเพื่อสื่อสารกับ อินเทอร์เน็ต (สมมติว่ามันอยู่ในซับเน็ตสาธารณะ) ถึง IP ส่วนตัว 1: 1 NAT IP สาธารณะอาจเปลี่ยนแปลงได้หลังจากการรีบูตอินสแตนซ์ (หากไม่ใช่ EIP) MASQUERADEเป็นตัวเลือกที่ดีกว่าในกรณีที่ใช้งานนี้

สำคัญ: ยังคงเป็นไปได้ที่จะใช้MASQUERADEเป้าหมายที่มี IP คงที่เพียงแค่ตระหนักถึงค่าใช้จ่ายเพิ่มเติม

อ้างอิง

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