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

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

ก่อนอื่นต้องตัดสินใจว่ากำลังทำการดำเนินการใดในสองอย่างนี้

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

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

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

อินพุตที่ใช้ซ้ำได้ ตัวตนและอำนาจ สถานะการติดตั้ง

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

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

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

โหนดใหม่ต้องได้รับอะไร และจากใคร

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

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

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

openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20

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

สำเนาของอิมเมจพกพาอะไรไปอย่างเงียบ ๆ

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

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

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

การตรวจสอบการรับเข้าก่อนการผลิต

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

systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'

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

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

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