Cinneann trí rud cén fhoinse dintiúirí ba chóir duit a úsáid: an bhfuil duine ina shuí ag an gconsól, an bhféadfaidh an rún maireachtáil ar an diosca, agus an gcaithfidh próiseas eile freagra a thabhairt ar an leid. Má roghnaíonn tú go mícheart, tuairiscíonn an cliant fadhb stdin agus an focal faire go hiomlán bailí, rud a sheolann an chuid is mó daoine chuig an bhfreastalaí gan chúis. Roghnaigh an cosán ar dtús; ní bhíonn ciall le teachtaireachtaí earráide go dtí go bhfuil a fhios agat cén cosán a chruthaigh iad.

Na trí choinníoll a chinneann é

Is é leid na consóile an t-aon chosán a dteastaíonn duine uaidh, mar sin is é an t-aon cheann a theipeann go ciúin in aonad systemd nó i gcoimeádán. Má thosaíonn duine an cliant agus má chlóscríobhann sé an focal faire, ní bhíonn comhad ar bith i gceist agus ní thagann aon rud íogair ar an diosca. Má thosaíonn an cliant ag am tosaithe, déantar an leid chéanna ina stad, agus is gnách go dtagann an teorainn ama i láthair mar chliseadh ceangail ghinearálta seachas mar earráid dintiúirí.

Is é comhad dintiúirí an freagra ceart nuair a thosaíonn an próiseas gan mhaoirseacht agus nuair a fhéadann an rún maireachtáil ar an diosca faoi shraith cheadanna rialaithe. Nuair nach féidir an rún a scríobh ar chor ar bith - beartas taisce amháin, comhartha gearrshaolach - teastaíonn sruth uait ar féidir leis an gcliant a oscailt, rud a chiallaíonn go praiticiúil ionadú próisis nó cúntóir a scríobhann isteach i dtuairisceoir comhaid. Clúdaíonn an comhéadan bainistíochta an ceathrú cás: rialtóir a bhainistíonn saolré an tolláin cheana féin agus ar féidir leis ceisteanna a fhreagairt thar soicéad.

  • Duine ag an gconsól, gan uathoibriú: leid idirghníomhach.
  • Tús gan mhaoirseacht, is féidir an rún a stóráil: comhad dintiúirí le mód 0600.
  • Tús gan mhaoirseacht, ní féidir an rún a stóráil: ionadú próisis nó fd a scríobhann gníomhaire rún ann.
  • Tá an cliant ag próiseas eile: comhéadan bainistíochta.

Nuair a oireann dhá fhreagra, roghnaigh an ceann a choinníonn an rún amach as argv agus amach as stair an shell. Is féidir le gach úsáideoir áitiúil focal faire a chuirtear mar argóint chláir a léamh trí liosta na bpróiseas, agus is deacair an nochtadh sin a chealú.

Cad a dhéanann gach cosán ionchuir i ndáiríre

Iarrann --auth-user-pass leis féin ainm úsáideora agus focal faire ar an gconsól. Má thugtar ainm comhaid dó, tógann an cliant an chéad líne mar ainm úsáideora agus an dara líne mar fhocal faire; ní thacaíonn aon rud le comharthaí athfhriotail, tráchtanna ná comhréir eochair-luacha. Sin an fhormáid iomlán, mar sin briseann gach duine a chuireann in eagar é ag súil le comhad INI é. Coinníonn bloc <auth-user-pass> inlíne an dá líne chéanna laistigh den phróifíl, rud a dhéanann an phróifíl féin ina rún agus a chuireann sa rang láimhseála céanna le heochair phríobháideach é.

Is sruth agus soicéad an dá chosán eile. Níl de dhíth ar OpenVPN ach tuairisceoir comhaid inléite, mar sin glacfaidh sé le hionadú próisis, le hiontráil /dev/fd a bhfuil píopa faoi, nó le hainm comhaid atá ina FIFO i ndáiríre. Tá an comhéadan bainistíochta difriúil óna chéile: iarrann an cliant na luachanna ar phróiseas maoirseachta seach iad a léamh é féin. Tá tábhacht leis an difríocht sin agus tú ag athcheangal: is féidir le comhad dintiúirí, le FIFO ar féidir le cúntóir rún a scríobh ann arís, agus leis an gcomhéadan bainistíochta athsholáthar a dhéanamh gan duine; ní féidir le hionadú próisis, mar go n-ídítear an tuairisceoir ar an gcéad léamh.

Caithfidh an comhad a bheith díreach dhá líne

Clúdaíonn dhá mhód teipe an chuid is mó de na comhaid dintiúirí briste. Fágann eagarthóir Windows foircinn CRLF, tagann an t-aiseag carrchun ina chuid den fhocal faire, agus diúltaíonn an freastalaí do luach a bhfuil cuma cheart air ar an scáileán. Fágann an dara líne bhán - líne fholamh san áit a mbaineann an focal faire léi - an cliant le focal faire folamh, a ndiúltaíonn an freastalaí dó cé go bhfuil cuma cheart ar an luach ar an scáileán. Ní dhéanann líne nua bhreise tar éis an fhocail faire dochar. Scríobh an comhad ón shell, ní ó eagarthóir, agus seiceáil na bearta:

install -m 600 /dev/null /etc/openvpn/client.creds
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client.creds
od -c /etc/openvpn/client.creds | head -3

Tá an cosán chomh tábhachtach céanna leis an ábhar. Réitítear cosán coibhneasta in aghaidh eolaire oibre an phróisis, nach mbíonn sé go minic mar an t-eolaire ina ndearna tú tástáil i gcás seirbhíse. Úsáid cosán absalóideach, déan an comhad a shealbhú ag an gcuntas a ritheann an cliant, agus coinnigh mód 0600 ionas nach féidir leis an ngrúpa agus le daoine eile é a léamh. Liostaíonn lámhleabhar OpenVPN 2.6 na foirmeacha a nglactar leis den treoir; seiceáil é sula gcumfaidh tú an tríú ceann.

Tástáil an comhad sula gcuireann tú an locht ar an bhfreastalaí. Priontálann rith openvpn --config client.ovpn --auth-user-pass /etc/openvpn/client.creds --verb 4 ar osclaíodh an comhad agus, níos déanaí, ar glacadh leis na dintiúirí, rud a insíonn duit cén tsraith a athrú ansin.

Sruthanna, stdin agus na hearráidí a tháirgeann siad

Is é an focal faire a phíobáil isteach an chéad rud a thrialann mórchuid daoine agus an cosán is mó iontas. Oibríonn ionadú próisis mar nach dteastaíonn ón gcliant ach tuairisceoir inléite: openvpn --config client.ovpn --verb 3 --auth-user-pass <(printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS"). Ní oibríonn sé chun /dev/stdin a chur isteach ach amháin nuair a bhíonn stdin fós oscailte agus inléite ag an bpointe a n-iarrann an cliant, rud nach bhfuil fíor i bpíblíne a d'ídigh cheana é.

Tá dhá chúis éagsúla le ERROR: could not read Auth username from stdin. Ar chliaint 2.3.x áirithe tháinig an teachtaireacht ó locht ar láimhseáil stdin a dheisigh eisiúintí 2.3 níos déanaí, mar sin ní fheabhsaíonn cliant chomh sean sin ach trí uasghrádú. Ar chliant reatha ciallaíonn an fhoclaíocht chéanna gur iarr an cliant ionchur consóile agus nach raibh stdin ina theirminéal - go díreach an cás in aonad systemd, i dtasc cron, nó i gcoimeádán a tosaíodh gan -t.

Cuireann auth-nocache tríú lúb leis a bhfuil cuma fhocail faire bhriste air. Caitheann sé na dintiúirí as an gcuimhne tar éis iad a úsáid, mar sin níl aon rud le hathsheinm ag athcheangal a spreag athrú líonra agus filleann an leid. Sin an treoir ag obair de réir dearaidh. Athraíonn auth-nocache an rud a choinníonn an cliant sa chuimhne, ní an rud a cheapann an freastalaí nó an soláthraí féiniúlachta faoin gcuntas, mar sin is é an leigheas iomlán an comhad céanna a sholáthar arís, athléite ar atosú - agus maidir le nasc bainistithe ba chóir don soláthar sin teacht ón stór rún ceadaithe, ní ó fhocal faire i script.

An comhéadan bainistíochta nuair a bhíonn an leid ag próiseas eile

Is féidir le rialtóir a dhéanann maoirseacht ar an tollán cheana féin freagra a thabhairt ar a chuid ceisteanna freisin. Tosaigh an cliant le --management 127.0.0.1 7505, léigh na línte staid, agus breathnaigh do >PASSWORD:Need 'Auth' username/password. Freagraíonn an rialtóir le username "Auth" alice agus ansin password "Auth" ... ar línte ordaithe ar leith. Athshonann an comhartha 'Auth' an t-aitheantóir ón iarraidh agus caithfidh sé teacht leis, nó déantar neamhaird den fhreagra agus fanann an cliant.

Is é an costas meaisín stáit atá agat anois: ord na nasc, atosú an chliaint, agus soicéad áitiúil nach gceadaítear d'úsáideoirí eile ar an óstach teacht air. Is é a cheannaíonn tú dintiúir a sholáthraítear ag am rite, gan comhad ar an diosca agus gan leid ar féidir léi stad. Mura bhfuil aon rud eile i do chruach ag labhairt an phrótacail cheana féin, cuireann an cosán seo comhpháirt le cothabháil.

Teipeanna a bhfuil cuma fhadhbanna dintiúirí orthu

Is fadhb muiníne é croitheadh láimhe TLS nach gcríochnaíonn riamh, nó VERIFY ERROR: depth=0, error=certificate signature failure, agus tarlaíonn sé sula léitear aon ainm úsáideora. Teipeann cliant proto tcp atá dírithe ar éisteoir UDP san áit chéanna: ní shroicheann na paicéid an chéim fhíordheimhnithe riamh, mar sin bíonn cuma mhícheart ar gach focal faire de bharr comhcheangail. Coinnigh fíorú na dteastas ar siúl sula gcuirtear na dintiúirí, níl aon rud le rá ag leid aithnidiúil faoi cé a fhaigheann an focal faire. Seiceáil slabhra na dteastas, an t-ainm coitianta agus an t-iompar sula mbuailfidh tú leis na dintiúirí.

Is é an dara rian bréige iad fabhtanna shell sa script a chuirann an phróifíl le chéile. Táirgeann spás ar iarraidh laistigh de [ ! -f "$file" ] command not found, stopann an script go luath, ní athdhéantar an phróifíl choíche, agus tosaíonn an cliant leis an gceann roimhe. Baineann an earráid sin leis an shell, ní leis an bhfíordheimhniú, agus ní ghlanfaidh aon mhéid athchlóscríbhinne den fhocal faire í.

Ní hé gach leid sa sruth seo an dintiúir seo. Is trí rún éagsúla iad frása faire eochrach príobháidí, logáil isteach seachfhreastalaí HTTP agus focal faire na seirbhíse a iarrtar ag céimeanna éagsúla, agus is gnách go láimhseálann an cliant nó gníomhaire frása faire eochrach seach auth-user-pass. Má thagann an leid chun solais sula bhfuil an seisiún TLS suas, tá tú ag freagairt na ceiste mícheart agus ní chabhróidh aon athshocrú cuntais. Nuair a chuirtear an leid mhícheart as an áireamh, tosaíonn na seiceálacha eile ag an tsraith is luaithe:

  • Léigh an chéad earráid phrótacail, ní an líne dheireanach dintiúirí: TLS, ansin fíordheimhniú, ansin push.
  • Deimhnigh go bhfuil dhá líne sa chomhad, nach bhfuil aon aiseanna carrchun ann, agus go ndéantar tagairt dó le cosán absalóideach.
  • Deimhnigh nach bhfuil an phróifíl agus an líne ordaithe ag easaontú faoin treoir.
  • Scar "dintiúirí glactha" ó "trácht ag sreabhadh" - is sraith níos déanaí é ródú agus DNS.

Nuair a shroicheann an cliant an chéim push, stop ag féachaint ar na dintiúirí agus tosaigh ag léamh na ród agus na bhfreastalaí DNS a sheol an freastalaí. Sin an chéad fhadhb eile, agus níl baint ar bith aici leis an bhfocal faire a dheisigh tú díreach.

Ailt ghaolmhara