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

สี่ดีไซน์ สี่สัญญาที่ต่างกัน

ตารางด้านล่างคือฉบับย่อ อ่านคอลัมน์กลางเป็นสัญญาที่คุณทดสอบได้ และคอลัมน์ขวาเป็นสัญญาที่ไม่มีใครให้

DesignWho initiatesPromise you getPromise you do not get
Routed VPN hubBoth ends, outbound to the hubA routed path to permitted prefixesAccess to services no policy allows
Peer traversal with ICEBoth peers to a rendezvous serviceA path tested between the two peersA direct path through every NAT
TURN relayClient outbound to a relayTransport that survives symmetric NATPeer discovery or a usable directory
Application brokerWorkstation outbound to a brokerOne audited application sessionSubnet-wide reachability

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

ฮับเปลี่ยนว่าใครเรียกออกไป ไม่ใช่สิ่งที่อนุญาต

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

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

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

การทะลุผ่านทำงานเฉพาะเมื่อทั้งสองสแตกนำไปใช้

การทะลุผ่านระหว่างเพียร์คือความสามารถของระบบเฉพาะ ไม่ใช่การตั้งค่าที่ปรับปรุง VPN Interactive Connectivity Establishment รวบรวมที่อยู่ผู้สมัครหลายที่และทดสอบคู่จนกว่าจะได้ผลหนึ่ง: ผู้สมัครโฮสต์บนอินเทอร์เฟซท้องถิ่น ผู้สมัครแบบสะท้อนฝั่งเซิร์ฟเวอร์ที่สร้างจากสิ่งที่ NAT เปิดเผย และผู้สมัครแบบรีเลย์ที่จัดสรรบนรีเลย์ ที่อยู่ส่วนตัวเพียงอย่างเดียวไม่ใช่เส้นทาง เพราะอีกฝั่งกำหนดเส้นทางไปที่นั่นไม่ได้

กรณีรีเลย์ควรค่าแก่การเข้าใจก่อนจะตัดทิ้ง RFC 8656 อธิบาย TURN ว่าเป็นโปรโตคอลที่ไคลเอนต์ขอที่อยู่ขนส่งแบบรีเลย์จากเซิร์ฟเวอร์ และเซิร์ฟเวอร์ส่งต่อทราฟฟิกระหว่างไคลเอนต์นั้นกับเพียร์ของมัน รีเลย์จึงพาข้อมูล ซึ่งต่างอย่างมีนัยสำคัญจากไดเรกทอรีที่เพียงช่วยให้ปลายทางพบกัน การแลกเปลี่ยนที่อยู่รีเลย์กับอีกฝั่งเป็นขั้นตอนการประสานงานที่แอปพลิเคชันต้องทำ

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

โบรกเกอร์แคบกว่าเครือข่าย

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

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

เปรียบเทียบขอบเขตความเชื่อถือ แล้วทดสอบเส้นทาง

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

จากนั้นตรวจสอบว่าเวิร์กสเตชันเข้าถึงอะไรได้จริงขาออก เพราะทุกดีไซน์ข้างต้นขึ้นกับสิ่งนั้น รันสิ่งนี้บนเวิร์กสเตชัน โดยแทนชื่อโฮสต์ที่คุณตั้งใจจะใช้

ss -lntup
nc -vz hub.example.com 443
curl -sS -o /dev/null -w "%{http_code}\n" https://hub.example.com

ยอมรับดีไซน์เฉพาะหลังจากปฏิบัติการทางไกลที่ตั้งใจสำเร็จภายใต้ตัวตนที่ได้รับอนุญาต ตัวตนที่ไม่ได้รับอนุมัติถูกปฏิเสธ และพฤติกรรมเมื่อเส้นทางตรงหรือรีเลย์ไม่พร้อมใช้งานเป็นที่รู้และบันทึกไว้ รวมการเชื่อมต่อใหม่และบริบทการเริ่มต้นปกติของเวิร์กสเตชัน เพราะเซสชันที่เริ่มในออฟฟิศผ่าน LAN ไม่ได้ทดสอบสิ่งใดที่การเข้าถึงทางไกลต้องพึ่งพา

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