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

สิ่งที่อิมเมจพาไป และสิ่งที่มันไม่พาไป

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

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

ขั้นตอนที่ 1: สร้างกุญแจในเครื่อง

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

(
    umask 077
    set -C
    wg genkey > /etc/wireguard/device.key &&
        wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)

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

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

ขั้นตอนที่ 2: อนุญาตระเบียนอุปกรณ์

สมมติว่าคลังอุปกรณ์เรียกบอร์ดนี้ว่า device-042 และกำหนด 10.90.0.42/32 ให้ บริการลงทะเบียนต้องตรวจสอบว่าผู้ขอรายนี้มีสิทธิ์ในระเบียนนั้น หมายเลขซีเรียลที่พิมพ์ในแบบฟอร์มไม่ใช่หลักฐาน เพราะหมายเลขซีเรียลถูกพิมพ์ไว้ด้านนอกกล่อง

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

ระเบียนที่ลงทะเบียนแล้วผูกอุปกรณ์ กุญแจสาธารณะ ที่อยู่ที่กำหนด และบทบาทการจัดการที่อนุญาตไว้ WireGuard เองไม่ได้นิยาม API การลงทะเบียนใด ๆ ดังนั้นบริการนั้นจึงเป็นสิ่งที่คุณสร้างและดำเนินการอย่างตั้งใจ

ขั้นตอนที่ 3: เขียนการกำหนดค่าที่เข้าคู่กันสองชุด

อุปกรณ์ต้องการโปรไฟล์ที่กำหนดเส้นทางคำนำหน้าการจัดการเข้าสู่ทันเนล และเกตเวย์ต้องการรายการ peer ที่อนุญาตเฉพาะที่อยู่ต้นทางของอุปกรณ์นี้เอง เมื่อเกตเวย์อยู่ที่ 10.90.0.1 และเครือข่ายการจัดการคือ 10.60.0.0/16 ฝั่งอุปกรณ์มีลักษณะดังนี้:

[Interface]
PrivateKey = <device-042 private key>
Address = 10.90.0.42/32

[Peer]
PublicKey = <trusted gateway public key>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.90.0.1/32, 10.60.0.0/16
PersistentKeepalive = 25

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

บนเกตเวย์ รายการ peer ถูกจำกัดโดยเจตนา:

[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32

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

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

ขั้นตอนที่ 4: ยืนยันการลงทะเบียนเป็นสถานะวงจรชีวิต

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

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

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

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