คุณสามารถส่งต่อพอร์ตเดียวกันกับ # 2 ที่อยู่ IP ภายในที่แตกต่างกันได้หรือไม่


14

ถ้าฉันพอร์ตฟอร์เวิร์ดพอร์ต 80 UDP บนพีซีของฉันฉันจะเข้าถึงพอร์ต 80 จากแล็ปท็อปอื่นของฉันได้หรือไม่


1
ไม่มี เมื่อคุณส่งต่อพอร์ตคุณจะส่งทราฟฟิกทั้งหมดไปยังที่อยู่เดียว หากคุณต้องการอุปกรณ์ 2 เครื่องเพื่อรับข้อมูลบนพอร์ตเดียวกันคุณต้องส่งต่อไปยังอุปกรณ์เดียวที่เชื่อมต่ออุปกรณ์เพิ่มเติม 2 เครื่องเหล่านั้นเข้ากับเครือข่าย (เช่นเราเตอร์ตัวอื่น)
Ramhound

1
พอร์ต 8080 สามารถใช้งานได้อย่างปลอดภัยเป็นทางเลือกแทน 80 บนระบบรอง ดังนั้นส่งต่อ 80 ไปยังพีซีและ 8080 ไปยังโน้ตบุ๊คถ้านั่นคือสิ่งที่จำเป็นสำหรับคำขอของคุณ
Overmind

คุณเขียน "ถ้าฉันพอร์ตฟอร์เวิร์ดพอร์ต 80 UDP บนพีซีของฉันฉันจะเข้าถึงพอร์ต 80 จากแล็ปท็อปอื่นได้หรือไม่" <--- เห็นได้ชัดว่าเป็นอย่างอื่นอะไรคือจุดประสงค์ของพอร์ต
barlop

AT Ramhound เหรอจริง ๆ ทำไมคุณไม่อธิบายว่าคุณทำอย่างนั้นได้อย่างไร
barlop

1
ฉันแนะนำให้คุณยอมรับคำตอบของ VL-80 คำตอบของเขาดีมาก มันตอบสิ่งที่คุณจริงไม่มีใคร asked-- สามารถพูดคุยกับวิธีการที่จะตอบในสิ่งที่คุณมีความหมายที่จะถาม
David Betz

คำตอบ:


14

คุณกำลังถามคำถามสองข้อที่แตกต่างกันที่นี่

คุณสามารถส่งต่อพอร์ตเดียวกันกับ # 2 ที่อยู่ IP ภายในที่แตกต่างกันได้หรือไม่

ไม่คิดเกี่ยวกับมัน หากแพ็กเก็ตมาถึงที่อยู่ภายนอกของคุณและพอร์ต UDP 80 (สมมติว่าคุณมีที่อยู่ IP ภายนอกเพียงแห่งเดียว) เราเตอร์ของคุณจะทราบได้อย่างไรว่าที่อยู่ IP ภายในสองแห่งนั้นควรส่งต่อไปยังที่ใด

หากคุณต้องการโฮสต์สองบริการที่แตกต่างกันคุณจะต้องมีพอร์ตแยกต่างหากสำหรับแต่ละบริการ

ถ้าฉันพอร์ตฟอร์เวิร์ดพอร์ต 80 UDP บนพีซีของฉันฉันจะเข้าถึงพอร์ต 80 จากแล็ปท็อปอื่นของฉันได้หรือไม่

ใช่. การส่งต่อพอร์ตโดยทั่วไปจะมีผลกับแพ็คเก็ตที่มีพอร์ต 80 อยู่ด้านข้างของคุณเท่านั้น เมื่อมีคนพยายามเชื่อมต่อกับคุณเราเตอร์ของคุณจะเห็น:

  • แพ็คเก็ตขาเข้าจากพอร์ตสุ่มของคอมพิวเตอร์เครื่องอื่น X ถึงพอร์ต 80 ของคุณ
  • คำตอบขาออกจากพอร์ต 80 ของคุณไปยังพอร์ต X ของผู้อื่น

แต่การเชื่อมต่อขาออก (เมื่อคุณเยี่ยมชมเว็บเพจอื่น) จะทำให้มันถูกย้อนกลับจากมุมมองของเราเตอร์ของคุณ

  • แพ็กเก็ตขาออกจากพอร์ตสุ่ม X ของคุณไปยังพอร์ต (เว็บเซิร์ฟเวอร์) ของคอมพิวเตอร์เครื่องอื่น 80
  • การตอบกลับที่เข้ามาจากพอร์ต 80 ของอีกพอร์ตของคุณ X

ดังนั้นการส่งต่อพอร์ตจะไม่ส่งผลกระทบใด ๆ เลย

(โดยทั่วไป HTTP จะทำงานบนTCPเฉพาะการทดสอบ QUIC ของ Chrome เท่านั้นที่ใช้ UDP)


เรื่อง " ที่อยู่ IP ภายในสองตำแหน่งใดที่ควรส่งต่อไปยัง " ทำไมไม่ส่งไปยังเซิร์ฟเวอร์ทั้ง 192.168.1.100 และเซิร์ฟเวอร์ 192.168.1.101
Pacerier

1
@Pacerier: ลูกค้าจะทำอย่างไรเมื่อได้รับคำตอบที่แตกต่างกันโดยสิ้นเชิง? มันจะไม่ทำการเชื่อมต่อสองแบบโดยอัตโนมัติที่โปรแกรมร้องขอเพียงหนึ่งเดียว ที่ดีที่สุดก็จะยอมรับหนึ่งแพ็คเก็ตตอบกลับและทิ้งอีกแพ็คเก็ตซึ่งไม่มีประโยชน์เนื่องจากคุณไม่สามารถบอกได้ว่าเซิร์ฟเวอร์ใดที่คุณต้องการ ... เว้นแต่ว่าทั้ง. 100 และ. 101 จะให้บริการที่เหมือนกันทุกประการ ที่เลวร้ายที่สุดคำตอบที่สองแม้จะป้องกันไม่ให้พยายามในการเชื่อมแรกจากจบ (เช่นถ้าเซิร์ฟเวอร์ที่สองช่วยให้แพ็คเก็ตที่ได้รับความหมายสำหรับคนแรกก็จะให้การตอบกลับด้วย TCP RSTs)
user1686

1
@Pacerier: ดังนั้นในกรณีโหลดบาลานซ์เฉพาะ (กับเซิร์ฟเวอร์ที่เหมือนกันเกือบ) ที่สามารถทำได้ - ดูคำตอบของ VL-80 ด้านล่างเพื่อดูรายละเอียดเพิ่มเติม ในความเป็นจริงมีโปรแกรมโหลดบาลานซ์ซึ่งทำซ้ำแพ็กเก็ตเริ่มต้นและใช้เซิร์ฟเวอร์ใดที่ตอบกลับได้เร็วที่สุด แต่ถ้าคุณต้องการโฮสต์เว็บไซต์ที่แตกต่างกันสองวิธีวิธีนี้จะไม่ทำงานเนื่องจากเบราว์เซอร์จะไม่ส่งชื่อโฮสต์ของเว็บไซต์จนกว่าจะมีการเชื่อมต่อ TCP
1686

4

คุณสามารถส่งต่อพอร์ตเดียวกันกับ # 2 ที่อยู่ IP ภายในที่แตกต่างกันได้หรือไม่

ได้คุณสามารถใช้UDPกับTCPได้

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

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

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

ถ้าฉันพอร์ตฟอร์เวิร์ดพอร์ต 80 UDP บนพีซีของฉันฉันจะเข้าถึงพอร์ต 80 จากแล็ปท็อปอื่นของฉันได้หรือไม่

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

สมมติว่าคุณส่งต่อพอร์ต 80 จากการA BในเวลาเดียวกันCจะสามารถเข้าถึงพอร์ต 80 โดยตรงBโดยไม่มีปัญหาใด ๆ

     A (external IP)
     |
 ---------
 |       |
 B       C

2
คำถามเกี่ยวกับเราเตอร์ ไม่มีเราเตอร์ระดับผู้บริโภคที่มีคุณสมบัติการทำสำเนา UDP ที่คัดลอก / TCP และคุณไม่เคยเรียกสิ่งนี้ว่า "การส่งต่อพอร์ต"
Jason C

4
1) คำถามไม่ได้ระบุว่าจะต้องเป็นอุปกรณ์ระดับผู้บริโภค 2) โดยไม่คำนึงถึงสิ่งที่คุณเขียนเทคนิคฉันอธิบายงาน
VL-80

2
ไม่มีเราเตอร์ระดับมืออาชีพที่จะมีคุณสมบัติเหล่านี้เช่นกันเว้นแต่แพ็คเกจจะมีมากกว่าเราเตอร์ ไม่ใช่การส่งต่อพอร์ตและเราเตอร์ไม่ได้ทำหน้าที่เหล่านี้ คำถามที่ถามเกี่ยวกับ "การส่งต่อพอร์ต" และได้รับการติดแท็กเราเตอร์ คิดเกี่ยวกับคนที่จะมีคำถามเดียวกันนี้ค้นหาและอ่านคำตอบของคุณและพิจารณาว่าคุณกำลังช่วยเหลือหรือสับสน คำศัพท์ของคุณเป็นสิ่งที่ผิดทั้งหมด
Jason C

คุณเขียน "เป็นไปได้สำหรับ TCP, ....... เมื่อคุณส่งต่อแพ็คเก็ตเริ่มต้นไปยังโฮสต์ภายในเฉพาะตอนนี้จำเป็นต้องส่งต่อส่วนที่เหลือของแพ็กเก็ตในเซสชันนี้ไปยังโฮสต์ภายในเดียวกัน" <--- แล้ว TCP จะใช้วิธีนี้ได้อย่างไร คุณพูดถึง samplicator สำหรับ UDP, ok .. ดังนั้นมันก็อปปี้สำหรับ UDP .. แต่คุณแนะนำอะไรให้กับ TCP?
barlop

4
คำตอบนี้ดี ฉันกำลังจะพูดอะไรที่คล้ายกัน ด้วย UDP นี่คือสิ่งที่มัลติคาสต์และ IGMP เกี่ยวข้องกับ TCP, ใช่, roundrobin, failover, ฯลฯ ... ใช่เราเตอร์สามารถทำสิ่งนี้ได้ - เราเตอร์ในวันนี้ไม่ใช่อุปกรณ์ตาบอดจากยุค 90 คำถามนั้นคลุมเครือพอที่จะอนุญาตให้อ่านได้หลายครั้ง แต่นี่เป็นวิธีที่ฉันอ่าน qeustion ด้วยเช่นกัน
David Betz

1

คุณไม่สามารถส่งต่อพอร์ตเดียวกันไปที่ IP หลาย ๆ ตัวพร้อมกันฉันไม่เคยเห็นสวิตช์เราเตอร์ / การจัดการที่จะช่วยให้คุณทำเช่นนั้นโดยไม่ส่งข้อผิดพลาด config msg คุณสามารถตั้งค่าสำหรับ IP ได้หลายตัว แต่สามารถเปิดใช้งานกฎการส่งต่อได้เพียงข้อเดียวเท่านั้นในแต่ละครั้ง ดังนั้นคุณสามารถปิดการใช้งานหนึ่งเปิดใช้งานอื่น ๆ และในทางกลับกัน แต่นั่นเป็นเรื่องเสียคุณเพียงแค่ต้องกังวลเกี่ยวกับการส่งต่อพอร์ตหากคุณต้องการเข้าถึงพอร์ต / บริการเฉพาะบนคอมพิวเตอร์ LAN ผ่านที่อยู่ IP ภายนอก พูดว่าถ้าคุณต้องการเรียกใช้ webservers 2 เครื่องบนพีซี LAN ของคุณ 2 เครื่องและสามารถเข้าถึงทั้งสองเครื่องได้ตลอดเวลาวิธีที่ง่ายที่สุดในการทำเช่นนี้คือเปลี่ยนพอร์ตของบริการรับฟังพอร์ต 80 และอีกพอร์ตหนึ่ง บน 8080 หรือพอร์ตที่คุณต้องการ 99% ของบริการจะช่วยให้คุณสามารถโฮสต์ / ฟังพอร์ตใด ๆ ที่คุณต้องการ หากคุณไม่ได้ระบุพอร์ตพอร์ตจะย้อนกลับไปที่ค่าเริ่มต้นของบริการ มีวิธีการขั้นสูงอื่น ๆ เพิ่มเติมในการทำสิ่งต่าง ๆ แต่นี่เป็นวิธีที่ง่ายที่สุดและวิธีการขั้นสูงไม่ได้รับการพิจารณาหรือเรียกว่า "การส่งต่อพอร์ต" ใครก็ตามที่พูดว่าต้องการกลับไปโรงเรียนเครือข่ายต่าง ๆ


1
"ฉันไม่เคยเห็นสวิตช์เราเตอร์ / สวิตช์ที่จัดการซึ่งจะช่วยให้คุณทำเช่นนั้น ... " - เราเตอร์Technicolor TC7200.Uระดับผู้บริโภคจะช่วยให้คุณเพิ่มการกำหนดค่าการส่งต่อสำหรับพอร์ตเดียวกันไปยังที่อยู่ IP ที่แตกต่างกัน ฉันไม่แน่ใจว่ามันจะส่งต่อจริง
Jonathan Cross

-2

ไม่คิดเกี่ยวกับมัน หากแพ็กเก็ตมาถึงที่อยู่ภายนอกของคุณและพอร์ต UDP 80 (สมมติว่าคุณมีที่อยู่ IP ภายนอกเพียงแห่งเดียว) เราเตอร์ของคุณจะทราบได้อย่างไรว่าที่อยู่ IP ภายในสองแห่งนั้นควรส่งต่อไปยังที่ใด

หากคุณต้องการโฮสต์สองบริการที่แตกต่างกันคุณจะต้องมีพอร์ตแยกต่างหากสำหรับแต่ละบริการ

เราเตอร์ของคุณรู้วิธีส่งต่อที่อยู่ได้อย่างไร เนื่องจาก NAT

หากคุณซื้อโดเมนคุณสามารถตั้งชื่อโดเมนนั้นเป็นชื่อคอมพิวเตอร์และชื่อ NETBIOS ของคุณ

ตัวอย่างเช่นคอมพิวเตอร์ที่แตกต่างกัน 2 เครื่องที่โฮสต์เว็บไซต์บนภายในที่แตกต่างกัน แต่บนพอร์ตภายนอกเดียวกันจะต้องตั้งชื่อตามโดเมนหรือคุณต้องตั้งค่าเซิร์ฟเวอร์ DNS ภายในของคุณด้วยโดเมนทั้งสองภายใน IP ที่เพิ่มเข้าไปในระเบียนของเราเตอร์ที่เชื่อมต่อ ชื่อโดเมน (ไม่ใช่ที่อยู่ IP สาธารณะ) เราเตอร์ NAT จะส่งต่อการเชื่อมต่อตามลำดับ

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


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