ทำไมการเชื่อมต่อแอปจำนวนมากจึงใช้เซสชัน OpenVPN เดียวร่วมกัน
บทสนทนา UDP ภายนอกหนึ่งบทสนทนาพาทุกโฟลว์ภายในที่เส้นทางส่งเข้าไป พอร์ตและโปรโตคอลภายในยังคงอยู่ มีเพียงทูเพิลภายนอกเท่านั้นที่คงที่
ลองนึกถึงเบราว์เซอร์ที่กำลังโหลดหน้า HTTPS ขณะที่ไคลเอนต์ SSH ไปถึงเซิร์ฟเวอร์อีกเครื่องหนึ่ง และตัวแก้ไขชื่อตอบคำถาม ทั้งหมดผ่านเซสชัน OpenVPN เดียว บนอินเทอร์เฟซทางกายภาพคุณเห็นบทสนทนาเดียว ภายในอุโมงค์คุณเห็นสามบทสนทนา มุมมองทั้งสองถูกต้อง และการรู้ว่าเพราะอะไรคือความแตกต่างระหว่างการดักจับที่มีประโยชน์กับที่ทำให้สับสน ติดตามโฟลว์ภายในหนึ่งโฟลว์ตั้งแต่ซ็อกเก็ตจนถึงสายไฟ แล้วการแบ่งชั้นจะไม่เป็นนามธรรมอีกต่อไป
บทสนทนาภายนอกหนึ่งบทสนทนา โฟลว์ภายในมากมาย
ทุกแอปพลิเคชันเปิดซ็อกเก็ตของตัวเอง และเคอร์เนลมอบทูเพิลห้าองค์ประกอบให้ คือ ที่อยู่ต้นทาง พอร์ตต้นทาง ที่อยู่ปลายทาง พอร์ตปลายทาง และโปรโตคอล ทูเพิลเหล่านี้มีอยู่ก่อนที่อุโมงค์ใดจะเข้ามาเกี่ยวข้อง จากนั้นการกำหนดเส้นทางตัดสินว่าทั้งหมดออกผ่านอุปกรณ์อุโมงค์ แพ็กเก็ตที่ส่งให้ OpenVPN จึงยังคงพาเฮดเดอร์ดั้งเดิมไว้ข้างใน OpenVPN เข้ารหัสแพ็กเก็ตภายในนั้นและห่อผลลัพธ์ไว้ในบทสนทนา UDP หรือ TCP ภายนอกหนึ่งบทสนทนากับคู่สัญญา ดังนั้นบทสนทนาภายนอกจึงมีหนึ่งเดียว ขณะที่โฟลว์ภายในมีมากเท่าที่แอปพลิเคชันเปิดขึ้น
ไม่มีอะไรยุบรวม ทูเพิลภายในยังคงอยู่ตั้งแต่ต้นจนจบ และนั่นคือเหตุผลที่ฝั่งไกลยังแยกโฟลว์ทั้งสามออกจากกันได้
พอร์ตที่คงอยู่
สิ่งที่คงที่คือทูเพิลภายนอก ได้แก่ ที่อยู่ของคุณ พอร์ตภายในที่ไคลเอนต์ผูกไว้ ที่อยู่ของคู่สัญญา และพอร์ตบริการที่กำหนดไว้ ทูเพิลนี้คือสิ่งที่ไฟร์วอลล์หรือ NAT ในเส้นทางต้องอนุญาต และเป็นสิ่งที่การดักจับบนลิงก์ขาขึ้นจะแสดง มันยังเป็นสิ่งที่เปลี่ยนหลังการเชื่อมต่อใหม่หรือการสลับเครือข่าย เพราะไคลเอนต์อาจผูกพอร์ตภายในอื่น อุโมงค์หนึ่งไม่ได้หมายถึงพอร์ตต้นทางคงที่หนึ่งพอร์ตตลอดไป
พอร์ตภายในคือสิ่งที่ปลายทางสนใจ โฟลว์ HTTPS รักษาพอร์ตปลายทาง 443 ไว้ภายในอุโมงค์ แม้ว่าการขนส่งภายนอกจะอยู่บนพอร์ตที่ผู้ให้บริการกำหนด ปลายทางของแอปพลิเคชันไม่เคยรู้เรื่องพอร์ตภายนอก
การถอดห่อเปลี่ยนอะไรที่ปลายทางไกล
ที่คู่สัญญา ชั้นภายนอกถูกถอดออก และสิ่งที่เหลือคือแพ็กเก็ตภายใน จากตรงนั้นการส่งต่อและนโยบายการเข้าถึงใช้กับปลายทางและโปรโตคอลภายใน เว็บเซิร์ฟเวอร์ยังได้รับการเชื่อมต่อ HTTPS เดมอน SSH ยังได้รับ SSH และตัวแก้ไขชื่อยังได้รับคำถาม
นี่คือเหตุผลที่กฎที่อนุญาตการขนส่งภายนอกไม่ใช่กฎเดียวกับการอนุญาตบริการภายใน กฎแรกอธิบายเส้นทาง กฎที่สองอธิบายการอนุญาต
TCP ภายนอกหมายถึงโฟลว์เดียว ไม่ใช่การเชื่อมต่อเดียว
เมื่อการขนส่งภายนอกเป็น UDP ชะตาของแต่ละโฟลว์ภายในเป็นอิสระจากกัน ดาตาแกรมที่หายไปกระทบการถ่ายโอนหนึ่งรายการจนถึงการส่งซ้ำของมันเอง เมื่อการขนส่งภายนอกเป็น TCP โฟลว์ภายในทั้งหมดใช้สตรีมไบต์ที่เชื่อถือได้หนึ่งสตรีมร่วมกัน
สตรีมที่ใช้ร่วมกันนี้คือส่วนที่คนมักมองข้าม การกู้คืนเกิดขึ้นครั้งเดียวสำหรับทุกสิ่ง ดังนั้นเซกเมนต์ที่หายไปหนึ่งเซกเมนต์จึงทำให้ทราฟฟิกของทุกแอปพลิเคชันที่มัลติเพล็กซ์อยู่ข้างในล่าช้า ยังคงมีการเชื่อมต่อจำนวนมากที่ปลายทาง และการเชื่อมต่อเดียวบนสายไฟ และผลกระทบแบบหัวคิวก็อยู่บนสายไฟนั้น จำนวนพอร์ตที่กำลังฟังไม่ได้บอกอะไรเกี่ยวกับเรื่องนี้ และนั่นคือเหตุผลว่าการนับพอร์ตเป็นวิธีที่แย่ในการคิดเรื่องประสิทธิภาพของอุโมงค์
อธิบายการตั้งค่าของคุณเองอย่างแม่นยำ
ระบุทราฟฟิกภายในที่เลือกและการขนส่งภายนอกที่เฉพาะเจาะจงซึ่งพามันไป แทนที่จะบอกว่าเครื่องส่งทุกอย่างผ่านพอร์ตเดียว บริการภายในเครื่อง อุโมงค์ที่สอง และตระกูลที่อยู่อีกตระกูลหนึ่งล้วนสร้างโฟลว์ที่ไม่เคยเข้าสู่บทสนทนานี้ การดักจับบนลิงก์ขาขึ้นแสดงทูเพิลภายนอก การดักจับภายในอุโมงค์แสดงทูเพิลภายใน
เก็บทั้งสองอย่าง แล้ววางการประทับเวลาไว้เคียงกัน หากคุณต้องพิสูจน์ว่าแอปพลิเคชันใดสร้างโฟลว์ภายในใด ตารางซ็อกเก็ตบนโฮสต์คือเครื่องมือที่ดีกว่า เพราะมันจับคู่พอร์ตกับโปรเซสโดยตรง จากนั้นจดบันทึกทูเพิลภายนอกที่คุณสังเกตและช่วงเวลาที่คุณสังเกต เพราะการดักจับครั้งถัดไปหลังการเชื่อมต่อใหม่อาจแสดงตัวเลขที่แตกต่างได้อย่างชอบธรรม