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