Mae eich cleient wedi'i osod i UDP, mae gan y gweinydd Nginx floc location sy'n pwyntio at borth y VPN, ac nid oes unrhyw beth yn cyrraedd. Mae hynny i'w ddisgwyl: ni all location HTTP gario datagram UDP, beth bynnag yw enw'r blaen. Mae angen gwrandäwr stream ar Nginx ar gyfer hyn, ac unwaith y byddwch yn symud y ffurfweddiad yno, mae ail set o fanylion yn penderfynu a fydd y sesiwn yn goroesi.

Daw'r haen proxy o flaen y cyfeiriad

Mae modiwl stream Nginx yn dirprwyo TCP a UDP heb ddadansoddi HTTP. Mae ei fodiwl HTTP yn disgwyl llinell gais, pennawdau ac ymateb, ac nid oes yr un ohonynt mewn datagram OpenVPN brodorol. Dewis yr haen felly yw'r penderfyniad cyntaf, ac mae'n annibynnol ar a yw'r gwrandäwr yn IPv4 neu'n IPv6.

Nid yw ffurfweddiad sy'n ymddangos yn gweithio gydag OpenVPN TCP yn dweud dim am achos UDP. Mae'r cludiant yn rhan o'r protocol yma, nid yn fanylyn o'r defnydd.

Y gwrandäwr a'r backend

nginx -V 2>&1 | tr ' ' '\n' | grep stream

stream {
    server {
        listen [::]:1194 udp reuseport;
        proxy_pass [2001:db8::20]:1194;
    }
}

Cadarnhewch fod y build yn cynnwys modiwl stream cyn golygu unrhyw beth; gall pecyn dosbarthu ei rannu'n fodiwl ar wahân, ac mae modiwl ar goll yn cynhyrchu gwall ffurfweddiad yn hytrach na thwnel. Rhowch y bloc yng nghyd-destun prif ffurfweddiad, nid y tu mewn i http, a disodlwch y cyfeiriad dogfennaeth gyda'r backend go iawn.

Rhaid i'r ddau lwybr a'r ddau wal dân ganiatáu'r datagramau: y llwybr at y gwrandäwr a'r llwybr o'r proxy i'r backend. Nid yw gwrandäwr IPv6 yn creu llwybr IPv4 chwaith, felly os yw rhai cleientiaid yn dal i ddefnyddio IPv4, mae'r gwrandäwr hwnnw'n gofnod ar wahân gyda'i brofion ei hun. Gwiriwch wal dân y backend ei hun o gyfeiriad y proxy, nid o'ch gliniadur.

Nid yw amseroedd terfyn sesiwn yn amseroedd terfyn cais

Mae'r proxy stream yn cadw cyflwr ar gyfer sesiwn UDP ac yn ei daflu yn ôl ei amser terfyn a'i osodiadau ymateb. Mae amser terfyn byr a gopïwyd o relái DNS yn gweddu'n wael i VPN sy'n disgwyl cyfnewid datagramau am oriau, ac mae'r methiant yn ymddangos fel cysylltiad sy'n marw'n dawel yn hytrach nag un sy'n gwrthod cychwyn.

Darllenwch proxy_timeout effeithiol y defnydd ac unrhyw osodiad cyfrif ymatebion, yna cymharwch nhw â'r ymddygiad keepalive y mae'r VPN yn ei ddefnyddio mewn gwirionedd. Dau rif a ysgrifennwyd mewn ffeiliau gwahanol gan bobl wahanol yw cyflwr arferol system sy'n gweithio. Dau rif na chawsant eu cymharu erioed yw cyflwr arferol system ysbeidiol. Ysgrifennwch y ddau yn y cofnod gwasanaeth fel bod y gymhariaeth yn digwydd unwaith, yng ngolau dydd.

Beth mae'r relái yn ei newid, a beth nad yw'n ei newid

Nid yw'r proxy stream yn terfynu sianel reoli TLS OpenVPN nac yn ei throi'n HTTPS. Y backend yw'r gwasanaeth VPN o hyd, ac mae'r berthynas dystysgrif yn aros rhwng y cleient a'r gwasanaeth hwnnw. Mae cadw'r union humaniaeth backend a fwriadwyd yn dal i fod yn waith y cleient a'r gweinydd.

Mae proxïo cyffredin hefyd yn newid y cyfeiriad ffynhonnell y mae'r backend yn ei weld. Bydd logiau'n dangos y proxy, a bydd unrhyw reol mynediad yn seiliedig ar IP ar y gweinydd VPN yn gwerthuso'r cyfeiriad hwnnw yn hytrach nag un y cleient. Mae cadw ffynhonnell yn dryloyw yn ddyluniad llwybro a braint ar wahân, nid yn rhywbeth sy'n deillio o ychwanegu udp at wrandäwr. Cynlluniwch ar ei gyfer cyn i bolisi sy'n dibynnu ar gyfeiriad y cleient gael ei ysgrifennu.

Gwirwch o'r cleient, nid o'r porth

Mae gwiriad lleol bod porth UDP yn agored yn profi bod y gwrandäwr yn bodoli. Nid yw'n profi y gall cleient dilysu drwyddo neu barhau i gyfnewid traffig. Cwblhewch gysylltiad go iawn o gleient a gymeradwywyd, yna cadarnhewch fod y sesiwn yn para'n ddigon hir i fod o bwys.

Pan fydd rhywun yn adrodd na all Nginx wneud UDP oherwydd bod teclyn relái syml wedi gweithio yn ei le, mae'r ddau ffaith yn ddigyswllt. Profodd y teclyn fod y backend yn ateb; ni ddywedodd ddim am yr hyn y mae'r blaen yn ei gefnogi. Gall y ddau fod yn wir, a dim ond un ohonynt yw ffurfweddiad ar gyfer y defnydd hwn.

Erthyglau cysylltiedig