Birinchi ishga tushish: WireGuard qurilmalari parkini ro'yxatga olish
Bitta obraz, har bir plataga bitta kalit va qurilmaning o'z da'vosiga ishonmaydigan avtorizatsiya bosqichi. Ishga tushishdan tasdiqlangan peergacha to'rt bosqich.
Plata umumiy obrazdan ishga tushadi, DHCP ijarasini oladi va birov qurilmaga tegishidan oldin tayyorlash skripti ishlaydi. O'sha skriptning bir joyida u faqat shu plataga tegishli va boshqa hech kimga tegishli bo'lmagan WireGuard identifikatorini olishi, o'sha identifikatorni avtorizatsiyadan o'tkazishi va shlyuz qabul qiladigan profil yozishi kerak. Obraz mijoz dasturiy ta'minotini, ko'rib chiqilgan shablonni va shlyuzning ochiq kalitini olib yurishi mumkin. U hech qachon olib yurmasligi kerak bo'lgan narsa butun park bo'lishadigan bitta maxfiy kalitdir, chunki bu bitta o'g'irlangan platani butun park uchun hodisaga aylantiradi. Quyidagi tartib identifikatorni mahalliy, avtorizatsiyani esa aniq saqlaydi.
Obraz nima olib yuradi va nima olib yurmaydi
Paketni, o'rinbosarlar bilan shablonni, shlyuzning ochiq kalitini va ro'yxatga olish mijozini yuboring. Shablon shakl, sir emas: u tayyorlash foydalanuvchisi uchun o'qiladigan bo'lishi va hech qanday kalit materialini o'z ichiga olmasligi kerak.
Maxfiy kalit birinchi ishga tushishda qurilmada yaratiladi va uni hech qachon tark etmaydi. Faqat ochiq yarmi sayohat qiladi, qurilmaning o'zi haqidagi o'z da'vosidan boshqa narsa bilan avtorizatsiya qilinadigan ro'yxatga olish so'rovi ichida. Aynan shu farq o'g'irlangan plataning butun park muammosiga aylanishini oldini oladi. Va bu birinchi ishga tushish skriptlarining ko'pchiligi xato qiladigan qismdir.
1-qadam: kalitni mahalliy yaratish
Yaratishni asosiy tarmoq ulanishi tasdiqlanib ishlagandan keyin himoyalangan katalogda bajaring. Ichki qobiq umask o'zgarishini shu amal bilan cheklab saqlaydi, set -C esa mavjud faylni qayta yozishdan bosh tortadi:
(
umask 077
set -C
wg genkey > /etc/wireguard/device.key &&
wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)
WireGuard tezkor boshlanish ushbu ikki buyruq tayanadigan kalit yaratish munosabatini hujjatlashtiradi. Agar yaratish uzilsa, qurilmani ro'yxatga olinmagan holda qoldiring va ish oqimi fayllarni moslashtirsin. Skript boshidan toza ishlashi uchun mavjud identifikatorni o'chirmang.
Kutilayotgan kalitni qayta urinishlar orasida saqlang. Har bir vaqtinchalik tarmoq nosozligidan keyin identifikatorni qayta yaratish parkning hech kim qurilma bilan moslashtira olmaydigan yetim peerlar bilan qolish yo'lidir.
2-qadam: qurilma yozuvini avtorizatsiya qilish
Inventar bu platani device-042 deb ataydi va unga 10.90.0.42/32 ajratadi deylik. Ro'yxatga olish xizmati bu so'rovchining o'sha yozuvga haqqi borligini tekshirishi kerak. Formaga terilgan seriya raqami dalil emas, chunki seriya raqamlari qutining tashqi tomoniga bosiladi.
Har bir qurilma uchun bootstrap ishonch ma'lumoti, operator tasdig'i yoki apparat bilan qo'llab-quvvatlangan attestatsiya da'voni asoslashi mumkin. So'rovning yaxlitligini va javobning haqiqiyligini himoya qiling va bitta umumiy VPN sirini bitta umumiy zavod ishonch ma'lumoti bilan almashtirmang.
Ro'yxatga olingan yozuv qurilmani, uning ochiq kalitini, tayinlangan manzilini va ruxsat etilgan boshqaruv rolini bog'laydi. WireGuard o'zi hech qanday ro'yxatga olish API sini belgilamaydi, shuning uchun bu xizmat siz ataylab quradigan va boshqaradigan narsadir.
3-qadam: ikki mos konfiguratsiya yozish
Qurilmaga boshqaruv prefikslarini tunnelga yo'naltiradigan profil kerak, shlyuzga esa faqat shu qurilmaning o'z manba manziliga ruxsat beradigan peer yozuvi kerak. Shlyuz 10.90.0.1 da va boshqaruv tarmog'i 10.60.0.0/16 bo'lganda qurilma tomoni shunday ko'rinadi:
[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
Kvadrat qavs ichidagi qiymatlar o'rinbosar, kalit emas. keepalive plata NAT orqasida bo'lib, yetib borish mumkin bo'lib qolishi kerak bo'lganda muhim; u hamma joyda talab qilinmaydi va odat bilan qo'shish radioni sababsiz uyg'oq tutadi.
Shlyuzda peer yozuvi ataylab tor:
[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
Qurilmaning manzil ro'yxatini shlyuz peeriga ko'chirmang. Qurilmada bu ro'yxat tunnelga nima yo'naltirish kerakligini aytadi; shlyuzda u bu peer qaysi manba manzillarini ishlatishi mumkinligini aytadi va bular boshqa bayonotlardir.
Uzatish, firewall qoidalari va boshqaruv tarmog'iga qaytish yo'li hali ham tasdiqlangan ruxsatga yo'l qo'yishi kerak. Ro'yxatga olingan peer uning orqasidagi har bir ilova uchun ruxsat emas.
4-qadam: ro'yxatga olishni hayot tsikli holati sifatida mustahkamlash
Shlyuz yozuvini va qurilma profilini har bir konfiguratsiya egasi orqali qo'llang, so'ng ro'yxatga olishni faqat ko'zlangan identifikator va manzil qabul qilinganda tugallangan deb belgilang. Qayta urinishlar ikkinchi peer yoki ikkinchi manzil ajratish o'rniga o'sha yozuvni moslashtirishi kerak.
Uzilgan tayyorlash uchun tiklash yo'lini saqlang, shlyuz kalitni qabul qilgan va qurilma hech qachon o'z profilini yozmagan holat ham shunga kiradi.
Plata almashtirilganda yoki foydalanishdan chiqarilganda, uning ochiq kalitini va avtorizatsiyasini birga olib tashlang. Yangi kalit ataylab qilingan qayta ro'yxatga olish hodisasi, qayta obrazlashning yon ta'siri emas. Ish tartibi: mahalliy yaratish, inventarga qarshi avtorizatsiya qilish, ikkala tomonni yozish, holatni mustahkamlash, so'ng tunnel orqali bitta boshqaruv so'rovini sinash.