การตรวจสอบสิทธิ์ EAP บน IKEv2 อาจกำหนดให้ไคลเอนต์ตรวจสอบชื่อเซิร์ฟเวอร์ที่แตกต่างกันสองชื่อในการเชื่อมต่อเดียว เกตเวย์ที่สิ้นสุด IKE แสดงตัวตนหนึ่ง และส่วนหลัง EAP ที่สิ้นสุดการแลกเปลี่ยน TLS ภายในอาจแสดงอีกตัวตนหนึ่ง ใน strongSwan ทั้งสองอยู่ในบล็อกการกำหนดค่าที่แตกต่างกัน และการใส่ชื่อในบล็อกที่ผิดจะทำให้เกิดความล้มเหลวที่ดูเหมือนปัญหาใบรับรอง การอ่านว่าการตรวจสอบใดล้มเหลวคือสิ่งที่บอกคุณว่าต้องแก้บล็อกไหน

หนึ่งการเชื่อมต่อ สองตัวตนเซิร์ฟเวอร์

ตัวตนแรกเป็นของการแลกเปลี่ยน IKE ไคลเอนต์เรียกที่อยู่และคาดว่าอีกฝ่ายจะพิสูจน์ตัวตนที่เฉพาะเจาะจง ซึ่งปกติคือชื่อในใบรับรองของเกตเวย์

ตัวตนที่สองเป็นของ EAP ด้วย PEAP หรือ TTLS ไคลเอนต์สร้างอุโมงค์ TLS ไปยังเซิร์ฟเวอร์ตรวจสอบสิทธิ์ภายใน IKE SA และเซิร์ฟเวอร์ภายในนั้นแสดงใบรับรองของตนเอง เมื่อส่วนหลังเป็นโฮสต์แยก ชื่อของมันจะต่างจากชื่อเกตเวย์ ไคลเอนต์ที่ตรวจเฉพาะชื่อแรกยอมรับสิ่งที่ชื่อที่สองอ้าง และไคลเอนต์ที่กำหนดค่าด้วยชื่อเดียวในทั้งสองที่จะล้มเหลวทันทีที่ทั้งสองต่างกันจริง

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

ฟิลด์ใดเป็นของชั้นใด

ใน swanctl ที่อยู่และตัวตน IKE เป็นการตั้งค่าแยกกัน และตัวตน EAP เป็นตัวที่สาม

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

connections {
    office {
        remote_addrs = vpn.example.com
        local {
            auth = eap-peap
            aaa_id = auth.example.com
        }
        remote {
            auth = pubkey
            id = vpn.example.com
        }
    }
}

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

ทำไม aaa_id อยู่ใต้ local

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

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

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

ส่วนหน้าที่ยังแสดงการแยกไม่ออก

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

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

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

แยกแยะตัวตนไม่ตรงจากใบรับรองที่หมดอายุ

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

swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 50 --no-pager

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

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