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

การตรวจสอบข้อหนึ่ง: ปลายทางอยู่ที่ใดจริง ๆ

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

ShapeWhat it meansPass condition
Software on your VMOrdinary subnet addressingRoute and security group permit the client
Attached to your VPCPrivate, but only inside that VPCEndpoint associated, source allowed, route present
Provider-hosted, public endpointOptional private link, not private by defaultA private endpoint exists and DNS points at it

บ่ายที่สูญเปล่าส่วนใหญ่เกิดจากการข้ามการจัดประเภทนี้แล้วไปที่ตารางเส้นทางทันที บริการที่โฮสต์โดยผู้ให้บริการซึ่งมีปลายทางสาธารณะไม่ได้อยู่หลังอุโมงค์ของคุณไม่ว่าแผนภาพจะบอกอย่างไร และบริการที่เชื่อมต่อกับ VPC จะไม่มีวันปรากฏในคำตอบ DNS สาธารณะ

การตรวจสอบข้อสอง: บริการที่เชื่อมต่อกับ VPC เช่น ElastiCache

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

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

การตรวจสอบข้อสาม: ปลายทาง PaaS ที่มีชื่อสาธารณะ

Azure Database for PostgreSQL นำเสนอชื่อเซิร์ฟเวอร์สาธารณะ ไม่ได้ให้แอดเดรสส่วนตัวที่คุณปักในไฟล์ hosts แล้วกำหนดเส้นทางผ่านเกตเวย์ได้ ปลายทางบริการของเครือข่ายเสมือนจำกัดว่าซับเน็ตใดเข้าถึงทรัพยากรได้ ไม่ได้ให้อำนาจกับไคลเอนต์ในองค์กรที่มาผ่าน VPN

การได้การเข้าถึงแบบส่วนตัวหมายถึงการนำปลายทางส่วนตัวหรือการออกแบบลิงก์ส่วนตัวมาใช้ แล้วเพิ่มโซน DNS ส่วนตัวเพื่อให้ชื่อสาธารณะตอบกลับด้วยปลายทางนั้นแทนอินเทอร์เน็ต VPN ที่รวมกับกฎปลายทางบริการเป็นสถาปัตยกรรมอีกแบบที่ดูคล้ายกันเฉพาะในแผนภาพ App Service ใช้ตรรกะเดียวกันจากทิศทางตรงข้าม คือ การรวม VNet ทำให้แอปเรียกออกไปใน VNet ได้ และไม่ได้สร้างเส้นทางส่วนตัวขาเข้าจากอุโมงค์ของคุณ ดังนั้นการเข้าถึงแบบส่วนตัวขาเข้าจึงต้องมีปลายทางส่วนตัว สภาพแวดล้อม App Service หรือเกตเวย์หน้าแอป และจะใช้สิ่งใดได้ขึ้นกับแพ็กเกจ

การตรวจสอบข้อสี่: ผลิตภัณฑ์ที่มีประตูหน้าของตนเอง

Firebase Hosting เชื่อมต่อกับ Cloud VPN ไม่ได้ เพราะชั้นโฮสติ้งเป็นส่วนหน้าแบบทั่วโลก ไม่ใช่สิ่งที่อยู่ภายใน VPC ของโปรเจกต์ ทางเลือกที่บันทึกไว้คือสร้างจุดเข้าที่ควบคุมได้ด้วยตนเอง ด้วยอินสแตนซ์พร็อกซีหรือโหลดบาลานเซอร์ที่หนุนด้วยบัคเก็ต ไม่ว่าจะทางใด เว็บไซต์ก็เลิกเป็นผลิตภัณฑ์โฮสติ้งล้วนและกลายเป็นโครงสร้างพื้นฐานที่คุณดำเนินการเองในตอนนี้ การแลกเปลี่ยนนั้นควรถูกเอ่ยถึงก่อนที่ใครจะสัญญาว่าอุโมงค์จะครอบคลุมมัน

Private API Gateway อยู่ใกล้ฝั่งบริการของ VPC มากกว่า ปลายทาง VPC ชนิด interface เผยแพร่ชื่อโฮสต์ที่คำตอบเป็นแอดเดรสส่วนตัว และทราฟฟิกจากสถานที่ของคุณมาทางอุโมงค์หรือการเชื่อมต่อเฉพาะ ปลายทางต้องเชื่อมโยงกับ API และใบรับรองพร้อมชื่อโฮสต์ต้องตรงกับโดเมนที่ผู้เรียกใช้กำหนดเอง

อุโมงค์ของ Google Cloud VPN ผูกกับแอดเดรส IP ของคู่สัญญา ไม่ใช่ชื่อ การส่งต่อ DNS กำหนดค่าแยกกัน จึงเป็นเหตุให้อุโมงค์สมบูรณ์ดีแต่การค้นหาในโซนส่วนตัวระยะไกลยังล้มเหลว

จากนั้นระบุขอบเขต

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

getent hosts db.internal.example
nc -vz db.internal.example 5432

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

บทความที่เกี่ยวข้อง