Пакеттер 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 интерфейстери менен багытка негизделген дизайн, ал саясатты глобалдык тандагычка эмес, аталган интерфейс аркылуу маршрутталган трафикке байланыштырат. Бул оңдоо эмес, көчүү, жана трафик дагы эле сүйлөшүлгөн тандагычтарды канааттандырышы керек.

OptionUse it whenCost
Narrow the selectorThe broad prefix was convenienceA rekey and a policy review
Passthrough childThe broad selector must stayOne exception per intended pair
XFRM interfacePolicy should follow routingA design migration

Калганын алсыратпай өзгөчөлүктү далилдеңиз

Өзгөртүүнү жүктөгөндөн кийин өзгөчөлүктү жана корголуп калышы керек болгон кадимки багытты сынап көрүңүз. Эки багытты тең текшериңиз, андан кийин OpenVPN туннелин түшүрүп, өзгөчөлөнгөн трафикке эмне болорун ырастаңыз. Туннель өчүп турганда ошол префиксти үнсүз ачык түрдө жөнөткөн өзгөчөлүк – окуя учурунда табыла турган эмес, атайын кабыл алынышы керек болгон саясат чечими.

Кайсы префикс кайсы жолду жана эмне үчүн колдонгонун жазыңыз. Болбосо кенен тандагычты көргөн кийинки инженер ошол эле иликтөөнү кайра ачат, жана жооп эч ким окубаган commit билдирүүсүндө калат.

Тектеш макалалар