Екі стекті VPN пулдары: strongSwan-да екі отбасын да адрестеу
Ішкі IPv4 және IPv6 пулдары, қорғалған префикстер және сыртқы туннель отбасы — бұл үш бөлек шешім. Оны екі стекті деп атамас бұрын әрқайсысын жоспарлаңыз.
Шлюз көшпелі пайдаланушыға IPv4 және IPv6 виртуалды мекенжайын бірге бере алады, ал сыртқы туннель әлі де IPv4 арқылы жүреді. Бұлар тәуелсіз шешімдер, және оларды бір шешім ретінде қарау — екі стекті жоспарлар әдетте сонда құлайтын жер. Клиенттің ішкі отбасылары, ол жете алатын қорғалған префикстер және капсулалауды тасымалдайтын транспорт — үш бөлек таңдау.
Көп шатасу «екі стек» сөзін тек бір жерде екі стекті дизайнға қолданудан туады. Қызмет ішінде екі стекті, сыртқы мекенжайында бір стекті бола алады және клиенттер үшін әбден жақсы жұмыс істей алады. Ол істей алмайтыны — кездейсоқ жұмыс істеу.
Ішінде екі отбасы, сыртында бір жол
Сыртқы қосылым UDP үстіндегі IKE және клиент қай жерде болса да сол жерден қолжетімді бір мекенжай отбасын қажет етеді. Ішкі IPv6 мекенжайы IPv6 қолдайтын провайдерді талап етпейді, себебі ішкі пакет сыртқы пакеттің ішіндегі жүк. Көптеген жұмыс істеп тұрған орналастырулар IPv6 префикстерін тек IPv4 жоғары арна арқылы тасымалдайды.
Сыртқы жол шынымен шектейтіні — қолжетімділік пен NAT-тан өту. Егер шлюз тек IPv4 мекенжайын жарияласа, тек IPv6 желісіндегі клиент қандай пулдарды баптасаңыз да мүлде қосыла алмайды. Сыртқы отбасын клиент аудиторияңызға қарап таңдаңыз, ішкі мекенжай жоспарына қарап емес.
Клиентке әр отбасында мекенжай беріңіз
Екі отбасын сұрау клиент жағында бір жолдық мәлімдеме, шлюзде бөлісуге нәрсе болса. Атаулы пулдар көздерді қызмет желілерінен бөлек ұстайды, және дәл осы қасиет өрт қабырғасы ережелерін алты айдан кейін де оқылатын етеді.
pools {
pool4 { addrs = 10.90.0.0/24 }
pool6 { addrs = fd42:90::/64 }
}
connections {
private-access {
version = 2
pools = pool4, pool6
local { auth = pubkey certs = gateway.pem id = vpn.example.com }
remote { auth = pubkey cacerts = ca.pem vips = 0.0.0.0, :: }
children {
private { local_ts = 10.60.0.0/16, fd42:60::/48 remote_ts = dynamic }
}
}
}
Мәні vips әр отбасынан бір мекенжай сұрайды, ал пулдар тізімі бұл мекенжайлардың қайдан келетінін шешеді. Құжаттама strongSwan-ның виртуалды IP туралы бірнеше сұранысты және пул бөлуді қамтиды, соның ішінде нақты мекенжай сұраған клиент тек жауап беруші жоя алатын басымдықты білдіреді деген тұс. Клиент әрдайым бірдей мәнді алады деп есептейтін қатынау ережесін құрмаңыз.
Мысалды көшірудің орнына өзіңіздің бірегей жергілікті префиксіңізді жасаңыз. Екеуі де fd42::/16 енгізген екі ұйым алғаш рет өзара қосылғанда қақтығысты табады, ал оны диагностикалау жағымды емес.
Селекторлар межелерді сипаттайды, көздерді емес
Бала SA-ның жергілікті трафик селекторлары шлюздің артында қандай қорғалған желілер тұрғанын айтады, ал қашықтағы селекторлар клиент көз ретінде нені пайдалана алатынын сипаттайды. Виртуалды пул мекенжайы сол саясаттың көз жағына жатады; оны межелер тізіміне қою — конфигурацияны жиі қате оқу.
Екі отбасына да шлюзде қайтару маршруттары мен рұқсат етілген форвардинг қажет. Пулға қайтатын маршрутсыз селекторға префикс қосу — құрылатын, трафиктің бір бағытын өткізетін және жауапты үнсіз тастайтын туннель жасайды. Селектор — саясат, маршруттау емес.
Пулдар мен қызмет префикстерін мекенжай жоспарыңыздың бөлек блоктарында ұстаңыз. Олар қабаттасқанда, қорғалған хостқа жетуі тиіс маршрут пул мекенжайына сәйкес келіп, туннельде жоғалып кетуі мүмкін.
DNS пен жауап жолы оның дайын болып көрінетінін шешеді
Шешушінің жауаптары оған жету үшін пайдаланылатын транспортқа тәуелсіз. Атау A жазбасын, AAAA жазбасын немесе екеуін де қайтара алады, ал клиент өзінің басымдық ережелері бойынша таңдайды. Егер ішкі қызмет AAAA жазбасын жариялап, бірақ ол префиксті ешнәрсе маршруттамаса, екі стекті желілердегі клиенттер алдымен IPv6 жолын байқап, ол сәтсіз болғанша сонда отырады. Бұл кезде туннель конфигурациясында ешнәрсе дұрыс емес көрінбейді.
Сондықтан әр атау үшін қай отбасылар пайдаланылуы керегін шешіңіз, содан кейін тиісті префикстің селекторда екенін және қайтару маршруты бар екенін тексеріңіз. Бұл әр қызмет бойынша шешім. Екі жазба түрін де алаламай жариялау — жұмыс істеп тұрған тек IPv4 қызметінің пайдаланушыларының жартысы үшін уақыт біте бастауының жолы.
Дайын деп атамас бұрын екі отбасын да тексеріңіз
Жүктелетін конфигурация — жұмыс істейтін конфигурация емес. Демон хабарлаған күйді оқыңыз, пул бөлулерін растаңыз, содан кейін клиент шынымен орнатқан маршруттарды қараңыз.
swanctl --list-sas
swanctl --list-pools
ip -6 addr show scope global
ip -6 route get fd42:60::10
Алғашқы екі команда орнатылған бала SA-ларды және қай пулдарда бос мекенжай бар екенін көрсетеді, сондықтан бірінші клиентке жарайтын, ал оныншыда сәтсіз болатын жоспар көрінеді. Соңғы екеуі клиент пулдан ғаламдық IPv6 мекенжайын алды ма, қорғалған префикске трафик шын мәнінде қайда барады — соны көрсетеді. Берілген мекенжайды конфигурациялаған пулмен салыстырыңыз, үміт еткен мекенжаймен емес. Егер жауап беруші өз саясаты бойынша басқа мәнді таңдаса, маршруттар мен өрт қабырғасы ережелері оның таңдауына сәйкес болуы керек.
Содан кейін әр отбасы үшін бір қорғалған хостты және екеуіне де шешілетін атауды тексеріңіз. Бір отбасының сынағы жоспардың сіз жаттықпаған жартысы туралы ештеңе айтпайды, ал жоқ маршрут әдетте сол жартыда болады.