VPN клиентінің мекенжайын қолданбаға дейін сақтау әрбір журнал жолы мен рұқсат етілгендер тізімінің әрбір жазбасы бір мағынаны білдіретінін қамтамасыз етеді. Оны бұлттың шетінде қайта жазу маршруттау кестесін қарапайым, журналдарды пайдасыз етеді. Екі таңдаудың ешқайсысы өздігінен қате емес және оны шешетін дәлел сирек өнімділік туралы болады. Үш шарт шешеді: қолданба қай адам қосылғанын білуі керек пе, бұлттық мата жібермекші болған дереккөзді қабылдай ма және кейін қайту маршрутының жауапкершілігін кім алады.

Үш шарт шешеді

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

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

Үшіншісі ұйымдастырушылық. Дереккөздерді сақтау қолданба қосалқы желісінің маршруттау кестесі клиент префиксі үшін шлюзге кері сілтеуі керек және кейін қосалқы желі қосатын әрбір команда бұл маршрутты дәйекті ұстауы керек дегенді білдіреді. Бұл бір реттік шағын шығын және ондаған шот бойынша қайталанатын шығын. Мінез-құлықты уәде етпес бұрын оны кім төлейтінін шешіңіз.

Маршрут жалғандыққа рұқсат емес

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

aws ec2 describe-instances --instance-ids i-0a1b2c3d4e5f60718 \
  --query "Reservations[].Instances[].SourceDestCheck"
aws ec2 modify-instance-attribute --instance-id i-0a1b2c3d4e5f60718 \
  --no-source-dest-check

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

Жылдам пакет ұстау сұрақты консольді оқығаннан жылдамырақ шешеді. Егер жауаптар шығып кетсе және клиент оларды ешқашан көрмесе, қолданба емес, мата жалған дереккөзді тастап жатыр.

Аудару нені сатып алады және қанша тұрады

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

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 172.20.8.0/24 -o ens5 -j SNAT --to-source 10.40.3.10

Қолданбаның қазір нені жазатынына назар аударыңыз: әрбір пайдаланушы үшін 10.40.3.10, әрбір қосылымда, мәңгілікке. Осы мәнге негізделген кез келген мекенжай рұқсат тізімі енді қашықтан қатынаудың барлық популяциясына қатынау береді және кез келген оқиғаны қарау бұл кім болды деп жауап беру үшін шлюзге оралуы керек.

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

Реле басқа интерфейс

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

Бұл тақырыпша тек backend оны проксиден қабылдап, басқа ешнәрседен қабылдамағанда ғана сенімді. nginx терминдерінде бұл келгеннің бәріне сенудің орнына сенімді серіктесті анық атауды білдіреді:

set_real_ip_from 10.40.3.10;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

Backend-ке тікелей жете алатын кез келген клиент сол тақырыпшаны қолдан жасай алады, сондықтан backend проксиден басқа жолмен қолжетімсіз болуы керек. Бұл firewall фактісі, конфигурация пікірі емес, және үзіндіні көшіргенде адамдар дәл осы болжамды өткізіп жібереді.

Реле сондай-ақ нені сатып алатыныңызды өзгертеді. Қолданба деңгейіндегі жеке бас және оны журналға жазуға табиғи орын аласыз; жалпылықтан бас тартасыз, өйткені әрбір жаңа протокол өз прокси қолдауын қажет етеді. HTTP қызметтері үшін бұл айырбас әдетте жақсы, ал HTTP емес нәрсенің бәрі үшін әдетте мүлдем қолжетімсіз.

Әрбір шекараның нені көретінін жазып алыңыз

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

BoundarySource the next hop seesWhat is actually proven
Client to gateway172.20.8.14A certificate or credential was presented
Gateway to app subnet, preserved172.20.8.14The same session, if the return route exists
Gateway to app subnet, translated10.40.3.10Only that traffic came through the gateway
Proxy to backend10.40.3.10 plus a headerThe proxy asserted an identity it authenticated

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

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