Dhá thaifead A, aon seoladh amháin, aon daemon amháin: cibé ainm a chlóscríobhann úsáideoir, tá an phaicéad a thagann comhionann, agus níl aon rud ag an bpróiseas atá ceangailte le port 1194 chun idirdhealú a dhéanamh idir an dá cheann. Ní mí-chumraíocht atá ag fanacht le deisiú atá anseo; is é teorainn an méid is féidir le cuardach ainm a chur in iúl. Caithfidh aon rud a roghnaíonn idir dhá ásc OpenVPN a bheith ina luach a chuireann an cliant sa nasc agus ar féidir leis an aghaidh tosaigh a léamh ar ais, agus ní chuireann cliant OpenVPN caighdeánach aon luach den sórt sin go hoscailte. Léiríonn an méid a leanann cá bhfágann sé sin thú, agus cé na socruithe a dhealaíonn an trácht i ndáiríre.

Tosaigh leis an méid a thugann an réititheoir ar ais

Iarrann cliant vpn-a.example agus faigheann sé seoladh; is é an seoladh sin móide port an t-iomlán a dhiailíonn sé. Caitear an t-ainm go háitiúil, le linn an chuardaigh, agus ní thagann sé riamh chun bheith ina réimse ar an sreang, mar sin ní féidir leis an éisteoir ag an taobh eile a fheiceáil cén lipéad a úsáideadh. Dírígh vpn-a.example agus vpn-b.example ar aon óstach amháin agus tabharfaidh an dá chuardach an ceann scríbe céanna, agus is é sin an fáth a n-ionsúnn an daemon an dá nasc in aon ásc amháin gan difríocht a chlárú. Iompraíonn próifílí atá bunaithe ar sheoladh díreach mar a dhéanann próifílí atá bunaithe ar ainm, ar an gcúis chéanna.

Dúnann sé seo freisin fine de réitigh mhealltacha eile: ailiasanna breise, teastas a phiocadh de réir ainm ar aon soicéad amháin, nó riail balla dóiteáin atá ceangailte leis an ainm a iarradh. Ní féidir le haon cheann acu gníomhú ar fhaisnéis a bhí curtha i leataobh cheana sular fhág an chéad phaicéad an cliant. Má chaithfidh dhá fhreastalaí fanacht ar leith, caithfidh an deighilt taisteal leis an nasc féin, is é sin seoladh, port nó réimse ualaigh a shainmhíníonn an prótacal.

Ní théann an t-aon roghnóir a chomhairtear ach istigh sa phaicéad

Láimhseálann HTTP é seo le ceannteideal Host, agus láimhseálann TLS le síneadh ainm freastalaí sa ClientHello, agus is mar sin a fhreastalaíonn aon seoladh ar a lán suíomhanna taobh thiar d'éisteoir amháin. Oibríonn an dá cheann toisc go n-iompraíonn prótacal na sreinge iarraidh ar sheirbhís shonrach. Is é an fíric ábhartha faoi OpenVPN ná nach bhfuil ceachtar den dá réimse i láthair sa chiseal a scrúdaíonn bosca idirmheánach.

I socrú caighdeánach tarlaíonn an chrobhadh láimhe TLS a chosnaíonn an cainéal rialaithe tar éis an seisiún seachtrach a bhunú agus iompraítear é ina thaobh, mar sin feiceann éisteoir nár chríochnaigh an seisiún sin sruth doiléir. Is féidir leis a rá fós gur OpenVPN é seo, toisc go bhfuil an t-opchód agus an fhrámaíocht sna chéad bhearta inchurtha in aithne, ach luíonn ainm an fhreastalaí, má tá sé ann, sa chuid chriptithe. Tá dearadh a bhfuil sé ag súil le hóstach fíorúil a léamh as an bpaicéad seachtrach ag léamh réimse nach scríobhann an prótacal riamh ann. Tagann sé sin ón gcaoi a dtógtar an tollán, ní ó bhearna a d'fhéadfadh meaitseáil patrún níos cliste a dhúnadh.

Cá stadann scoilteoir prótacail

Éisteann ilphléacsóir den chineál a dhoiciméadaíonn tionscadal sslh ar aon phort amháin, scrúdaíonn sé na chéad bhearta agus tugann sé an nasc d'aon chúlstoc a labhraíonn an prótacal a d'aithin sé. Is fíorluach é sin nuair a chaithfidh aon phort amháin freastal ar SSH, HTTPS agus OpenVPN le chéile.

Coinníonn sslh promhadh ar leith do gach prótacal, agus is féidir lena phromhadh TLS ainm freastalaí nó luach ALPN a bhaint as ClientHello fíor. Is aicmiú difriúil é OpenVPN dúchasach a aithint ó shíneadh TLS a léamh, agus ní chumtar an dá rud, toisc go bhfágann cliant nach seolann ClientHello riamh chuig an soicéad éisteachta an promhadh gan aon rud le léamh. Mar sin freagraíonn riail a mheaitseálann OpenVPN “is cliant OpenVPN é seo” agus ní théann sí níos faide. Tá dhá chúlstoc OpenVPN taobh thiar den riail sin doscartha, níl aon bhunús ag an aghaidh tosaigh le roghnú, agus tagann gach seisiún i dtír san áit chéanna. Roinneann ilphléacsú aon phort amháin idir seirbhísí éagsúla; ní dhéanann sé óstáil fhíorúil laistigh d'aon tseirbhís amháin.

Socruithe a dhealaíonn dhá fhreastalaí i ndáiríre

Is é an deighilt mhacánta is saoire an dara seoladh poiblí, ceann in aghaidh an áisc, agus iompraíonn próifílí atá ann cheana an méid is gá toisc go ndíríonn siad ar sheoltaí éagsúla. Is é an chéad cheann eile port difriúil ar an seoladh céanna, nach gcosnaíonn aon rud seachas uimhir i ngach próifíl. Coinníonn TCP agus UDP táblaí port ar leith, mar sin tá 1194/tcp agus 1194/udp ina soicéid neamhghaolmhara agus is féidir ceann de gach a bheith in éineacht ar aon óstach amháin; is deighilt iompair é sin seachas ródú de réir ainm, agus is minic a mhearbhalltar é leis. Maireann an dá rogha athbhreithniú balla dóiteáin, toisc go meaitseálann an riail rud éigin atá sa phaicéad i ndáiríre.

Má ritheann an teorainn atá uait idir grúpaí úsáideoirí seachas idir dhá chur i bhfeidhm, is féidir le haon ásc amháin le cumraíochtaí cliant ar leith, a láimhseáil teastas féin agus beartas rochtana sainráite é sin a chlúdach. Is é a cheannaíonn sé sin beartas laistigh d'fhreastalaí, ní leithlisiú idir fhreastalaithe, agus is ceanglais dhifriúla an dá rud. Teastaíonn an seoladh nó imeall an bhallla dóiteáin fós ó leithlisiú a chaithfidh seasamh faoi chomhréiteach.

Is féidir le críochnaitheoir TLS a chuirtear os comhair OpenVPN ainm freastalaí fíor a nochtadh d'aghaidh tosaigh inniúil, ach amháin nuair atá an taobh cliant cumraithe don chiseal breise sin freisin. Ní fhaigheann próifílí atá ann cheana an t-iompar sin trí dhíriú ar an seoladh céanna.

Cruthaigh an roghnóir sula dtógfaidh tú

Ainmnigh an réimse a shainaithneoidh cúlstoc, ansin deimhnigh go seolann an cliant é i ndáiríre; más seoladh an freagra, seasann an plean, agus más ainm freastalaí laistigh de chrobhadh láimhe nach sroicheann an t-éisteoir riamh, ní shábhálfaidh aon mhéid oibre DNS é. Réitíonn trí ordú an taobh éisteachta go tapa.

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

Ní thugann an líne openssl teastas ach amháin san áit a gcríochnaíonn rud éigin TLS ar an seoladh sin; i gcoinne éisteoir OpenVPN dúchasach stadann sé nó teipeann sé, agus is é sin féin an freagra ar an méid a nochtann an ciseal seachtrach. Taispeánann an líne journal, léite ar gach cúlstoc, cén t-ásc a ghlac an seisiún. Cláraíonn logaí na haghaidh tosaigh an méid a aicmíodh agus riamh an méid a bhí beartaithe, mar sin fanann an cúlstoc mar an t-aon údarás ar cá dtáinig úsáideoir i dtír.

Críochnaigh le dhá phróifíl atá ceaptha chun freastalaithe éagsúla a shroicheadh, ceangail iad ceann ar cheann agus tabhair faoi deara log an chúlstoc do gach ceann. Má thagann an dá sheisiún chun solais sa journal céanna, tá an roghnóir ar iarraidh seachas a bheith mí-chumraithe, agus is é an leigheas seoladh nó port is féidir leis an gcliant a dhíriú air. Ní chabhróidh eagarthóireacht ar an riail ródaithe, toisc nár tugadh riamh aon rud don riail le ródú air. Nuair a bheidh an deighilt fíor, scríobh í in aice na bpróifílí ionas nach gcuirfidh an chéad duine eile an dara hailias leis agus ag súil go ndéanfaidh sé an obair.

Ailt ghaolmhara