OpenVPN бағыты неге strongSwan XFRM саясатына жол береді
Нақты OpenVPN бағыты XFRM саясатын жоймайды: бағытты және саясат селекторларын оқып, содан кейін тарылтыңыз, ерекшелік жасаңыз немесе XFRM интерфейсіне көшіңіз.
Пакеттер OpenVPN бағытын ұстанып, соған қарамастан IPsec саясатына ілігуі мүмкін, және бұл үйлесім дұрыс бұрыштан басқа барлық бұрыштан маршруттау қатесіндей көрінеді. Linux бағытты шешіп, содан кейін бөлек қауіпсіздік саясаттарының дерекқорына жүгінеді, сондықтан нақтырақ межелік бағыт сәйкес келетін XFRM саясатын ығыстырмайды. Көрінетін белгі – хосттан шығып, ешқашан жетпейтін трафик, ал екі туннель де өзін сау деп хабарлайды. Оны үш нұсқа шешеді, және қайсысын таңдауыңыз сол префиксті екі жолдың қайсысы алып жүруі керектігіне байланысты.
Екі шешім, біреуі емес
Бағыт таңдау тар сұраққа жауап береді: қай келесі хоп пен қай бастауыш мекенжай бұл пакетті алып жүруі керек. Қауіпсіздік саясаттарының дерекқоры басқа сұраққа жауап береді: бұл пакетке IPsec қорғанысы қажет пе және қандай селекторлар астында. Екеуі де бір пакет үшін жұмыс істейді, және біріншісін қанағаттандыру екіншісі туралы ештеңе айтпайды. Сондықтан метриканы өзгерту немесе статикалық бағыт қосу белгіні өзгеріссіз қалдыруы мүмкін.
Кең IPsec селекторы әдеттегі себеп. 172.16.0.0/12-ні қорғайтын саясат 172.20.8.0/24-ті де қамтиды, оған әкімші OpenVPN туннелі арқылы жетуді көздеуі мүмкін. Ниет тек маршруттау кестесінде бар, ал саясат дерекқоры ол туралы ешқашан білмеді.
Мұны екі метриканың жарысы емес, конфигурацияланған екі қорғаныс жолының қақтығысы ретінде қараңыз. Түзету қате ауқыммен конфигурацияланған компонентке тиесілі.
Ядро шын мәнінде таңдайтын бағытты оқыңыз
Ядро жасайтын іздеуден бастаңыз, оның ішінде бастауыш мекенжай және оны басқа кестеге бұруы мүмкін кез келген саясат ережесі. Негізгі кестедегі бағыт ертерек ереже басқа кестені таңдаса, ешқашан қаралмауы мүмкін, ал ең ұзын префиксті сәйкестендіру тек ереже таңдаған кестенің ішінде ғана қолданылады.
ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15
Соңғы команда маңызды, өйткені ол таңдалған бағытты ядро қолданатын бастауыш мекенжаймен бірге шығарады. Бұл шығысты IPsec саясаты сәйкес келетін селектормен салыстырыңыз. Бағыт OpenVPN интерфейсіне сілтеп, саясат әлі де сол жұпқа сәйкес келсе, сіз қақтығысты болжаусыз қайта жаңғырттыңыз.
Демптерді билетке жетпей тұрып қатысы жоқ мекенжайлардан таза ұстаңыз. Өндірістік хосттың маршруттау кестесі ішкі топологияны алып жүреді, және тек сұраққа жауап беретін жолдарды қоюға тұрарлық.
Сондай-ақ қолданылатын саясатты оқыңыз
Саясат тізімі бағытты, селекторларды және сәйкес пакетке не болатынын шешетін үлгіні көрсетеді. Алдымен шығыс бағытын, содан кейін қайтару трафигі үшін кіру жағын оқыңыз, өйткені бір жақты ерекшелік басталып, ешқашан аяқталмайтын байланыс тудырады.
ip -s xfrm policy
swanctl --list-sas
Тізімдегі селекторларды байланыс келіскен префикстермен салыстырыңыз. strongSwan-ның бағыт орнатуын өшіру бұл саясаттарды жоймайды, ал метриканы өзгерту саясаттың қай бастауыш-межелік жұбын қорғайтынын өзгертпейді. Бұл екі жалған түзетуді ертерек жоққа шығаруға тұрарлық, өйткені адамдар ең алдымен соны сынайды.
Егер тізімде күткен префиксіңіз үшін саясат жоқ болса, мәселе басқа жерде және маршруттау кестесі шынымен шындықты айтып тұрған болар. Егер онда префиксті қамтитын кеңірек саясат болса, сіз ұстауды таптыңыз.
Екі жол да заңды болғандағы үш нұсқа
Кең префикс талап емес, қолайлылық болғанда, IPsec селекторын тарылту ең таза нұсқа. Қашықтағы трафик селекторын шынымен IPsec артындағы қосымша желілерге дейін азайту қақтығысты барлық хост үшін бірден жояды, және ол жаңа компонент емес, кілтті қайта келісуге тұрады.
Кең селектор қалуы керек болса, өткізу ерекшелігі хирургиялық нұсқа. strongSwan баласы pass режимін қолданатын бөлек байланысты қолдайды, бұл ядроға сәйкес трафикті IPsec өңдемеуі керектігін айтады. Loopback қашық мекенжайы бұл байланыстың кіріс серіктестер үшін таңдалуына жол бермейді, ал селекторлар бәрін емес, нақты рұқсат етілген жұпты сипаттауы керек.
connections {
openvpn-exception {
remote_addrs = 127.0.0.1
children {
openvpn-exception {
local_ts = 10.44.7.0/24
remote_ts = 172.20.8.0/24
mode = pass
start_action = trap
}
}
}
}
strongSwan конфигурация мысалдары осы саясат түрін және loopback серіктес конвенциясын құжаттайды. Үшінші нұсқа – XFRM интерфейстерімен маршрутқа негізделген дизайн, ол саясатты жаһандық селекторға емес, аталған интерфейс арқылы маршрутталған трафикке байланыстырады. Бұл түзету емес, көшу, және трафик әлі де келісілген селекторларды қанағаттандыруы керек.
| Option | Use it when | Cost |
|---|---|---|
| Narrow the selector | The broad prefix was convenience | A rekey and a policy review |
| Passthrough child | The broad selector must stay | One exception per intended pair |
| XFRM interface | Policy should follow routing | A design migration |
Қалғанын әлсіретпей ерекшелікті дәлелдеңіз
Өзгерісті жүктегеннен кейін ерекшелікті және қорғалған күйде қалуы тиіс қарапайым межені сынап көріңіз. Екі бағытты да тексеріңіз, содан кейін OpenVPN туннелін түсіріп, ерекшеленген трафикке не болатынын растаңыз. Туннель өшкенде сол префиксті үнсіз ашық түрде жіберетін ерекшелік – оқиға кезінде табу емес, әдейі қабылдауға тиіс саяси шешім.
Қай префикс қай жолды және неге қолданатынын жазыңыз. Әйтпесе кең селекторды көрген келесі инженер сол тексеруді қайта ашады, ал жауап ешкім оқымайтын commit хабарламасында қалады.