TLDR;เรื่องย่อ
สามารถจัดระเบียบกลุ่มของ VM ซึ่งแต่ละรายการมีที่อยู่ IPv4 สาธารณะของตัวเองเพื่อเลียนแบบการอยู่บนเครือข่ายย่อยส่วนตัวได้หรือไม่ และถ้าเป็นเช่นนั้น ฉันจะเชื่อมต่อเซิร์ฟเวอร์เหล่านั้นกับเครือข่ายที่เหลือได้อย่างไร
การกำหนดค่าปัจจุบัน
10.0.0.0/24 AWS Oregon - สาธารณะ
10.1.0.0/24 AWS Oregon - ส่วนตัว
10.52.5.0/24 บ้าน ซานดิเอโก
10.62.5.0/24 บ้าน ลาสเวกัส
เครือข่ายสาธารณะ AWS มีเซิร์ฟเวอร์ OpenVPN ทั้งซานดิเอโกและลาสเวกัสต่างมีไคลเอนต์ OpenVPN เฉพาะของตัวเองซึ่งเชื่อมต่อกับเซิร์ฟเวอร์ AWS นั้น
ด้วยการใช้การตั้งค่า VPN แบบจุดต่อจุด VM ใด ๆ บนเครือข่ายของฉันสามารถพูดคุยกับ VM อื่น ๆ โดยไม่มีการรบกวน NAT ทุกอย่างทำงานได้อย่างไร้ที่ติ
ปัญหา
ฉันได้รับการขอให้พิสูจน์ว่าเว็บแอปที่ฉันออกแบบ ซึ่งปัจจุบันทำงานที่ AWS Oregon สามารถทำงานได้สำเร็จเช่นเดียวกับนอกระบบนิเวศ AWS
"ไม่มีปัญหา" ฉันพูด ดังนั้นฉันจึงเช่าเซิร์ฟเวอร์ห้าเครื่องจากผู้จำหน่ายชาวสวิสและเตรียมเข้าร่วมเซิร์ฟเวอร์เหล่านั้นกับเครือข่ายของฉัน
ฉันเดาว่าข้อสันนิษฐานของฉันคือ SwissVendor จะจัดเตรียมเซิร์ฟเวอร์ห้าเครื่องให้ฉันและวางไว้ในเครือข่ายภายในที่ฉันเลือก (เช่น 10.72.5.0/24, gw:.1) และอาจให้ IP สาธารณะแก่ฉัน (เช่น "ยืดหยุ่น?") เพื่อเจาะทางของฉันจากภายนอก จากนั้นฉันจะเลือกหนึ่งในห้าเซิร์ฟเวอร์เพื่อเป็นไคลเอนต์ OpenVPN ของฉัน ชี้ไปที่เซิร์ฟเวอร์ AWS Oregon OpenVPN ของฉัน และตอนนี้เซิร์ฟเวอร์สวิสสามารถเข้าถึงได้จากทุกที่ในเครือข่ายของฉัน
อย่างไรก็ตาม น่าเสียดายสำหรับฉัน ที่ SwissVendor นั้นไม่ใช่วิธีการทำงาน เซิร์ฟเวอร์แต่ละเครื่องจากห้าเครื่องมีที่อยู่ IP สาธารณะของตัวเอง และยิ่งไปกว่านั้น ไม่มีการรับประกันว่าที่อยู่ IP เหล่านี้จะอยู่ในซับเน็ตเดียวกันด้วยซ้ำ ดังนั้นฉันจึงลงเอยด้วยสิ่งต่อไปนี้:
เซิร์ฟเวอร์ 1: 11.11.11.11/24
เซิร์ฟเวอร์ 2: 22.22.22.22/24
เซิร์ฟเวอร์ 3: 33.33.33.33/24
เซิร์ฟเวอร์ 4: 44.44.44.44/24
เซิร์ฟเวอร์ 5: 55.55.55.55/24
พอร์ต RDP 3389 เปิดสู่โลกบนแต่ละเซิร์ฟเวอร์ ช่วยให้ลูกค้าเข้าถึงได้ผ่านรหัสผ่านการดูแลระบบที่แชร์ไว้ล่วงหน้า การเชื่อมต่อขาเข้าอื่นๆ ทั้งหมดถูกบล็อกโดยไฟร์วอลล์ของเซิร์ฟเวอร์ซึ่งเปิดไว้ตามค่าเริ่มต้น นั่นเป็นวิธีที่ SwissVendor จัดเตรียมเซิร์ฟเวอร์ให้กับลูกค้าเช่นฉัน ฉันไม่สามารถเปลี่ยนสิ่งนี้ได้
เป้าหมายของฉัน
นี่คือสิ่งที่อธิบายได้ยากเนื่องจากฉันเป็นมือสมัครเล่น ไม่ใช่มืออาชีพ ในโลกอุดมคติของฉัน:
- เซิร์ฟเวอร์สวิสแต่ละแห่งนอกจากจะมีที่อยู่สาธารณะจริงของตนเองแล้ว ยังมี NIC สังเคราะห์/เสมือนบนเครือข่ายภายใน 10.72.5.0/24
- เซิร์ฟเวอร์จะสามารถสื่อสารกันด้วยความเร็วสูงโดยแทบไม่มีความหน่วงแฝง [คุณสามารถสันนิษฐานได้ว่าเซิร์ฟเวอร์สวิสแต่ละเครื่องอาศัยอยู่ในตู้จริงเดียวกัน และจริง ๆ แล้วอาจอยู่บนฮาร์ดแวร์จริงชิ้นเดียวกัน!]
- เซิร์ฟเวอร์เครื่องหนึ่งจะทำหน้าที่เป็นไคลเอนต์ OpenVPN ซึ่งเชื่อมต่อกับเซิร์ฟเวอร์ AWS OpenVPN ของฉัน ซึ่งจะดึง 10.72.5.0/24 เข้าสู่เครือข่ายของฉันอย่างมีประสิทธิภาพ ทำให้เซิร์ฟเวอร์เหล่านี้แต่ละเครื่องสามารถเข้าถึงได้จากเครือข่ายที่เหลือของฉัน แต่ไม่สามารถเข้าถึงอินเทอร์เน็ตได้ และไม่มีการรบกวน NAT
ฉันคิดไม่ออกเลยว่าจะดึงสิ่งนี้ออกมาได้อย่างไร หรือเป็นไปได้เลยด้วยซ้ำ ต่อไปนี้เป็นวิธีการสองวิธีที่ฉันได้พิจารณา แต่ในที่สุดก็ตัดออก:
แนวคิดที่ล้มเหลว #1: แต่ละเซิร์ฟเวอร์ทำหน้าที่เป็นไคลเอนต์ OpenVPN
ฉันสามารถละทิ้งความคิดที่จะมีไคลเอนต์ OpenVPN เฉพาะบนเครือข่ายสวิสได้ เซิร์ฟเวอร์ของสวิสแต่ละเครื่องจะเรียกใช้ไคลเอนต์ OpenVPN ของตนเอง โดยระบุที่อยู่ IP เพิ่มเติมของตนเอง ดังนั้น นอกเหนือจากที่อยู่ IP สาธารณะ แต่ละเซิร์ฟเวอร์จะมี IP เสมือนด้วย ซึ่งน่าจะเป็นไปตาม 10.8.0.0/24
สิ่งนี้จะทำงานได้ตราบเท่าที่เซิร์ฟเวอร์ของสวิสจะสามารถสื่อสารระหว่างกันได้เช่นเดียวกับเครือข่ายอื่นๆ ของฉัน
ปัญหาคือสำหรับแพ็กเก็ตที่จะได้รับจาก SwissServer1 ไปยัง SwissServer2 นั้นจะต้องเดินทางไปจนถึง Oregon และย้อนกลับอีกครั้ง ซึ่งไม่มีประสิทธิภาพเลย เนื่องจากทั้ง SwissServer1 และ SwissServer2 อยู่บนเครื่องเดียวกัน จำได้ว่าฉันต้องการการสื่อสารด่วนที่มีเวลาแฝงต่ำระหว่างเซิร์ฟเวอร์สวิส
แนวคิดที่ล้มเหลว #2: เซิร์ฟเวอร์สวิสสื่อสารโดยใช้ที่อยู่สาธารณะ
ฉันสามารถอนุญาตให้เซิร์ฟเวอร์ของสวิสสื่อสารกันเองได้โดยใช้ที่อยู่ IP สาธารณะของตน สิ่งนี้จะช่วยแก้ปัญหาเวลาแฝงได้อย่างแน่นอน
ปัญหาหลักที่ฉันคาดการณ์ไว้คือวิธีการนี้เนื่องจาก IP ของเซิร์ฟเวอร์สวิสแต่ละเครื่องเป็นสาธารณะ ดังนั้นฉันจึงต้องระมัดระวังอย่างมากในการกำหนดค่ากฎไฟร์วอลล์ของเซิร์ฟเวอร์แต่ละเครื่อง ตัวอย่างเช่น หาก SwissServer1 ต้องการใช้การแชร์ไฟล์กับ SwissServer2 ฉันจะต้องทราบอย่างแน่ชัดว่าพอร์ตใดใช้เพื่ออำนวยความสะดวกนั้น และเปิดเฉพาะพอร์ตเหล่านั้น และเฉพาะกับ SwissServer1 หากฉันทำผิดพลาดเพียงเล็กน้อย ฉันอาจลงเอยด้วยการเปิดเผยบริการแบ่งปันไฟล์นั้นต่ออินเทอร์เน็ตสาธารณะ
นอกจากนี้ยังมีปัญหาในการเชื่อมต่อเครื่องเหล่านี้กับเครือข่ายที่เหลือของฉันด้วยวิธีที่สะอาดหมดจด ดังนั้นฉันจึงเห็นว่าวิธีนี้ไม่ใช่การเริ่มต้นเช่นกัน
ไปจากที่นี่ที่ไหน?
ฉันได้ค้นคว้าแล้วและไม่สามารถหาแนวทางที่ถูกต้องได้ ฉันคิดว่าสิ่งที่ฉันกำลังมองหาคือสิ่งที่เรียกว่า "สะพาน" และฉันคิดว่า OpenVPN อาจรองรับสิ่งนี้ แต่ฉันไม่แน่ใจ ตามที่ฉันเข้าใจจากการวิจัยอย่างกว้างขวางของฉันใน Wikipedia และ Reddit การใช้เทคโนโลยีบริดจ์อาจทำให้เซิร์ฟเวอร์สวิสทั้งห้าเครื่องทำงานราวกับว่าพวกเขาอยู่ในเครือข่ายเดียว เช่น 10.52.7.0/24 ซึ่งช่วยอำนวยความสะดวกในการสื่อสารที่รวดเร็วระหว่างเพื่อนเหล่านี้ . แต่แล้วอะไรล่ะ? ฉันจะทำให้ 10.52.7.0/24 เข้าถึงได้จาก/จากเครือข่ายที่เหลือของฉันได้อย่างไร
เซิร์ฟเวอร์ทั้งหมดกำลังใช้งาน Windows 2019 Server หรือ Windows 2022 Server
คำแนะนำใด ๆ และชื่นชม!