Dau gofnod A, un cyfeiriad, un daemon: pa enw bynnag y bydd defnyddiwr yn ei deipio, mae'r pecyn sy'n cyrraedd yn unfath, ac nid oes gan y broses sydd wedi'i chlymu i borth 1194 unrhyw beth i wahaniaethu rhwng y ddau. Nid camgyfluniad sy'n aros i gael ei drwsio yw hyn; ymyl yr hyn y gall chwiliad enw ei fynegi yw e. Rhaid i unrhyw beth sy'n dewis rhwng dau achos o OpenVPN fod yn werth y mae'r cleient yn ei roi yn y cysylltiad ac y gall y pen blaen ei ddarllen yn ôl, ac nid yw cleient OpenVPN safonol yn rhoi gwerth o'r fath yn agored. Yr hyn sy'n dilyn yw ble mae hyn yn eich gadael, a pha drefniadau sy'n gwahanu'r traffig mewn gwirionedd.

Dechreuwch gyda'r hyn y mae'r datryswr yn ei ddychwelyd

Mae cleient yn gofyn am vpn-a.example ac yn cael cyfeiriad; y cyfeiriad hwnnw ynghyd â phorth yw popeth y mae'n ei ddeialu. Mae'r enw'n cael ei wario'n lleol, yn ystod y chwiliad, ac ni ddaw byth yn faes ar y wifren, felly ni all y gwrandäwr yn y pen arall weld pa label a ddefnyddiwyd. Pwyntiwch vpn-a.example a vpn-b.example at un gwesteiwr ac fe rodd y ddau chwiliad yr un cyrchfan, a dyna pam y mae'r daemon yn amsugno'r ddau gysylltiad i un achos heb gofrestru gwahaniaeth. Mae proffiliau ar sail cyfeiriad yn ymddwyn yn union fel rhai ar sail enw, am yr un rheswm.

Mae hyn hefyd yn cau teulu o atebion dros dro temtasiwn: aliasau ychwanegol, dewis tystysgrif fesul enw ar un soced, neu reol mur tân wedi'i chlymu i'r enw a ofynnwyd. Ni all unrhyw un ohonynt weithredu ar wybodaeth a oedd eisoes wedi'i thaflu cyn i'r pecyn cyntaf adael y cleient. Os oes rhaid i ddau weinydd aros ar wahân, mae'n rhaid i'r gwahanu deithio gyda'r cysylltiad ei hun, sy'n golygu cyfeiriad, porth, neu faes llwyth a ddiffinnir gan y protocol.

Yr unig ddewisydd sy'n cyfrif yn teithio y tu mewn i'r pecyn

Mae HTTP yn delio â hyn gyda phennawd Host, ac mae TLS yn delio ag ef ag estyniad enw gweinydd yn y ClientHello, a dyna sut mae un cyfeiriad yn gwasanaethu llawer o safleoedd y tu ôl i un gwrandäwr. Mae'r ddau yn gweithio oherwydd bod y protocol gwifren yn cario cais am wasanaeth penodol. Y ffaith berthnasol am OpenVPN yw nad yw'r naill faes na'r llall yn bresennol ar y haen y mae blwch canolraddol yn ei harchwilio.

Mewn trefniad safonol mae'r ysgydwad llaw TLS sy'n gwarchod y sianel reoli yn digwydd ar ôl sefydlu'r sesiwn allanol ac yn cael ei gario y tu mewn iddi, felly mae gwrandäwr nad yw wedi terfynu'r sesiwn honno yn gweld ffrwd afloyw. Gall o hyd ddweud mai OpenVPN yw hwn, oherwydd bod yr opcode a'r ffrâmio yn y bytes agoriadol yn adnabyddadwy, ond mae enw'r gweinydd, os yw'n bodoli, yn eistedd yn y rhan amgryptiedig. Mae dyluniad sy'n disgwyl darllen gwesteiwr rhithwir o'r pecyn allanol yn darllen maes nad yw'r protocol byth yn ei ysgrifennu yno. Daw hyn o'r ffordd y mae'r twnnel wedi'i adeiladu, nid o fwlch y gallai matsiad patrwm mwy cyfrwys ei gau.

Lle mae holltydd protocol yn stopio

Mae amlblethwr o'r math y mae prosiect sslh yn ei ddogfennu yn gwrando ar un porth, yn archwilio'r bytes agoriadol, ac yn trosglwyddo'r cysylltiad i ba bynnag backend sy'n siarad y protocol y gwnaeth ei adnabod. Mae hynny'n werth go iawn pan fydd yn rhaid i un porth wasanaethu SSH, HTTPS ac OpenVPN gyda'i gilydd.

Mae sslh yn cadw archwiliad ar wahân ar gyfer pob protocol, a gall ei archwiliad TLS dynnu enw gweinydd neu werth ALPN allan o ClientHello gwirioneddol. Mae adnabod OpenVPN brodorol yn ddosbarthiad gwahanol i ddarllen estyniad TLS, ac nid yw'r ddau yn cyfuno, oherwydd mae cleient nad yw byth yn anfon ClientHello at y soced gwrando yn gadael yr archwiliad heb ddim i'w ddarllen. Felly mae rheol sy'n cyfateb i OpenVPN yn ateb “cleient OpenVPN yw hwn” ac yn mynd dim pellach. Mae dau backend OpenVPN y tu ôl i'r rheol honno'n anwahanadwy, nid oes gan y pen blaen unrhyw sail dros ddewis, ac mae pob sesiwn yn glanio yn yr un lle. Mae amlblethu yn rhannu un porth ar draws gwahanol wasanaethau; nid yw'n gwneud gwesteio rhithwir o fewn un gwasanaeth.

Trefniadau sy'n gwahanu dau weinydd mewn gwirionedd

Y gwahanu gonest rhataf yw ail gyfeiriad cyhoeddus, un fesul achos, ac mae proffiliau presennol eisoes yn cario'r hyn sydd ei angen oherwydd eu bod yn pwyntio at gyfeiriadau gwahanol. Y nesaf yw porth gwahanol ar yr un cyfeiriad, nad yw'n costio dim heblaw rhif ym mhob proffil. Mae TCP ac UDP yn cadw tablau porth ar wahân, felly mae 1194/tcp a 1194/udp yn socedi anghysylltiedig a gall un o bob un fodoli ar un gwesteiwr; gwahanu cludiant yw hynny yn hytrach na llwybro enw, ac yn aml caiff ei gamgymryd felly. Mae'r ddau opsiwn yn goroesi adolygiad mur tân, oherwydd bod y rheol yn cyfateb i rywbeth y mae'r pecyn yn ei gynnwys mewn gwirionedd.

Os yw'r ffin sydd ei hangen arnoch yn rhedeg rhwng grwpiau o ddefnyddwyr yn lle rhwng dau weithrediad, gall un achos â chyfluniadau cleient gwahanol, ei driniaeth dystysgrif ei hun a pholisi mynediad penodol ei chwmpasu. Yr hyn y mae hynny'n ei brynu yw polisi o fewn gweinydd, nid ynysu rhwng gweinyddwyr, ac mae'r ddau'n ofynion gwahanol. Mae ynysu sy'n gorfod dal dan gyfaddawd yn dal i fod angen y cyfeiriad neu ymyl y mur tân.

Gall terfynydd TLS a osodir o flaen OpenVPN ddatgelu enw gweinydd go iawn i ben blaen galluog, ond dim ond pan fydd yr ochr cleient hefyd wedi'i chyflunio ar gyfer y haen ychwanegol honno. Nid yw proffiliau presennol yn ennill yr ymddygiad drwy gael eu pwyntio at yr un cyfeiriad.

Profwch y dewisydd cyn i chi adeiladu

Enwch y maes a fydd yn nodi backend, yna cadarnhewch fod y cleient yn ei anfon mewn gwirionedd; os cyfeiriad yw'r ateb mae'r cynllun yn dal, ac os enw gweinydd y tu mewn i ysgydwad llaw nad yw byth yn cyrraedd y gwrandäwr, ni fydd unrhyw faint o waith DNS yn ei achub. Mae tair gorchymyn yn setlo'r ochr gwrando'n gyflym.

ss -lntup | grep -E ':443|:1194'
openssl s_client -connect vpn-a.example:443 -servername vpn-a.example </dev/null | head -n 20
journalctl -u openvpn-server@server-a -n 20 --no-pager

Mae'r llinell openssl yn rhoi tystysgrif yn unig lle mae rhywbeth ar y cyfeiriad hwnnw'n terfynu TLS; yn erbyn gwrandäwr OpenVPN brodorol mae'n aros neu'n methu, ac mae hynny ynddo'i hun yn ateb ynghylch yr hyn y mae'r haen allanol yn ei ddatgelu. Mae'r llinell journal, wedi'i darllen ar bob backend, yn dangos pa achos a dderbyniodd y sesiwn. Mae logiau'r pen blaen yn cofnodi'r hyn a ddosbarthwyd ac byth yr hyn a fwriadwyd, felly'r backend yw'r unig awdurdod o hyd ynghylch ble y glaniodd defnyddiwr.

Gorffennwch gyda dau broffil wedi'u bwriadu i gyrraedd gweinyddwyr gwahanol, cysylltwch nhw un ar y tro, a nodwch log y backend ar gyfer pob un. Os yw'r ddwy sesiwn yn ymddangos yn yr un journal, mae'r dewisydd ar goll yn hytrach na chael ei gamgyflunio, a'r atgyweiriad yw cyfeiriad neu borth y gall y cleient ei dargedu. Ni fydd golygu'r rheol llwybro yn helpu, oherwydd ni roddwyd byth unrhyw beth i'r rheol lwybro arno. Unwaith y bydd y gwahanu'n real, ysgrifennwch ef wrth ymyl y proffiliau fel na fydd y person nesaf yn ychwanegu ail alias ac yn disgwyl iddo wneud y gwaith.

Erthyglau cysylltiedig