ไคลเอนต์ OpenVPN สองตัวบนโฮสต์ Linux เดียว: เส้นทางเป็นของใคร
ไคลเอนต์สองตัวใช้โฮสต์เดียวกันได้หากแต่ละคำนำหน้ามีเจ้าของ เดินตามลำดับ: วัตถุประสงค์ พูล การตั้งชื่ออินสแตนซ์ และการทดสอบหยุดต่ออุโมงค์
โปรไฟล์ทั้งสองรายงานว่าเชื่อมต่อแล้ว และตัวหนึ่งกำลังรับส่งทราฟฟิกที่ตั้งใจไว้ให้อีกตัวอย่างเงียบ ๆ ไคลเอนต์สองตัวบนโฮสต์เดียวเป็นรูปแบบที่รองรับ สองไคลเอนต์ที่ไม่มีเจ้าของสำหรับแต่ละคำนำหน้าไม่ใช่ งานนี้ไม่ได้อยู่ที่การยกอุโมงค์ที่สองขึ้นมาเท่ากับการตัดสินใจว่ากระบวนการใดมีสิทธิ์อ้างเส้นทางใด เดินตามลำดับด้านล่างแล้วการกำหนดค่าจะตามมาจากคำตอบ
เริ่มด้วยการถามว่าอุโมงค์ที่สองมีไว้ทำอะไร
สามสถานการณ์ดูเหมือนกันบนบรรทัดสถานะและต้องใช้การออกแบบต่างกัน การแยกตามปลายทางส่งคำนำหน้าหนึ่งผ่านโปรไฟล์สำนักงานและอีกอันผ่านโปรไฟล์ห้องแล็บ โดยไม่มีอันใดอ้างเส้นทางเริ่มต้น การแยกตามแอปพลิเคชันมักเก็บอุโมงค์เต็มหนึ่งอุโมงค์และบังคับทราฟฟิกเฉพาะด้วยกฎนโยบาย การสลับเมื่อล้มเหลวจะเปิดอุโมงค์เพียงหนึ่งเดียวในแต่ละครั้ง ซึ่งหมายความว่าตัวที่สองต้องไม่เริ่มโดยอัตโนมัติ
เขียนกรณีลงก่อนเปิดไฟล์กำหนดค่าใด ๆ เพราะคำตอบนั้นกำหนดทุกอย่างที่ตามมา
รูปแบบที่เสียบ่อยที่สุดคืออุโมงค์เต็มสองอุโมงค์ที่ทั้งคู่ดันเส้นทางเริ่มต้นออกไป โดยตัวที่เชื่อมต่อหลังสุดชนะและตัวแรกยังคงแสร้งทำต่อไป สถานะนั้นดูเหมือนตั้งใจจากบรรทัดสถานะและเสียเวลาหนึ่งวันจากตารางเส้นทาง การตั้งชื่อกรณีตั้งแต่แรกทำให้มันเป็นไปไม่ได้ ไม่ใช่แค่ไม่น่าเป็นไปได้
ดูก่อนที่พูลก่อนเส้นทาง
เซิร์ฟเวอร์สองตัวแจกที่อยู่จากช่วงส่วนตัวเดียวได้ง่าย และเมื่อทำเช่นนั้น ไคลเอนต์จะเหลืออินเทอร์เฟซสองตัวภายในคำนำหน้าเดียว จากนั้นจะกำหนดปลายทางใดให้อินเทอร์เฟซตามที่อยู่ไม่ได้ เพราะทั้งคู่ดูถูกต้องเท่ากัน เปลี่ยนเลขพูลหนึ่งอันแทนการคิดกฎเพื่อตัดสินเสมอ
ตรวจเครือข่ายท้องถิ่นด้วย เพราะ LAN ที่บ้านหรือที่ทำงานซึ่งทับซ้อนกับช่วงอุโมงค์สร้างความกำกวมแบบเดียวกันจากอีกด้าน เปรียบเทียบที่อยู่บนโฮสต์กับการกำหนดค่าเซิร์ฟเวอร์ทั้งสองก่อนโทษไคลเอนต์ การเปลี่ยนพูลบนเซิร์ฟเวอร์ห้องแล็บเป็นการแก้ห้านาที ขณะที่ทางอ้อมด้วยการกำหนดเส้นทางตามนโยบายสำหรับคำนำหน้าที่ทับซ้อนเป็นภาษีถาวรสำหรับทุกคนที่อ่านการกำหนดค่าภายหลัง ตัดสินว่าต้องการสิ่งใดก่อนเลือกว่าจะแทรกแซงที่ใด
สองตระกูลที่อยู่หมายถึงการตรวจนี้สองรอบ พูล IPv6 ชนกันเงียบเท่า IPv4
ให้เจ้าของแก่ทุกโปรไฟล์
หนึ่งอินสแตนซ์ต่อโปรไฟล์ หนึ่งไฟล์กำหนดค่าต่ออินสแตนซ์ และหนึ่งชื่อที่ระบุคู่ ในแพ็กเกจสไตล์ Debian ชื่อหลังเครื่องหมาย @ เป็นตัวเลือกไฟล์ จึงเป็นเหตุให้สองโปรไฟล์ที่ใช้ชื่ออินสแตนซ์เดียวกันไม่มีทางทำงานทั้งคู่ได้ ยืนยันการจับคู่จากยูนิตที่ติดตั้ง ไม่ใช่จากบทแนะนำ
systemctl cat [email protected]
ip -4 addr showจากนั้นตัดสินว่าใครติดตั้งเส้นทาง ซึ่งเป็นคำถามเชิงนโยบายไม่ใช่เชิงไวยากรณ์
เมื่อเซิร์ฟเวอร์สองตัวดันชุดที่เข้ากันไม่ได้ ให้เพิ่มroute-nopullและระบุเฉพาะคำนำหน้าที่แต่ละโปรไฟล์ต้องการ หรือปล่อยให้ตัวหนึ่งเก็บเส้นทางเริ่มต้นไว้และบังคับทิศทางที่เหลือด้วยกฎนโยบายสองกระบวนการที่ต่างติดตั้งเส้นทางเริ่มต้นจะจบด้วยผู้ชนะเพียงหนึ่งและไม่มีใครบอกได้ว่าทำไม เมื่ออุโมงค์ทั้งสองรับส่งทราฟฟิกจากแหล่งต่างกัน คำตอบอาจออกทางอุโมงค์ที่ผิด และรูปแบบที่ยืนได้คือเครื่องหมายการเชื่อมต่อที่ถูกกู้คืนบนคำตอบและถูกบังคับเข้าไปในตารางของตัวเอง จำกัดเครื่องหมายเพื่อให้แพ็กเก็ตที่เข้ารหัสของอุโมงค์เองไม่ตรงกับมันเลย
ตรวจสอบทีละอุโมงค์ แล้วหยุดหนึ่งตัว
เมื่อทั้งคู่อยู่ขึ้นแล้ว เก็บค่าอ่านสามอย่าง: ที่อยู่บนอุปกรณ์อุโมงค์แต่ละตัว เส้นทางไปยังโฮสต์ที่อยู่หลังแต่ละตัว และเส้นทางที่ปลายทางนอกทั้งคู่จะเลือกใช้ รายการเส้นทางธรรมดาหยุดอธิบายการค้นหาขั้นสุดท้ายเมื่อกฎเข้ามาเกี่ยวข้อง ดังนั้นถามเคอร์เนลว่าจะเลือกอะไรจริง ๆ จากนั้นหยุดอินสแตนซ์หนึ่งและดูว่าอะไรหายไป หากการหยุดตัวแรกกระทบตัวที่สอง แสดงว่ายังมีบางอย่างใช้ร่วมกันระหว่างกัน: เส้นทาง ชื่ออุปกรณ์ หรือกฎไฟร์วอลล์ที่ไม่มีใครแยก
ip rule show
ip route get 203.0.113.9นำโปรไฟล์ที่หยุดไว้กลับมาและทำการตรวจเดิมซ้ำ เพราะอุโมงค์ที่ทำงานครั้งเดียวหลังรีบูตและไม่ทำงานอีกเลยคือบั๊กวงจรชีวิตที่ใส่ชุดแต่งกายของการกำหนดเส้นทาง
บันทึกในบันทึกการติดตั้งว่าโปรไฟล์ใดเป็นเจ้าของคำนำหน้าใด ไว้ข้างช่วงพูล อุโมงค์สองอันเป็นการจัดวางโดยเจตนา และผู้อ่านคนถัดไปต้องเห็นขอบเขตก่อนแตะโปรไฟล์ใด ๆ หากไม่มีบันทึกนั้น ขอบเขตจะถูกค้นพบใหม่โดยคนที่อยู่เวรเมื่อคำนำหน้าที่ใช้ร่วมกันพังลงในที่สุด