OpenVPN a HTTPS ar borth 443: pwy sy’n berchen ar y gwrandawr?
Mae TCP a UDP 443 yn socedi ar wahân. Mae rhannu un gwrandawr TCP angen perchennog, ac mae rhannu porth OpenVPN yn drefniant cul, nid tric procsi.
Gall dwy wasanaeth ateb ar borth 443 heb gystadlu o gwbl, oherwydd caledir gwrandawr ar drafnidiaeth, cyfeiriad a phorth gyda’i gilydd, nid ar y rhif yn unig. Rhowch weinydd gwe a OpenVPN ar un blwch, a’r unig gwestiwn sy’n werth ei ateb yn gyntaf yw pa soced y mae pob proses yn ei ofyn i’r cnewyllyn. Ysgrifennwch y rhestr honno cyn golygu cyfluniad, a bydd y rhan fwyaf o wallau cyfeiriad-mewn-defnydd yn esbonio’u hunain. Popeth ar ôl y rhestr yw dewis rhwng gwrandawr UDP, soced TCP a rennir, neu flaen sy’n llwybro yn ôl protocol.
Dechreuwch gyda’r soced y mae pob proses yn ei ofyn
Mae bind yn llwyddo neu’n methu ar y triawd hwnnw, felly dim ond pan fydd y tair rhan yn cyd-daro y bydd dau daemon yn gwrthdaro. Dyna pam mae gwefan ar TCP 443 yn cyd-fyw’n amhenodol â gwrandawr OpenVPN ar UDP 443, a dyna pam mae symud un ohonynt i ail gyfeiriad lleol ar yr un gwesteiwr hefyd yn diweddu’r ddadl. Darllenwch y gwrandawyr byw yn hytrach na’r ffeiliau a oedd i fod i’w creu, oherwydd mae cynnwys hen neu ffeil uned wedi’i hanghofio yn goroesi’r golygiad rydych chi’n cofio ei wneud.
| Line in the listener list | What it establishes | What to do next |
|---|---|---|
| One udp row and one tcp row, each on 443 | Separate transport sockets, nothing contested | Point the VPN profile at udp and stop editing |
| A single tcp address and port listed by two processes | A real bind collision between two daemons | Move one service, or put a dispatcher in front of both |
| A proxy process owns the socket, no vpn process | The proxy accepts and has to hand off correctly | Check that its backend speaks the protocol it forwards |
Rhedwch ss -lntup fel root a darllenwch bob rhes sy’n crybwyll 443, gan gynnwys cofnodion IPv6. Mae gwrandawr v6 gwyllt fel arfer yn derbyn traffig v4 hefyd, a dyna sut mae gwrandawr a anghofioch yn cadw’r porth yn feddiannol ar ôl i chi newid y ffeil roeddech yn credu oedd yn gyfrifol. Os yw enw proses yn eich synnu, culhewch yr allbwn gyda ss -lntup 'sport = :443' cyn cyffwrdd ag unrhyw beth.
Newidiwch y tiwnel i UDP pan fydd y rhwydwaith yn caniatáu
Mae gwrandawr UDP yn osgoi’r gwrthdaro’n gyfan gwbl ac fel arfer yw’r atgyweiriad byrraf, gan na rennir soced ac nad yw unrhyw gynnyrch ychwanegol yn ymuno â’r llwybr. Nid yw’n rhad ac am ddim. Mae rhai rhwydweithiau cleientiaid yn gollwng UDP 443 heb anfon reset, felly mae’r tiwnel yn rhoi’r gorau i sefydlu yn lle methu â bind, ac mae’r defnyddiwr yn adrodd bod y VPN i lawr heb unrhyw wall i’w ddarllen. Mae gwrandawr UDP hefyd yn goroesi ailgychwyn haen y we, sy’n cyfrif ar flwch y mae ei wefan yn cael ei hailgyflwyno’n aml. Profwch o’r rhwydwaith lle mae’r defnyddwyr yn eistedd, oherwydd dim ond profi y gall y gweinydd gyrraedd ei hun y mae shell ar y gweinydd yn ei wneud.
Newidiwch y drafnidiaeth yng nghyfluniad y gweinydd ac ym mhroffil y cleient gyda’i gilydd. Bydd proffil sy’n dal i ofyn am TCP yn troi trwy ailgysylltiadau yn erbyn gwrandawr UDP yn unig, ac mae hynny’n edrych fel nam rhwydwaith nes i chi gymharu’r ddau ffeil.
Gadewch i’r broses VPN fod yn berchen ar TCP 443 ac anfon y gweddill ymlaen
Mae Community OpenVPN yn y modd gweinydd TCP yn darllen bytau cyntaf cysylltiad sy’n dod i mewn ac yn anfon popeth nad yw’n brotocol iddo’i hun i gefnfa HTTPS, a dyna yw pwrpas y gyfarwyddeb port-share. Mae’r gefnfa’n weinydd gwe cyffredin ag TLS wedi’i alluogi, wedi’i enwi gan westeiwr a phorth yn y gyfarwyddeb honno yn hytrach na chan URL.
port-share 10.0.0.5 8080
Mewn blwch lle mae’r wefan yn dal ail gyfeiriad preifat, mae’r llinell honno’n anfon traffig nad yw’n VPN i 10.0.0.5:8080, felly rhaid i’r gwesteiwr rhithwir HTTPS gael ei rwymo yno a rhaid i’r mur tân ganiatáu’r naid leol. Rhaid i’r gweinydd gwe derfynu TLS ei hun, oherwydd y bytau sy’n cyrraedd yw handshake gwreiddiol y porwr ac nid oes unrhyw beth rhyngddynt wedi’u dadgryptio. Anelwch y gyfarwyddeb at wrandawr HTTP plaen a bydd y porwr yn cael gwall dull annilys, sy’n darllen fel gwefan wedi torri yn hytrach na chefnfa wedi’i lleoli’n anghywir. Dim ond yn y modd gweinydd TCP y mae’r gyfarwyddeb yn bodoli, ac nid oes gan wrandawr UDP unrhyw ffrwd i’w harchwilio.
Gan fod y broses VPN yn derbyn pob cysylltiad, mae’r rhaglen we yn gweld y cais a anfonwyd ymlaen yn cyrraedd o un o gyfeiriadau’r gwesteiwr ei hun yn lle oddi wrth yr ymwelydd. Mae unrhyw beth sydd angen gwir gyfeiriad y cleient yn dibynnu ar gefnogaeth protocol PROXY yn y gefnfa neu ar flaen sy’n ei ychwanegu. Nid yw symud y gefnfa i gyfeiriad lleol arall yn dod â chyfeiriad yr ymwelydd yn ôl; dim ond newid pa un o gyfeiriadau’r gwesteiwr y mae’r wefan yn ei gofnodi y mae’n ei wneud. Rhowch y cyfyngiad hwnnw yn y nodiadau defnyddio cyn i adroddiad dadansoddi godi’r cwestiwn.
Mae procsi cefn yn offeryn anghywir; nid yw llwybrydd pedwaredd haen felly
Mae procsi cefn HTTP yn terfynu TLS fel y gall ddarllen ceisiadau, sy’n golygu na all basio ffrwd OpenVPN yn gyfan. Gall llwybrydd pedwaredd haen sy’n anfon ymlaen yn ôl SNI neu yn ôl archwiliad y pecyn cyntaf sefyll o flaen y ddau, ar yr amod nad yw’n terfynu’r sesiwn y mae’r VPN yn dibynnu arni. Mae’r ddau ddyfais yn edrych yn debyg ar ddiagram ac yn ymddwyn yn hollol wahanol wrth y soced.
Mae Access Server masnachol yn cludo ei osodiadau rhannu porth ei hun, ac nid ydynt yn mapio un-i-un ar y gyfarwyddeb gymunedol. Nodwch y cynnyrch a’r fersiwn cyn addasu canllaw a ysgrifennwyd ar gyfer y llall. Mae gosodiad copïedig sy’n cael ei anwybyddu’n dawel yn waeth nag unrhyw osodiad, oherwydd mae’r rhestr gwrandawyr yn dal i edrych yn gredadwy wedyn.
Profwch y wefan a’r tiwnel fel dau lwybr ar wahân
Llwythwch y wefan a chysylltwch y tiwnel, yna darllenwch y rhestr gwrandawyr eto i weld pa broses sy’n berchen ar 443 nawr. Nid yw tudalen sy’n llwytho’n profi dim am y VPN, ac nid yw tiwnel sy’n cysylltu’n profi dim am y wefan, er bod y ddau yn defnyddio’r un rhif. Mae’r tri gorchymyn isod yn gwirio’r soced a rennir, y llwybr gwe a’r gwasanaeth VPN yn y drefn honno.
ss -lntup 'sport = :443' curl -sI https://vpn.example.com/ | head -n 1 journalctl -u openvpn-server@server -n 20
Cymharwch gyfeiriad y cleient yng nghofnod mynediad y gefnfa â’r un yng nghofnod y VPN ar gyfer yr un foment. Os yw’r wefan yn cofnodi pob ymwelydd fel y gwesteiwr ei hun, mae anfon ymlaen yn gweithio ac nid yw trin y cyfeiriad yn gweithio. Os yw’r ddau gofnod yn ddistaw, ni wnaeth y blaen drosglwyddo’r cysylltiad erioed. Naill ffordd neu’r llall, mae’r rhestr gwrandawyr yn setlo pwy sy’n derbyn y soced, a dyna’r ffaith i’w chadarnhau cyn i chi newid ffeil arall.
Gadewch y map gwrandawyr hwnnw wrth ymyl y cyfluniad fel y bydd y person nesaf sy’n cyffwrdd â 443 yn gwybod pa broses sy’n derbyn ac i ble aeth y protocol arall. Cadarnhewch berchnogaeth ar ôl y newid yn hytrach na choelio’r hyn roedd y golygiad i fod i’w wneud.