ความแตกต่างระหว่าง DNAT และ REDIRECT ใน IPTABLES


14

อาจเป็นเพราะฉันหนาแน่นหรืออาจจะไม่ได้ค้นหาแหล่งที่ถูกต้อง แต่ฉันไม่เข้าใจว่าทำไมการตั้งค่า IPTABLES อย่างใดอย่างหนึ่งเหล่านี้ถึงดีกว่าอีกชุด

นี่คือการตั้งค่าของฉัน:

ฉันมีกล่องที่ทำหน้าที่เป็นพร็อกซีโปร่งใสและเราเตอร์หรือแปลก ๆ มันมีสองอินเตอร์เฟสในนั้น ETH0 และ ETH1 และรูปแบบที่อยู่ดังต่อไปนี้:

ETH0 = DHCP ETH1 = 192.168.5.1/24 ให้บริการ DHCP สำหรับเครือข่าย 192.168.5.0/24 ให้กับลูกค้าที่อยู่ด้านหลังใน LAN

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

นี่คือไฟล์ IPTABLES ดั้งเดิมของฉัน

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

การกำหนดค่านี้ทำงานได้ดีและการรับส่งข้อมูลไหลไปมาโดยไม่มีปัญหา ฉันได้รับที่อยู่ IP ไคลเอนต์ที่มีต้นกำเนิดใน Privoxy logfiles และชีวิตก็ดี

ความสับสนของฉันเกิดขึ้นเมื่อฉันเริ่มมองไปที่การกำหนดค่าของคนอื่นและเห็นว่าพวกเขากำลังใช้ DNAT แทน REDIRECT และฉันพยายามทำความเข้าใจกับการได้รับประโยชน์ที่แท้จริงของอีกคนหนึ่ง นี่คือตัวอย่างการกำหนดค่า:

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

อีกครั้งการกำหนดค่านี้ทำงานเช่นกันและให้ทุกอย่างที่ฉันต้องการจากมุมมองการบันทึก ...

อันไหนที่ถูกหรือน่าจะเหมาะสมกว่าอีกอัน?

ขอบคุณที่สละเวลาอ่านหนังสือเล่มนี้ ...

คำตอบ:


14

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

DNATเป็นจริงการแปลที่อยู่เครือข่าย หากคุณต้องการให้แพ็กเก็ตปลายทางนอกระบบโลคัลมีการเปลี่ยนแปลงปลายทางมันเป็นตัวเลือกที่ดีกว่าของทั้งสองเพราะREDIRECTจะไม่ทำงาน


ตกลงดังนั้นถ้าฉันมีลูกค้านั่งอยู่หลังพร็อกซีพูดบน 192.168.5.234 และฉันต้องการ "ประมวลผล" คำขอ HTTP ของมันผ่านพร็อกซีบน 192.168.5.1 คุณกำลังแนะนำว่าฉันควร DNAT พอร์ตขาออก 80 ทราฟฟิกเป็น 192.168 .5.1: 8080 บนพร็อกซี ฉันสามารถซื้อได้ แต่ทำไม ??? เป็นเรื่องเกี่ยวกับวิธีจัดการทราฟฟิกเมื่อปล่อย ETH0 ของพร็อกซีออกมาผ่านเกตเวย์เริ่มต้นไปยังอินเทอร์เน็ตหรือไม่ ฉันต้อง
คลำ

2
DNAT จะเปลี่ยนที่อยู่เมื่อแพ็กเก็ตผ่านไฟร์วอลล์เพื่อให้มาถึงโฮสต์ที่ถูกออกแบบมาและที่ด้านหลังจะมาจากไฟร์วอลล์ DNAT แทบจะไม่ใช้กับการรับส่งข้อมูลขาออกซึ่งจัดการโดยกฎ MASQUERADE มัน privproxy อยู่บนโฮสต์อื่นจากนั้น DNAT จะเหมาะสมโดยมีข้อยกเว้นที่เหมาะสมสำหรับโฮสต์นั้น
BillThor

บิลขอบคุณ นั่นคือที่ที่สมองสัตว์เลื้อยคลานของฉันไป แต่มันก็ดีที่จะมีการตรวจสอบ ดังนั้นถ้าฉันส่งแพ็คเก็ตที่กำหนดไว้สำหรับgoogle.comจาก 192.168.5.234 และมันมีค่าเริ่มต้น gw ตั้งไว้ที่ 192.168.5.1 (eth1 บนพร็อกซี) ฉันควร "REDIRECT" แพ็กเก็ตนั้นไปยังพอร์ต 8080 บนพร็อกซีและปล่อยให้ Privoxy ทำ ส่วนที่เหลือ. เหตุผลนี้เป็นเพราะ privoxy อาศัยอยู่ที่ 192.168.5.1 และไม่ได้อยู่ในพื้นที่อื่น ฉันกำลังสูบบุหรี่บางอย่างที่ฉันไม่ควรทำหรือ
QWade

9

REDIRECTเปลี่ยนที่อยู่ IP ปลายทางเพื่อส่งไปยังเครื่องด้วยตัวเองตามคำตอบของ Warner @ แต่ฉันจะบอกว่าคำตอบนั้นไม่ถูกต้องทั้งหมดหรือทำให้เข้าใจผิดเล็กน้อย

REDIRECTไม่ได้เป็นเพียงการเปลี่ยนเส้นทางแพ็คเก็ตท้องถิ่น เป็นจริงDNATที่ที่อยู่ IP ปลายทางที่ใช้นั้นเป็นนัย 127.0.0.1 หากเป็นแพ็กเก็ตท้องถิ่นหรือที่อยู่ IP ของอินเทอร์เฟซของเครื่องอย่างอื่น 192.168.5.1 ในกรณีของ OP

ดังนั้นในคำถามนี้ไม่ว่าปลายทางสุดท้ายแพ็คเก็ตควรถึงพร็อกซีก่อนดังนั้นจึงREDIRECTเหมาะอย่างยิ่ง

เนื่องจากREDIRECTคุณไม่จำเป็นต้องระบุที่อยู่ IP มันจะใช้ที่ถูกต้องเท่านั้นจึงมีข้อดีมากกว่าDNAT:

  • หากที่อยู่ IP ของเครื่องเปลี่ยนไปไม่ว่าด้วยเหตุผลใดก็ตามคุณไม่จำเป็นต้องแก้ไขกฎของคุณและโดยเฉพาะอย่างยิ่งDNATจะไม่ทำงานสำหรับอินเทอร์เฟซที่ควบคุมด้วย DHCP

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


อย่างใดเช่น snat / masquerade
Jichao

@Hod ฉันได้ยิน REDIRECT เป็นกรณีพิเศษของ DNAT แต่ฉันใช้ REDIRECT และ TOR จะรู้ปลายทางที่แท้จริงของแพ็กเก็ตดังนั้นฉันจึงสรุปว่า daddr และ dport ของโครงสร้าง iphdr และ tcphdr ยังคงอยู่และแพ็กเก็ตเพิ่งกลับมาที่ REDIRECT ปลายทางโดย เมล็ด DNAT จะปรับเปลี่ยนโครงสร้างจริง ฉันผิดหรือเปล่า?
ตะเกียง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.