Setjið VPN-biðlara í gám og þið fáið eitt nafnrúm með göngum inni í því, ekki hýsil sem beinir öllum umferðinni sinni í gegnum VPN. Þetta eru aðskilin verkefni, og að meðhöndla þau sem eitt er einmitt leiðin sem gámarnir enda með óviðeigandi réttindi. Þessi handbók nær aðeins yfir hið fyrra: eina yfirfarina ímynd, eitt varið snið og biðlaraferli sem er takmarkaður við eigið netnafnrúm.

Byrjið á gripi sem einhver hefur þegar samþykkt. Skrefin hér að neðan gera ráð fyrir ímynd sem inniheldur openvpn keyrsluskrána og fullt biðlarasnið þar sem skírteinið og lykilefnið eru þegar leyst inni í festingunni. Þau byggja ekki hugbúnað, gefa ekki út skilríki og ná ekki yfir keyrsluumhverfi án root né innfædda Windows-gáma, sem hvert um sig breytir svarinu.

Hvað gámurinn fær og hvað ekki

Haldið sniðinu og öllu sem það vísar í í staðbundinni möppu með takmörkuðum heimildum, festri sem lesa-aðeins. Afstæðar slóðir inni í sniðinu verða að leysast innan þeirrar festingar; þetta er smáatriði sem fólk missir af þegar skírteini er einni möppu fyrir ofan sniðið og gámurinn sér það aldrei.

services:
  vpn:
    image: ${VPN_CLIENT_IMAGE:?set the reviewed image reference}
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - ./vpn:/vpn:ro
    working_dir: /vpn
    entrypoint: ["openvpn"]
    command: ["--config", "/vpn/client.ovpn"]

Þessi skrá veitir þrjá hluti og biður um ekkert annað. Ímyndarvísirinn ætti að vera festur með digest ef dreifingarstefna ykkar segir svo, og sniðið ætti að vera hið yfirfarina, ekki afrit sem einhver breytti á staðnum á hýsilnum.

Lesa-aðeins hér þýðir að gámurinn getur ekki breytt skrám ykkar á hýsilnum; það þýðir ekki að gámurinn geti ekki lesið einkalykilinn sem þið festuð. Það er allur tilgangurinn með festingunni, og þess vegna skipta skráarheimildir, eignarhald og hvernig leynileiðin kom á hýsilinn enn máli. Farið aldrei með lykilorð á skipanalínunni og bakið það aldrei inn í ímyndarlag, því bæði lifa af á stöðum sem þið getið ekki hreinsað síðar.

Hæfni, entrypoint og gildran þar á milli

Tvær stillingar eru nauðsynlegar og þær vinna ótengd verk. NET_ADMIN leyfir meðferð á tengi og leiðum innan nafnrúms gámsins. Tækjafærslan /dev/net/tun leyfir ferlinu að opna gagnatækið yfirleitt. Að gefa annað án hins framleiðir skýrt mistak, sem er þægilegt: vantað TUN-tæki mistekst við opnun, en vantað hæfni mistekst þegar biðlarinn reynir að stilla tengið.

Hvort tveggja réttlætir ekki privileged: true. Gámur með réttindum fær alla hæfni auk aðgangs að tækjum, og það er miklu meira framsal en þessi vinnsla þarf. tilvísunin um réttindi og hæfni keyrsluumhverfisins útskýrir hversu langt það framsal nær. Ef chart eða bloggfærsla biður um það, athugið fyrst hvort krafan hafi í raun verið vantað tækjaleið eða vantað hæfni.

Yfirskrift entrypoint er sá hluti sem bítur. Að kalla openvpn beint er rétt fyrir venjulega ímynd og rangt fyrir hverja vöruímynd þar sem ræsiskriftan undirbýr eldveggjarreglur, leysaskrár eða skilríki áður en djöfullinn er keyrður. Að yfirskrifa þá skrift sleppir undirbúningnum og skilur ykkur eftir að kemba göng sem risu í hálfstilltu nafnrúmi.

Keyrið biðlarann í forgrunni og látið hann vera aðalferli gámsins. Ferli sem verður djöfull hverfur strax, gámurinn endurræsist í lykkju, og skrárnar sem þið þurfið eru dreifðar yfir endurræsingar sem allar líta eins út.

Sannreynið innan frá nafnrúminu, ekki frá hýsilnum

Reisið staflann, staðfestið í skránni að biðlarinn hafi náð tengdri stöðu, og skoðið síðan nafnrúmið sem heldur göngunum í raun.

docker compose up -d
docker compose logs --tail 40 vpn
docker compose exec vpn ip -br addr
docker compose exec vpn ip route

Heimilisfangalistinn ætti að sýna göngutengi með heimilisfangi úr lauginni, og leiðatöflan ætti að sýna ýttu áfangastaðina sem vísa á það. Ef tengið vantar náði biðlarinn aldrei að búa það til. Ef það er til en engin leið notar það, er staðurinn til að leita í push eða leiðarvalkostunum.

Prófið síðan áfangastaðinn sem ykkur er annt um, úr nafnrúminu sem á að nota göngin, með forritinu og ekki bara ping. Nafnaupplausn er sérstakt mistak sem er þess virði að prófa sérstaklega: ýtt DNS-heimilisfang uppfærir ekki leysi gámsins af sjálfu sér, og sjálfstæður biðlari sem hunsar push mun leysa nöfn í gegnum það sem ímyndin stillti.

Aftengda ástandið er hluti samningsins

Endurtengingarhegðun þarf eigið eftirlit, því endurræsingarstefna sannar að ferlið endurræsist og segir ekkert um hvað umferðin gerir á meðan. Stöðvið göngin, prófið fyrirhugaðan áfangastað og fylgist með hvort tengingunni er hafnað, hún hangir eða tekst hljóðlega um venjulegu leið gámsins. Síðasta niðurstaðan er sú sem skiptir máli, og hún er ósýnileg í heilbrigðri skrá.

Ef vinnslan má aldrei nota venjulegu leiðina, hannið það sérstaklega með eldveggjarreglum og tilbúinleika merki inni í nafnrúminu. Kill switch er stefna sem þið skrifið og prófið, ekki eiginleiki sem þið erfið með því að keyra biðlara í gámi.

Að lokum, munið mörkin: þessar leiðir lifa í nafnrúmi gámsins og koma ekki í stað leiðatöflu hýsilsins. Reglur Docker um áframleiðslu, þýðingu og eldvegg eru áfram hluti af ytri leiðinni, og útgefnu porti er ekki VPN-tengi.

Tengdir greinar