Marshrutga asoslangan IPsec XFRM interfeysi bilan qanday ishlaydi
XFRM interfeysi marshrutga asoslangan IPsec ga yo'naltirish uchun qurilma beradi. if_id, uning orqasidagi xavfsizlik assotsiatsiyalari va tashqi marshrut barchasi mos kelishi kerak.
Marshrutga asoslangan IPsec marshrutlash jadvaliga ilgari siyosat selektorlari qabul qiladigan qarorni topshiradi. Linux da buni imkon beruvchi qism XFRM interfeysidir: trafigi selektor orqali emas, interfeys identifikatori orqali IPsec holati bilan moslashtiriladigan virtual qurilma. Bittasini yaratish bitta buyruqni oladi va tunnel bor-yo'qligi haqida hech narsani isbotlamaydi. Qurilma marshrutlash va xavfsizlik siyosati o'rtasidagi ilgak bo'lib, biror narsa himoyalanishidan oldin bu ilgakning ikki tomoni ham sozlanishi kerak.
Qurilma nima va nima emas
XFRM interfeysi bu marshrutlash dastasi. Unga yo'naltirilgan paketlar o'sha interfeys identifikatoriga havola qiluvchi XFRM siyosatlari bilan moslashtiriladi va agar siyosat va holat mavjud bo'lsa, ular kapsulanadi. Ularsiz interfeys mavjud, hisoblagichlar qimirlamaydi va trafik foydasiz joyga ketadi.
Bu birinchi diagnostik bo'linish. Qurilmaga kiruvchi marshrut marshrutlash faktidir, o'rnatilgan holat xavfsizlik faktidir, qurilmada o'sayotgan hisoblagich esa ikkalasi ham emas. Odamlar interfeys UP ko'rsatgani uchun tunnel ko'tarilgan desa, ular o'z jufti yo'q virtual qurilmaning havola bayroqlarini tasvirlaydi. Bayroq qurilma yaratilgani va yoqilganini bildiradi, ortiq emas.
Yana bir chegara: interfeys identifikatori nom emas. Nomlari o'xshash va identifikatorlari boshqacha ikki qurilma holatni bo'lishmaydi va noto'g'ri identifikator bilan sozlangan ulanish hech qaysi marshrut hech qachon ishlatmaydigan holatni o'rnatadi.
Bittasini to'g'ri tartibda quring
Tashqi qurilmadan va daemon sozlamalariga ham kiritadigan raqamdan boshlang. Misol tashqi interfeys sifatida eth0 va identifikator sifatida 42 dan foydalanadi; bu manzillarni o'zingiznikiga almashtirishingiz kerak.
Qurilmani ko'taring, so'ngra VPN sozlamalariga tegishdan oldin yadro yozib olgan identifikatorni tasdiqlang:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Endi strongSwan da ulanishni o'sha identifikator bilan sozlang, chunki daemon unga havola qiluvchi siyosatlar va holatlarni o'rnatishi kerak. Mahalliy va masofaviy trafik selektorlarini marshrutlamoqchi bo'lgan diapazonga qo'ying, so'ngra o'sha diapazonni qurilmaga yo'naltiring. Daemon sozlamalari va marshrutlash jadvali identifikator va manzillar bo'yicha kelishishi kerak va biri ikkinchisini yetkazib bermaydi.
IKE va ESP ni tunnel marshrutidan tashqarida tuting
XFRM qurilmasiga qaratilgan standart marshrut kapsullangan paketlarni va ular olib yurgan trafikni ham ushlaydi. Natija bir halqa: shlyuz o'z ESP sini ESP qurishi kerak bo'lgan tunnel orqali yuborishga urinadi.
Yechim juftning tashqi manzili uchun aniqroq marshrut jismoniy interfeys orqali bo'lib, u standart marshrutni yutadi chunki ko'proq bitga mos keladi. Belgi asosidagi marshrutlash bir necha tunnel bitta jadvalni bo'lishganda xuddi shu ishni qiladi va strongSwan marshrutga asoslangan joylashtirishlar uchun ikkala yondashuvni hujjatlashtiradi.
Nima tanlasangiz ham, tashqi paket kapsulalashsiz chiqishini tekshiring. Tez tekshiruv tunnel ko'tarilgandan keyin juftning tashqi manziliga ping yuborishdir; agar interfeys ko'tarilgan holda bu muvaffaqiyatsiz bo'lsa, yetib borishdan ko'ra ushlanishdan shubhalaning. Xuddi shu mantiq IKE portiga ham tegishli, chunki daemonning o'z UDP trafigi u o'rnatishga urinayotgan qurilmaga yo'naltirilmasligi kerak.
Shifrlashni ayblashdan oldin hisoblagichlarni ikki joyda tekshiring
Interfeys hisoblagichlari va holat hisoblagichlari turli bosqichlarni o'lchaydi. Qurilmaga yo'naltirilgan paketlar hech qaysi holat mos kelmasa ham qurilmani oshiradi, holat hisoblagichlari esa faqat haqiqatan kapsullangan trafik uchun harakatlanadi.
Ikkalasini o'qing, so'ngra daemonning bola assotsiatsiyasiga qarashini o'qing:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasHolat chiqishi bo'sh bo'lganda qurilma hisoblagichlarining o'sishi marshrutlash ishlayotgani va siyosat mos kelmayotganini bildiradi, odatda identifikator yoki selektor xatosi. Masofaviy tomon hech narsa xabar qilmasa holat hisoblagichlarining o'sishi paketlar chiqayotgani, lekin yetib bormayotgani yoki autentifikatsiyadan o'tmayotganini bildiradi, bu yo'l yoki juft sozlamalariga ishora qiladi. Ro'yxatdagi bola assotsiatsiyasida trafik bo'lmasa, bu bir uchidagi selektor muammosi, buzilgan shifr emas.
Marshrutlarni kim o'rnatishini hal qiling
Bitta marshrutlash jadvali uchun ikki egasi tebranishning odatiy manbasidir. Agar daemon marshrutlarni avtomatik o'rnatsa, tarmoq menejeringiz ham xuddi shu qurilma orqali standart marshrut o'rnatmasligi kerak va ishga tushirish skripti qo'shgan qo'lda marshrut daemon keyingi marta qayta sozlanganda olib tashlanadi.
Bitta egasini tanlang va yozib qo'ying. Marshrutlar daemonda bo'lsa, ishga tushirish skriptini jadvaldan tashqarida tuting va ulanish ta'rifi trafik selektorlarini tasvirlasin. Ular tarmoq menejerida bo'lsa, avtomatik o'rnatishni o'chiring va qayta ulanishda daemon yo'qolgan marshrutni tuzatmasligini qabul qiling.
Yo'naltirish va xavfsizlik devori qoidalari bu ustiga alohida qaror, chunki boshqa xostlarning trafigini o'tkazuvchi shlyuzga ikkalasi ham kerak. Marshrutga asoslangan IPsec bu trafikni oddiy marshrutlash vositalari bilan ifodalashni osonlashtiradi; u siyosat qatlamini ixtiyoriy qilmaydi.