OpenVPN UDP үшін Nginx stream релесі: нені өзгертеді
UDP HTTP location-ға жатпайды. Оны stream қабатына көшіріңіз, VPN үшін сессия таймаутын өлшеңіз және проксидің бастау көзі болатынын күтіңіз.
Клиентіңіз UDP-ге қойылған, Nginx серверінде VPN портына сілтейтін location блогы бар, бірақ ештеңе келмейді. Бұл күтілетін нәрсе: HTTP location UDP датаграммасын тасымалдай алмайды, алдыңғы жағы қалай аталса да. Бұл үшін Nginx-ке stream тыңдаушысы қажет, және конфигурацияны сонда көшіргеннен кейін сессияның өмір сүруін детальдардың екінші жиынтығы шешеді.
Прокси қабаты мекенжайдан бұрын келеді
Nginx-тің stream модулі HTTP-ны талдамай-ақ TCP мен UDP-ны проксилейді. Оның HTTP модулі сұрау жолын, тақырыптарды және жауапты күтеді, олардың ешқайсысы табиғи OpenVPN датаграммасында жоқ. Сондықтан қабатты таңдау — бірінші шешім, және ол тыңдаушының IPv4 немесе IPv6 болуына тәуелді емес.
TCP OpenVPN-мен жұмыс істейтіндей көрінетін конфигурация UDP жағдайы туралы ештеңе айтпайды. Мұнда тасымал протоколдың бөлігі, орналастырудың деталі емес.
Тыңдаушы және backend
nginx -V 2>&1 | tr ' ' '\n' | grep stream
stream {
server {
listen [::]:1194 udp reuseport;
proxy_pass [2001:db8::20]:1194;
}
}
Бірдеңені өңдеуден бұрын build-те stream модулі бар екеніне көз жеткізіңіз; тарату пакеті оны бөлек модульге бөлуі мүмкін, ал модуль жоқ болса туннель емес, конфигурация қатесі шығады. Блокты негізгі конфигурация контекстіне қойыңыз, http ішіне емес, және құжаттама мекенжайын нақты backend-пен ауыстырыңыз.
Екі маршрут та, екі брандмауэр де датаграммаларға рұқсат беруі керек: тыңдаушыға дейінгі жол және проксиден backend-ке дейінгі жол. IPv6 тыңдаушысы IPv4 жолын да жасамайды, сондықтан кейбір клиенттер әлі IPv4 қолданса, бұл тыңдаушы өз тестімен жеке жазба. Backend-тің өз брандмауэрын проксидің мекенжайынан тексеріңіз, ноутбугіңыздан емес.
Сессия таймауттары — сұрау таймауттары емес
stream проксиі UDP сессиясы үшін күйді сақтайды және оны өз таймауты мен жауап параметрлеріне сәйкес тастайды. DNS релесінен көшірілген қысқа таймаут сағаттар бойы датаграмма алмасуды күтетін VPN-ге нашар сәйкес келеді, ал ақау бастаудан бас тартатын байланыс емес, үнсіз өлетін байланыс ретінде көрінеді.
Орналастырудың нақты proxy_timeout мәнін және жауап санының кез келген параметрін оқыңыз, содан кейін оларды VPN іс жүзінде қолданатын keepalive әрекетімен салыстырыңыз. Әртүрлі адамдар әртүрлі файлдарға жазған екі сан — жұмыс істеп тұрған жүйенің қалыпты күйі. Ешқашан салыстырылмаған екі сан — үзіліспен жұмыс істейтін жүйенің қалыпты күйі. Салыстыру бір рет, күндізгі жарықта болуы үшін екеуін де қызмет жазбасына жазыңыз.
Реле нені өзгертеді, нені өзгертпейді
stream проксиі OpenVPN-нің TLS басқару арнасын аяқтамайды және оны HTTPS-ке айналдырмайды. Backend VPN қызметі болып қалады, ал сертификат қатынасы клиент пен сол қызметтің арасында қалады. Көзделген backend сәйкестігін сақтау әлі де клиент пен сервердің жұмысы.
Кәдімгі проксилеу backend көретін бастау мекенжайын да өзгертеді. Журналдар проксиді көрсетеді, және VPN серверіндегі IP-ге негізделген кез келген қатынау ережесі клиенттің емес, сол мекенжайды бағалайды. Бастауды ашық сақтау — бөлек маршруттау және құқық дизайны, тыңдаушыға udp қосудан келетін нәрсе емес. Клиент мекенжайына тәуелді саясат жазылмас бұрын оны жоспарлаңыз.
Порттан емес, клиенттен тексеріңіз
UDP портының ашық екенін жергілікті тексеру тыңдаушының бар екенін дәлелдейді. Ол клиенттің ол арқылы аутентификациялана алатынын немесе трафик алмасуды жалғастыра алатынын дәлелдемейді. Мақұлданған клиенттен нақты қосылымды аяқтаңыз, содан кейін сессияның жеткілікті ұзақ тұратынын растаңыз.
Біреу Nginx UDP жасай алмайды деп хабарласа, себебі оның орнына қарапайым реле құралы жұмыс істеген болса, бұл екі факт байланыссыз. Құрал backend жауап беретінін дәлелдеді; ол алдыңғы жақтың нені қолдайтыны туралы ештеңе айтпады. Екеуі де шын болуы мүмкін, және олардың тек біреуі осы орналастырудың конфигурациясы.