Бір сервердегі екі клиент файл алмасады, тасымалдау сәтті аяқталады, ал туннельге бағытталған әрбір қайта бағыттау ережесі нөл пакет хабарлайды. Ережелер бұзылмаған және тізбек дұрыс емес жерде емес. Тең дәрежелі түйіндер арасындағы қайта бағыттау қосылған кезде пакет сервер процесінің ішінде жеткізіледі және хост стекі ешқашан маршрутизатор болмайды, сондықтан ядро қамалына санайтын ештеңе қалмайды. Осы бөлінуді түсіну қысқа жолды ұстайтыныңызды немесе жолды ядро арқылы қайта салатыныңызды шешеді.

Серверден бір пакетті бақылаңыз

Маршрутталған туннельде демон әр клиенттің шифры ашылған пакетін туннель құрылғысына береді. Одан әрі хост оны маршруттайды, қайта бағыттау ілгегі іске қосылады, ал туннель құрылғысына сәйкес келетін ереже трафикті санай немесе тастай алады. Бұл қамал мысалдарының көбісі ұйғаратын жол.

Forwarding pathWho decidesWhat the host firewall sees
Kernel routing between clientsHost routing table and forward rulesEvery inner packet, with interface names
Peer forwarding inside the server processThe VPN daemon's own peer tableOnly the outer encrypted transport

Қысқа жол хостты ортадан шығарады. Бір сессияның шифры ашылған пакеті демонның ішінде басқа сессияға беріледі, ал ішкі пакет ешқашан туннель құрылғысына шығарылмайды және хост оны маршруттамайды. Инкапсуляцияланған трафик әлі де физикалық интерфейстен өтеді, сондықтан сыртқы жазу бос емес көрінеді, ал ішкі ережелер үнсіз қалады. Туннель құрылғысында алынған жазу мүлдем ештеңе көрсетпейді, бұл сол жерде тасымалдауды көруді күткендерді таң қалдырады. Бұл асимметрия демонның сыртынан қысқа жолды танудың ең жылдам тәсілі.

Қай жол жүргенін шешетін санауыш сынағы

Қолданылуы тиіс ережеге санауыш тіркеңіз, сол ереже бөгеуі тиіс екі клиент арасында тасымалдау жүргізіңіз, содан кейін санауышты оқыңыз.

sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward

Егер тасымалдау сәтті болып, санауыш нөлде қалса, ядро бұл пакеттерді ешқашан өңдеген жоқ, және ережелерді қанша өңдесеңіз де ол өзгермейді. Сол сынақты сервердің өзіндегі қызметке қарсы қайталаңыз, өйткені ол ағын хост стекінен шынымен өтеді және оның санауышы қозғалады. Екі нәтижені салыстыру ғана жауап береді.

Екі бөлшек қате оқуды болдырмайды. Тізбек белгісіне жазылған интерфейс атауы өздігінен ештеңе сүзбейді, өйткені сәйкестік ережелердің ішіндегі интерфейс өрістері бойынша жүреді. Ал көпірленген 2-қабаттық құрылым басқаша әрекет етеді: онда клиенттер бір тарату доменін бөліседі, сондықтан тең түйіндерді табу күтілетін жағдай, маршруттау ақауы емес.

Коммутатор — бұл кіру тізімі емес

Бұл жарты күн алатын бөлік. Тең түйіндер арасындағы қайта бағыттау — бір қосу немесе өшіру параметрі, ал ол қосулы тұрғанда демон жалғыз қайта бағыттау нүктесі. Хост қамалы кімнің кімге жете алатынын білдіре алмайды, ал әр клиентке арналған файлдар коммутаторды саясат матрицасына айналдырмайды.

Егер сізге әр тең түйінге арналған ережелер қажет болса, таңдау қысқа жолдан бас тарту мен басқару құралы ретінде хост қамалынан бас тарту арасында. Оны өшіру ядроның қайта бағыттауын қалпына келтіреді, бұл серверде IP қайта бағыттауды қосу мен қажет ағындарға айқын ережелерді талап етеді. Қосулы қалдыру саясаттың демон конфигурациясында өмір сүретінін білдіреді, бұл іс жүзінде барлық тең түйіндер немесе ешқайсысы.

Өз мекенжай пулдары мен порттары бар жеке сервер процестері — бұл қолайлы орта жол. Әр процесс дәл бір кіру шешімін алып жүреді, сондықтан екі топ саясат матрицасынсыз әртүрлі ережелерге ие бола алады. Хост пулдар арасында маршруттай алады, егер осылай көзделсе, және сонда қамал бұл ағындарды көреді, өйткені олар хосттан өтеді. Бағасы — қосымша порттар, қосымша сертификаттар және әр топқа бір профиль.

Қайта бағыттау нүктесін таңдау

Ядроның қайта бағыттауын таңдаңыз, егер қамал саясат қозғалтқышы болса, әр ағын бойынша журналдау қажет болса немесе есеп маңызды болса. Бағасы — хост стекі арқылы өткізу қабілеті және күтіп ұстауға көбірек ереже. Пайдасы — санауыштардан ағын экспорттаушыларға дейінгі әрбір қолданыстағы құрал трафикті қайта сипаттайды. Шағын серверде бұл баға көрінбейді; жүктелген реледе олай емес.

Процесс ішіндегі қайта бағыттауды таңдаңыз, егер тең түйіндер арасындағы трафик толығымен рұқсат етілген немесе толығымен тыйым салынған болса және сервер соған өлшенген болса. Бағасы — санауыштар, кезек тәртібі және қосылымды бақылау енді ішкі ағындарды сипаттамайды; бұл кейін ешкім оларға сүйенбесе ғана қабылданарлық.

Қайсысын таңдасаңыз да, оны қамал ережелерінің қасына жазып қойыңыз. Тең түйіндер арасындағы трафикке рұқсат беретіндей көрінетін, бірақ демон бәрібір шешетін ережелер жиынтығы сәтсіз тасымалдауды жөндейтін келесі адамды жаңылыстырады. Тек ережелерді оқыған адам ядроны қақпа деп ойлайды.

Ережелерді өзгерту алдында нені тексеру керек

Сервер нақты жүктеген конфигурацияны оқыңыз, өңдегеніңізді есте сақтаған файлды емес, және тең түйіндер опциясының бар-жоғын растаңыз. Егер оны өзгертсеңіз, қызметтің дискідегі файлды жай ғана қайта жазбай, қайта жүктелгеніне көз жеткізіңіз.

Содан кейін ереженің жалпы сәйкес келетінін дәлелдеу үшін сынақты клиенттен серверге қарай ағынмен қайталаңыз және жіберілген маршруттарды тексеріңіз, өйткені жоқ маршрут клиент жағынан дәл қамал бөгеуі сияқты көрінеді. Ережелер ретін қай қайта бағыттау нүктесі шешімге ие екенін білгеннен кейін ғана өзгертіңіз.

Қатысты мақалалар