XFRM интерфейсімен маршрутқа негізделген IPsec қалай жұмыс істейді
XFRM интерфейсі маршрутқа негізделген IPsec-ке бағыттауға арналған құрылғы береді. if_id, оның артындағы қауіпсіздік ассоциациялары және сыртқы маршрут бәрі сәйкес келуі керек.
Маршрутқа негізделген IPsec маршруттау кестесіне бұрын саясат селекторлары қабылдайтын шешімді береді. Linux-те мұны мүмкін ететін бөлік — XFRM интерфейсі: трафигі селектор арқылы емес, интерфейс идентификаторы арқылы IPsec күйімен сәйкестендірілетін виртуалды құрылғы. Оны жасау бір команданы алады және туннель бар-жоғын ештеңе дәлелдемейді. Құрылғы маршруттау мен қауіпсіздік саясаты арасындағы ілгек, және бірдеңе қорғалмас бұрын сол ілгектің екі жағы да конфигурациялануы керек.
Құрылғы деген не және ол не емес
XFRM интерфейсі — маршруттау тұтқасы. Оған бағытталған пакеттер сол интерфейс идентификаторына сілтеме жасайтын XFRM саясаттарымен сәйкестендіріледі, ал саясат пен күй болса, олар инкапсуляцияланады. Оларсыз интерфейс бар, есептегіштер қозғалмайды, ал трафик пайдасыз жерге кетеді.
Бұл бірінші диагностикалық бөлініс. Құрылғыға кіретін маршрут — маршруттау фактісі, орнатылған күй — қауіпсіздік фактісі, ал құрылғыда өсіп жатқан есептегіш екеуі де емес. Адамдар интерфейс UP көрсеткендіктен туннель көтерілді дегенде, олар өз жұбы жоқ виртуалды құрылғының байланыс жалаушаларын сипаттайды. Жалауша құрылғы жасалып, қосылғанын білдіреді, одан артық емес.
Тағы бір шекара: интерфейс идентификаторы — атау емес. Атаулары ұқсас, идентификаторлары бөлек екі құрылғы күйді бөліспейді, ал қате идентификатормен конфигурацияланған қосылым ешбір маршрут пайдаланбайтын күйді орнатады.
Дұрыс ретпен біреуін құрыңыз
Сыртқы құрылғыдан және демон конфигурациясына да жазатын саннан бастаңыз. Мысал сыртқы интерфейс ретінде eth0-ді және идентификатор ретінде 42-ні пайдаланады, бұл мекенжайларды өздеріңізбен ауыстыру керек.
Құрылғыны көтеріңіз, содан кейін VPN конфигурациясына тимес бұрын ядро жазған идентификаторды растаңыз:
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]*'Енді strongSwan-да қосылымды сол идентификатормен конфигурациялаңыз, өйткені демон оған сілтеме жасайтын саясаттар мен күйлерді орнатуы керек. Жергілікті және қашықтағы трафик селекторларын бағыттағыңыз келетін диапазонға қойыңыз, содан кейін сол диапазонды құрылғыға бағыттаңыз. Демон конфигурациясы мен маршруттау кестесі идентификатор мен межелі орындар бойынша келісуі керек, және біреуі екіншісін бермейді.
IKE мен ESP-ні туннель маршрутынан тыс ұстаңыз
XFRM құрылғысына бағытталған әдепкі маршрут инкапсуляцияланған пакеттерді және олар таситын трафикті ұстайды. Нәтиже — цикл: шлюз өз ESP-сін ESP салуы тиіс туннель арқылы жіберуге тырысады.
Шешім — жұптың сыртқы мекенжайы үшін нақтырақ маршрут физикалық интерфейс арқылы, ол әдепкіден басым түседі, өйткені көбірек битке сәйкес келеді. Бірнеше туннель бір кестені бөліскенде таңбаға негізделген маршруттау дәл сол жұмысты атқарады, және strongSwan маршрутқа негізделген орналастырулар үшін екі тәсілді де құжаттайды.
Не таңдасаңыз да, сыртқы пакеттің инкапсуляциясыз шығатынын тексеріңіз. Жылдам тексеру — туннель көтерілгеннен кейін жұптың сыртқы мекенжайына ping жіберу; егер бұл интерфейс көтерілген кезде сәтсіз болса, қолжетімділіктен гөрі ұстап қалуды күдіктеніңіз. Дәл сол логика IKE портына да қатысты, өйткені демонның өз UDP трафигі ол орнатуға тырысып жатқан құрылғыға бағытталмауы керек.
Шифрлауды кінәламас бұрын есептегіштерді екі жерде тексеріңіз
Интерфейс есептегіштері мен күй есептегіштері әртүрлі кезеңдерді өлшейді. Құрылғыға бағытталған пакеттер ешбір күй сәйкес келмесе де құрылғыны арттырады, ал күй есептегіштері тек нақты инкапсуляцияланған трафик үшін қозғалады.
Екеуін де оқыңыз, содан кейін демонның еншілес ассоциацияға көзқарасын оқыңыз:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasКүй шығысы бос кезде құрылғы есептегіштерінің өсуі маршруттаудың жұмыс істеп, саясаттың сәйкес келмейтінін білдіреді, әдетте идентификатор немесе селектор қатесі. Қашықтағы жақ ештеңе хабарламаған кезде күй есептегіштерінің өсуі пакеттердің шығып, бірақ жетпейтінін немесе аутентификациядан өтпейтінін білдіреді, бұл жолға немесе жұп конфигурациясына нұсқайды. Тізімдегі еншілес нөлдік трафикпен болса, бұл бір шеттегі селектор мәселесі, бұзылған шифр емес.
Маршруттарды кім орнататынын шешіңіз
Бір маршруттау кестесіне екі ие — қалтыраудың әдеттегі көзі. Егер демон маршруттарды автоматты түрде орнатса, сіздің желі менеджеріңіз де сол құрылғы арқылы әдепкі маршрут орнатпауы керек, ал іске қосу скрипті қосқан қолмен жасалған маршрут демон келесі рет қайта конфигурацияланғанда жойылады.
Бір ие таңдап, оны жазып қойыңыз. Маршруттар демонға тиесілі болса, іске қосу скриптін кестеден тыс ұстаңыз және қосылым анықтамасына трафик селекторларын сипаттауға рұқсат етіңіз. Олар желі менеджеріне тиесілі болса, автоматты орнатуды өшіріңіз және қайта қосылу кезінде демон жоқ маршрутты жөндеуді қолдамайтынын қабылдаңыз.
Қайта бағыттау және брандмауэр ережелері оның үстінен бөлек шешім, өйткені басқа хосттардың трафигін өткізетін шлюзге екеуі де қажет. Маршрутқа негізделген IPsec бұл трафикті кәдімгі маршруттау құралдарымен білдіруді жеңілдетеді; ол саясат қабатын таңдаулы етпейді.