strongSwan'до толук туннель эки тарапта тең 0.0.0.0/0 талап кылат
Толук туннелге клиенттин remote_ts жана шлюздун local_ts катары 0.0.0.0/0, ошондой эле багыттоо, NAT жана кайтаруу маршруту керек. Төртөөнү тең текшериңиз.
Бир жеке ички тармак үчүн иштеген strongSwan байланышы бирөө бир сапты түзөттү деп эле интернет трафигин ташыбайт. Толук туннель — child SA кайсы даректерди коргой турганы тууралуу эки тараптын келишими, жана ар бир тарап экинчисин өзүнө карата атайт. Бир тарапты туура, экинчисин туура эмес кылсаңыз, child SA же көтөрүлбөйт, же көздөлгөндөн кууш көтөрүлөт. Төмөнкү беш текшерүү бул келишимди клиенттен шлюз аркылуу интернетке чейин ээрчийт.
Алгач клиенттин селекторун текшериңиз
Клиент алыскы тарапта эмнени коргоону каалаарын remote_ts катары сүрөттөйт, жана жибергенин баары өзүнө берилген даректен чыгат. Интернет трафиги үчүн бул маани колдонуучу чындап жеткидей максаттарды камтышы керек, бул иш жүзүндө бүт IPv4 мейкиндигин билдирет. Дагы эле бир ички тармакты тизмелеген клиент бөлүнгөн туннель сурайт, профиль интерфейсте кандай аталса да. Башат тарабы адатта dynamic, анткени дарек туташуу учурунда берилет. Ал жерде жазылган туруктуу башат даректер тобу өзгөргөндө эле бузулат.
children {
net {
local_ts = dynamic
remote_ts = 0.0.0.0/0
}
}
Бул үзүндү толук туташуу файлы эмес жана ал аутентификация, инсандар жана виртуалдык даректер тобу мурунтан конфигурацияланган деп болжайт. Клиенттин башат селектору жана сервер берген дарек дагы эле дал келиши керек, болбосо child SA эки тарап тең күтпөгөн камтуу менен көтөрүлөт. Аны swanctl --load-all менен жүктөп, ийгиликке ишенбестен мурун чыгууну окуңуз. Талданган файл да башка тараптын сунушу менен кабатталбаган селекторго байланыштуу четке кагылышы мүмкүн.
Шлюздун селекторун өз тарабында текшериңиз
Шлюз ошол эле түшүнүктү карама-каршы багыттан окуйт. Интернет максаттары шлюз үчүн жергиликтүү, ошондуктан анын local_ts кенен, ал эми remote_ts клиенттер тобун сүрөттөйт. Бул инверсия толук туннель конфигурациясындагы эң көп кездешүүчү ката жана ал кароодон өтөт, анткени эки сап тең өз-өзүнчө ишенимдүү көрүнөт.
children {
rw {
local_ts = 0.0.0.0/0
remote_ts = 10.77.0.0/24
}
}
Клиент үзүндүсүн шлюз файлына көчүрүү пайдалуу эч нерсени сүрөттөбөгөн селектор жупун жаратат, анткени эки тарап тең бир эле ролду талап кылат. strongSwan багыттоо колдонмосу клиент менен шлюздун жупташуусун ачык документтештирет жана аны ийгиликсиздиктен кийин эмес, туташуу файлынын жанында окуган жөн. Шлюз файлына remote_ts шилтеме кылган топтун аныктамасы да керек. Жок топту атаган селектор нааразылыксыз жүктөлөт жана туташууда ийгиликсиз болот.
Эски ipsec.conf ар кандай ачкычтар менен сол жана оң ролдорду колдонот, ал эми rightsubnet сабы swanctl маанисинин түз ордун баспайт. Эки синтаксисти бирин экинчисине кыстаруунун ордуна өзүнчө файлдарда кармаңыз. Аларды бир каталогдо аралаштыруу — иштеп жаткан байланыштын кайра жүктөөдөн кийин үнсүз артка кайтуу жолу.
Келишилген child SA текшериңиз, файлды эмес
Сакталган конфигурация ниетти далилдейт жана андан ашык эч нерсени. Экинчи тарап суралганды куушандырышы мүмкүн, ал эми бар child SA анын астындагы файл өзгөрдү деп эле алмаштырылбайт. Башка нерсени өзгөртүүдөн мурун чындап эмне орнотулганын тастыктаңыз.
swanctl --list-conns
swanctl --list-sas
ip xfrm policy list
Биринчи буйрук демон эмнени жүктөгөнүн, экинчиси орнотулган child SA'ларды, үчүнчүсү ядро колдоно турган саясаттарды көрсөтөт. Эгер файл 0.0.0.0/0 десе жана тизме бир ички тармакты көрсөтсө, сүйлөшүү камтууну куушандырган жана файлды кайра окуу муну түшүндүрбөйт. child'ды токтотуңуз, кайра баштаңыз жана үч чыгууну кайра салыштырыңыз. Ошол эле кууш камтуу менен кайткан child жергиликтүү файл менен эмес, алыскы тарап менен куушандырылган, жана бул жергиликтүү түзөтүү эмес, башка администратор менен сүйлөшүү.
Саясат тизмесинде эки багытты тең окуңуз, анткени бир багытты орнотуп, экинчисин орнотпогон туннель конфигурация кийиминдеги маршруттоо көйгөйү. Алдыга жана артка саясаттар бир селектор жубуна айна көрүнүшүндө ат бериши керек, ал эми жок айна селектор текстинде эмес, демондо же сунушта кемчилик.
Багыттоону жана кайтаруу маршрутун текшериңиз
Селектор трафикти шлюзге киргизет, бирок шлюзду аны андан ары маршруттоого мажбурлабайт. Багыттоо күйгүзүлүшү керек, брандмауэр агымды уруксат бериши керек жана жооп клиенттер тобуна кайтуу жолун табышы керек. Бул үч өзүнчө талап жана ар бири башка белги менен ийгиликсиз болот. Жок багыттоо эрежеси кара көңдөй сыяктуу аракеттенет, ал эми жок кайтаруу маршруту бир багыттуу туннель сыяктуу.
sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1
Жеке клиент даректери адатта коомдук интерфейстен чыгардан мурун атайын башат котормосун талап кылат, ал эми ачык маршрутталган бөлүштүрүү башка мамилени талап кылат. NAT катышса, ишке ашыруу колдогон өзгөчөлүктөрдү сактаңыз, ошондо коопсуздук саясаты текшериши керек болгон трафик анын жанынан которулуп өтпөйт. Башка шлюздон көчүрүлгөн кенен masquerade эрежеси автор көздөгөндөн алда канча көп агымды өзгөртөт. Эрежени клиенттер тобу үчүн гана жазыңыз жана эмне үчүн бар экенин түшүндүргөн комментарий калтырыңыз.
Клиентте сиз божомолдогон маршруттарды эмес, backend орноткон маршруттарды тастыктаңыз. Маршрут орнотуу өчүрүлгөн менеджерге кол менен кармалган маршруттоо долбоору керек жана бул долбоор туннель өзгөргөн сайын жаңыртылышы керек. Маршруттоо таблицасын кайра туташкандан кийин текшериңиз, жаңы жүктөөдөн кийин гана эмес.
Туннель дагы эмнени камтыбай турганын текшериңиз
Селектор жубу IPv4'тү камтыйт, башка эч нерсени. IPv6, DNS жана каалаган колдонмо деңгээлиндеги саясат — кенен IPv4 селектору үнсүз этибарга албаган өзүнчө чечимдер. Ар бир IPv4 пакетин ташыган туннель да ар бир ат издөөнү агыта алат.
Көздөлгөн DNS жолун ачык көрсөтүңүз, анткени аттарды жергиликтүү чечүүчү аркылуу чечкен толук туннель суроолорду туннелден тышкары агызат жана жеке аттарды бузат. Эгер клиентке IPv6 дареги берилсе, ал даректер үй-бүлөсүнө да ушундай мамиле керек, болбосо хост туннель коргобогон жолду артык көрөт. Жеке тарап гана жооп бере алган ат менен сынап көрүңүз жана коомдук жоопту агым деп эсептеңиз.
resolvectl query intranet.example.internal
traceroute -n 1.1.1.1
Жогорудагы тизмеден келишилген селекторлор менен бул эки буйрук аркылуу чынжырды тастыктаңыз. Эгер traceroute жергиликтүү маршрутизаторду биринчи секирик катары көрсөтсө, селекторлор эмне дебесин, трафик туннелди колдонбойт. Интернетке кирүү тандалган трафик долбоорлонгон шлюз аркылуу уруксат алып, багытталып жана кайтарылганда гана толук. Профилде 0.0.0.0/0 табуу — ошол чынжырдын башталышы, анын далили эмес.