เหตุใดจึงเป็นความคิดที่ดีที่จะใช้เลเยอร์ NAT หลายชั้นหรือ


19

เครือข่ายคอมพิวเตอร์ขององค์กรมี NAT พร้อมช่วงที่อยู่ IP 192.168 / 16 มีแผนกที่มีเซิร์ฟเวอร์ที่มีที่อยู่ IP 192.168.xy และเซิร์ฟเวอร์นี้จัดการโฮสต์ของแผนกนี้ด้วย NAT อื่นด้วยช่วงที่อยู่ IP 172.16 / 16

ดังนั้นจึงมี NAT 2 ชั้น ทำไมพวกเขาถึงไม่มีซับเน็ตติ้งแทน ซึ่งจะช่วยให้กำหนดเส้นทางได้ง่าย

ฉันรู้สึกว่า NAT หลายชั้นสามารถทำให้ประสิทธิภาพลดลง คุณช่วยฉันเปรียบเทียบกลยุทธ์การออกแบบทั้งสองได้ไหม

ปรับปรุง:

@ จอนข้อมูลเพิ่มเติมบางส่วน

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

วิธีแก้ปัญหานี้

นอกจากนี้หากคอมพิวเตอร์สองเครื่องอยู่หลัง NATs ที่แตกต่างกันจะไม่มีวิธีให้พวกเขาเชื่อมต่อกันได้


โปรดเปลี่ยนคำถามของคุณเป็น: "ทำไมจึงเป็นความคิดที่ดีที่จะใช้เลเยอร์ NAT หลาย ๆ ชุด"

2
การบ้านอื่นที่ได้รับมอบหมาย ...
Jon Rhoades

1
NO มันเป็นปัญหาในทางปฏิบัติ ฉันมักจะพูดถึงการบ้าน
Rohit Banga

3
@ จอน (และผู้สนับสนุนของเขา) ไม่มีปัญหากับการถามคำถามการบ้านที่นี่ เป็นหัวข้อที่มีการพูดคุยกันหลายสิบครั้งที่meta.stackoverflow.com - แม้ว่าโดยส่วนตัวแล้วฉันไม่เห็นอะไรเลยในคำถามที่ชี้ไปที่ HW
Mark Henderson

@ Farseeker - คำถามทั้งหมดเป็นนามธรรม ดูเหมือนว่าเขาจะไม่สามารถเปลี่ยนแปลงอะไรได้เลยเขาต้องการให้เรา "เปรียบเทียบ 2 กลยุทธ์การออกแบบ" โดยไม่มีเป้าหมายที่ชัดเจน - มันมีกลิ่นเหมือนการบ้านไม่ใช่ปัญหาโลกแห่งความจริง แน่นอนฉันมีความสุขมากกว่าที่จะยอมรับว่าฉันผิดและบางคนมีการตั้งค่าแบบบ้าคลั่ง - ในกรณีนี้ถามพวกเขาว่าทำไมพวกเขาต้องมีเหตุผลที่ดี
Jon Rhoades

คำตอบ:


6

ปัญหาที่แท้จริงเพียงอย่างเดียวของการทำ NATing แบบหลายชั้นคือมันทำให้โทโพโลยีเครือข่ายของคุณสับสน หากคุณใช้หลายเลเยอร์ของ NAT คุณจะต้องทำการกำหนดเส้นทางแบบสมมาตรระหว่างโฮสต์ทั้งหมดในองค์กรและคุณยังสามารถใช้ศักยภาพในการทับซ้อนพื้นที่ที่อยู่ส่วนตัวภายในเครือข่ายของคุณ ลองนึกภาพถ้าคุณใช้ช่วงที่อยู่ในเลเยอร์ n + 1 NAT ที่ใช้ในเลเยอร์ n NAT เครือข่ายเหล่านั้นจะไม่สามารถกำหนดเส้นทางไปถึงกันได้ แต่โฮสต์ในเลเยอร์ n + 1 อาจมีที่อยู่เดียวกันกับเลเยอร์ n ทำให้ตัวตนของเซิร์ฟเวอร์สับสน

ถ้าฉันวางโครงร่างของเครือข่ายขนาดใหญ่ฉันจะใช้ที่อยู่เพียง 10 * หรือ 172.16-24. * สำหรับโฮสต์บนซับเน็ตของเรา จากนั้นหากบางแผนกหรือบุคคลต้องการ NAT สองเท่าพวกเขาสามารถทำได้ (โดยใช้ 192.168. * เครือข่าย) ด้วยความเข้าใจว่าพวกเขามีความรับผิดชอบต่อเครือข่ายหลังโฮสต์ NAT ของพวกเขา ฉันอยากจะสร้างเครือข่ายย่อยมากกว่าที่จะปล่อยให้เครือข่าย NAT สองเท่าเหล่านั้นใหญ่เกินไป


9

ปัญหาของ NAT หลายระดับนั้นโดยพื้นฐานแล้วเหมือนกับ NAT เลเยอร์เดียว แต่รวมกันแล้ว เช่น:

  1. ความหน่วงเนื่องจากการทำงานพิเศษที่กระทำในแพ็คเก็ตอายุการใช้งาน

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

  3. การส่งต่อพอร์ตขาเข้าของการเชื่อมต่อหากคุณต้องการการเชื่อมต่อขาเข้านั้นจะมีมากขึ้นในการตั้งค่าและบำรุงรักษา

  4. จำนวนพอร์ตที่ จำกัด NAT ทำงานโดยการแปลที่อยู่แหล่งที่มาเป็นของตัวเองในพอร์ตที่แตกต่างกันดังนั้นตัวอย่างเช่น

    • เครื่อง 1 พูดคุยกับเว็บเซิร์ฟเวอร์ภายนอกโดยใช้พอร์ต 1024 เนื่องจากแหล่งที่มาได้รับการแปลไปยังที่อยู่ของกล่อง NAT บนพอร์ต 10,000
    • เครื่องเดียวกันทำการร้องขอสองครั้งหรือเว็บเซิร์ฟเวอร์พร้อมกัน (ไม่ผิดปกติ) โดยใช้พอร์ตต้นทาง 1025 (การเชื่อมต่อพร้อมกันสองรายการจำเป็นต้องมีพอร์ตต้นทางต่างกัน) กล่อง NAT แปลสิ่งนี้เป็น "me on source port 10001"
    • อีกเครื่องพูดคุยทำให้สามการเชื่อมต่อกับเซิร์ฟเวอร์ภายนอก ไม่จำเป็นกล่อง NAT แปลสิ่งเหล่านี้เป็น "ฉันบนพอร์ต 10002, 10003 และ 10004"
    • เมื่อแพ็กเก็ตกลับมาในรูปแบบเครื่องภายนอกกล่อง NAT รู้ว่าสิ่งที่กำหนดไว้สำหรับตัวเองบนพอร์ต 10000 ควรจะไปที่เครื่อง 1 ที่พอร์ต 1024 และต่อไปสำหรับการเชื่อมต่อที่ใช้งานอื่น ๆ

    นี้จะปรับและสำรวยจนกว่าคุณจะมีการเชื่อมต่อขาออกจำนวนมาก - เช่นเครือข่ายขนาดใหญ่หรือเครือข่ายขนาดเล็กที่มีเครื่องที่ทำให้การเชื่อมต่อจำนวนมาก (โปรแกรม P2P เช่นผู้ที่ใช้โปรโตคอล BitTorrent สามารถสร้างจำนวนมากเชื่อมต่อพร้อมกัน) มีเพียง 65536 พอร์ตในโปรโตคอล IP ซึ่งน้อยกว่า 1024 พอร์ตที่สงวนไว้ ในขณะที่ 60,000 อาจฟังดูเยอะ แต่ก็สามารถใช้งานได้อย่างรวดเร็วกล่อง NAT จำเป็นต้องตัดสินใจว่าการลบการแมปเก่าใดซึ่งมักจะไม่ง่ายเหมือน "ปล่อยเก่าที่สุด" สิ่งนี้อาจส่งผลให้เกิดข้อผิดพลาดแปลก ๆ (การเชื่อมต่อแบบสุ่มลดลงเพื่อวินิจฉัยเหตุผลที่ยาก) หรือเครื่องก็ไม่สามารถทำการเชื่อมต่อใหม่ได้สักระยะหนึ่ง

  5. โหลดบนกล่อง NAT หากคุณกำลังใช้กล่องพลังงานต่ำ (เช่นเราเตอร์ NAT สนับสนุนแบบ off-the-shelf แทนที่จะเป็นพีซีแบบเต็มที่มี CPU แบบหนา) เพื่อทำ NAT ของคุณเป็นงานแปลพิเศษ (เทียบกับการส่งต่อแพ็กเก็ตตามตารางเส้นทางพื้นฐาน ) อาจทำให้การถ่ายโอนช้าลง สำหรับการเข้าถึงอินเทอร์เน็ตสิ่งนี้ไม่น่าจะมีปัญหา (การเชื่อมต่อเน็ต 'ของคุณจะเป็นปัญหาคอขวด) แต่เมื่อคุณทำ NAT ระหว่างกลุ่มเครือข่ายท้องถิ่นอาจเป็นเรื่องที่น่าสังเกต


จุดที่ 4 ปัญหานี้ควรจะเหมือนกันสำหรับจำนวนเลเยอร์ใด ๆ ของ NAT หรือไม่!
Rohit Banga

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

6

ประสิทธิภาพการสูญเสีย / ความเร็วลดลงตามคุณภาพของเราเตอร์ที่คุณใช้

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

หากเครื่องจำเป็นต้องเรียกใช้บางสิ่งที่แชร์ผ่านพอร์ตมาตรฐานเท่านั้นคุณสามารถเข้าไปยังอุปกรณ์เราเตอร์ / nat-giving และตั้งกฎเพื่ออนุญาตสิ่งที่คุณต้องการ (1) อย่างไรก็ตามหากคุณกำลังจะทำอุปกรณ์ต่องานอุปกรณ์จำนวนมากมันจะง่ายกว่ามากที่จะมีเส้นทางที่เหมาะสมกับแต่ละเครื่องที่มี IP เฉพาะของตัวเอง (2)

(1) ตัวอย่างเช่นหนึ่งต่อหลาย - เครื่องหนึ่งมีเว็บเซิร์ฟเวอร์และคุณต้องการแบ่งปันให้ผู้อื่น - คุณจะตั้งกฎในเราเตอร์เพื่อพอร์ต 80 ของเครื่องจากนั้นเครื่องใด ๆ จากเครือข่ายภายนอก (หรือภายใน หากเปิดใช้งาน nat-loopback) สามารถไปที่http: //router.ipและสามารถเข้าถึงได้

(2) หากอย่างไรก็ตามทุกเครื่องจะมีเว็บเซิร์ฟเวอร์เปิดอยู่หรือคุณกำลังใช้บริการจำนวนมากคุณจะต้องตั้งค่าฝันร้ายทั้งหมด (แต่มันเป็นไปไม่ได้)

สำหรับสถานการณ์ของคุณ - หากแผนกหนึ่งใช้ 192.168.xx และอีก 192.168.yx ฉันจะผ่านอุปกรณ์และหากไม่มีการซ้อนทับมันอาจเป็นไปได้ที่จะเปลี่ยน subnet จาก / 24 เป็น / 16 (หรือ ในทางกลับกัน) จากนั้นแทนที่เราเตอร์ด้วยสวิตช์ / หรือคล้ายกันและไม่สูญเสียบริการ

เป็นการยากที่จะช่วยเหลือจริง ๆ โดยไม่ทราบว่าเครือข่ายของคุณไม่มีอะไรที่ "ผิด" กับ NAT สองเท่าตราบใดที่มีการตั้งค่าอย่างถูกต้อง อย่างไรก็ตามถ้าคุณไม่ต้องการมันมากหรือมีเหตุผลที่ดีสำหรับมันฉันจะดูการโยกย้ายออกไปถ้าคุณทำได้ (ความเห็นส่วนตัว)


@iamrohitbanga - ตอบคำถามของคุณ (มากสำหรับความคิดเห็น)

การเปรียบเทียบนั้นยาก - การกำหนดเส้นทางทำงานได้ดีสำหรับเครือข่ายส่วนตัวที่ทุกเครื่องมีความสามารถในการเข้าถึงทุกเครื่อง Nat ใช้งานได้ดี แต่ส่วนใหญ่ใช้สำหรับเครือข่ายที่ไม่ต้องการการกำหนดเส้นทางเนื่องจากคุณมักจะต้องตั้งค่ากฎ / เส้นทางเข้า

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

หากคุณมีเราเตอร์ในทางตรงกันข้ามกับ NAT มันจะใช้ IP ภายนอกและให้ "Nat-ed" (ไม่แน่ใจในคำศัพท์ ... ) อินเทอร์เน็ต - เครื่องภายในทั้งหมดมี IP ที่ไม่สามารถเข้าถึงได้จากอินเทอร์เน็ต แต่คุณสามารถตั้งกฎด้วยตนเอง - เช่นพอร์ต 80 ถึงเครื่องหนึ่ง ... มันทำงานได้ดีมากสำหรับการเชื่อมต่อขาออก (ไฟร์วอลล์ อนุญาตให้ใช้กฎ) แต่อาจเป็นฝันร้ายในการตั้งค่ากฎขาเข้าหากคุณให้บริการมากมาย ... และถ้าคุณทำอะไรก็ตามที่ต้องใช้พอร์ตแบบไดนามิก (ftp, Windows AD ฯลฯ ) อาจเป็นฝันร้าย

หวังว่านี่จะช่วยได้ถ้าคุณต้องการที่จะรู้สิ่งอื่นใดโปรดอย่าลังเลที่จะถาม


คุณสามารถเปรียบเทียบสองกลยุทธ์ เครือข่ายใช้เพื่อให้การเข้าถึงอินเทอร์เน็ตไปยังโฮสต์
Rohit Banga

@iamrohitbanga - อัปเดตคำตอบ
William Hilsum

5

ปัญหาหลักของ NAT (โดยทั่วไปและมีหลายเลเยอร์โดยเฉพาะ) คือการแก้ไขปัญหาได้ยากเหลือเกิน


4

ปัญหาที่ใหญ่ที่สุดกับ NAT คือเมื่อมีซอฟต์แวร์เครือข่ายที่ล้าสมัยที่ทำการแปลซึ่งทำให้แอปพลิเคชันจำนวนมากเสียหาย (FTP, VoIP และอื่น ๆ ) ไฟร์วอลล์ / เกตเวย์ที่ทันสมัยมีการแปล (การแก้ไขในข้อกำหนดของ Cisco) ซึ่งทำให้ง่ายขึ้นมาก

ฉันไม่เข้าใจว่าทำไม บริษัท ของคุณใช้ NAT ระหว่างเครือข่ายส่วนตัว ทำไมไม่ลองใช้มันดูล่ะ?



1

เพื่อตอบคำถามส่วนที่สองของคุณใหม่ ...

เราเตอร์แบ่งโดเมนออกอากาศ - เราเตอร์ไม่ได้ส่งต่อแพ็คเก็ต arp พวกเขาอยู่ในเครือข่ายย่อย * การแชร์ไฟล์ Windows ของคุณ (อย่างจริงจัง?) การรับส่งข้อมูล Netbios จะไม่ออกจากเครือข่ายย่อย

ด้วยซับเน็ต:

หากคุณต้องการเข้าถึงการแชร์ Windows จากภายนอกเครือข่ายย่อยคุณสามารถเข้าถึงได้โดยใช้ที่อยู่ IP โดยตรงหรือหากคุณมีการตั้งค่าเซิร์ฟเวอร์ DNS หรือ WINS ด้วยชื่อโฮสต์

กับ NAT:

หาก NAT ของคุณเป็นแบบ PAT และไม่ใช่การแม็พแบบหนึ่งต่อหนึ่งคุณจะต้องกำหนดค่าการส่งต่อพอร์ตเพื่อให้สิ่งนี้ทำงานได้ - สิ่งนี้จะไม่ดี

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

* แน่นอนว่ามีตัวส่งต่อออกอากาศ / รีเลย์ / ผู้ช่วยเหลืออยู่

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