การตอบกลับ NAT และ UDP


20

กรุณาตรวจสุขภาพจิต

ถ้าฉันส่งแพ็กเก็ต UDP จากเครื่อง A ด้านหลัง NAT ไปยังพอร์ต B ของเครื่อง N ซึ่งเครื่อง B อยู่นอก NAT (ที่อื่น ๆ บนอินเทอร์เน็ต) ฉันสามารถคาดหวังได้หรือไม่ว่า NAT จะส่งแพ็กเก็ต UDP ที่ได้รับจากเครื่อง B บนพอร์ต N กลับไป พอร์ต N บนเครื่อง A โดยไม่จำเป็นต้องส่งต่อพอร์ตด้วยตนเองบน NAT?

คำตอบ:


21

เฉพาะในกรณีที่พอร์ตต้นทางของดาต้าแกรมขาออกดั้งเดิมนั้นเป็นพอร์ต N ด้วยและหาก NAT ไม่ได้เลือกที่จะลอยพอร์ตต้นทาง

นั่นคือดาตาแกรม UDP แรกจาก Machine A มีลักษณะเช่นนี้ใน LAN ของคุณ:

       Source IP: MachineAPrivate  
     Source Port: PortA     <-- note this is typically different than the destination port  
  Destination IP: MachineBPublic  
Destination Port: PortN  

จากนั้นหลังจากที่ NAT ถูกแปลในทิศทางขาออกแล้วจะมีลักษณะดังนี้:

       Source IP: NATPublic  
     Source Port: PortC   <-- note this may or may not be the same as "PortA" above  
  Destination IP: MachineBPublic  
Destination Port: PortN  

ตอนนี้เมื่อ Machine B ตอบกลับโดยทั่วไปการตอบกลับจะเป็นดังนี้:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: NATPublic  
Destination Port: PortC  

จากนั้นหลังจากผ่านกระบวนการแปล NAT ขาเข้า:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: MachineAPrivate  
Destination Port: PortA  

ดังนั้นหากเครื่อง A ส่งเฟรมจากพอร์ตต้นทางเดียวกันกับพอร์ตปลายทาง ("พอร์ต N") และถ้า NAT สามารถรักษาพอร์ตต้นทางนั้นได้ (เช่นถูกกำหนดค่าให้รักษาพอร์ตต้นทางเมื่อเป็นไปได้และพอร์ตต้นทางนั้น ไม่ได้ใช้งาน) แล้วคุณสามารถคาดหวังการตอบกลับ "การท่าเรือ N" ที่จะได้รับกลับไปที่เครื่องเอ

นี่คือการอ้างอิงที่เชื่อถือได้เกี่ยวกับพฤติกรรมของ NAT UDP ที่เหมาะสม:
RFC 4787 / BCP 127: การแปลที่อยู่เครือข่าย (NAT) ข้อกำหนดด้านพฤติกรรมสำหรับ Unicast UDP


3

ปิด แต่เครื่อง B ต้องดูที่อยู่ต้นทางและหมายเลขพอร์ตที่ได้รับจริงซึ่งอาจแตกต่างจาก N

NAT ที่ Machine A อาจไม่ใช้พอร์ตเดียวกับ N ที่ Machine A ส่งไป (ลองนึกภาพเครื่อง C หลัง NAT เดียวกันนั้นก็ส่งที่พอร์ต N: พวกเขาไม่สามารถใช้งานได้ทั้งคู่) ดังนั้นเครื่อง B อาจเห็นพอร์ตต้นทางอื่นเอ็ม แต่ถ้า NAT ทำเช่นนั้นก็ควรยอมรับทราฟฟิกที่ส่งกลับไปที่ พอร์ต M และแมปกลับไปที่ N ที่ Machine B โดยอัตโนมัติ

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


-1

ฉันจะไม่คาดหวังว่า

คุณสามารถมีทวีคูณ IP หลัง NAT ดังนั้นคุณต้องเลือกว่าควรจะส่งต่ออย่างไร ด้านนอกของ NAT จะมีเพียงเราเตอร์ IP เท่านั้นที่สามารถมองเห็นได้และ NAT IP ภายในจะมองไม่เห็น

UDP ไม่ได้ทำการเชื่อมต่อ แต่เป็นเพียงเดตาแกรมที่เดินทางข้ามเครือข่าย

นอกจากนี้ยังมีความแตกต่างระหว่างการส่งพอร์ตและรับหมายเลขพอร์ต


คุณถูกต้องที่ UDP ไม่ได้ "เชื่อมต่อแบบฟอร์ม" อย่างไรก็ตามพอร์ตต้นทางและปลายทางที่จับคู่กันจริง ๆ แล้วอนุญาตให้ NAT ระบุ IP ที่ไม่ซ้ำกันหลัง NAT เพื่อส่งแพ็กเก็ตไปยัง
portforwardpodcast
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.