Jõuda veebiliideseni VPN-konteineri sees: vali pordi omanik
Rakendus jagab VPN-i nimeruumi, seega kuulub port VPN-konteinerile. Seo kuulaja õigesti, avalda omanikul ja hoia tee kitsana.
Rakendusega pole midagi valesti ja tunneliga pole midagi valesti, kuid juhtpaneel ei laadi ikkagi. Kui teenus töötab network_mode: service:vpn abil, jagab see VPN-konteineri võrgu nimeruumi, mis tähendab, et selle kuulaja ja avaldatud pordid kuuluvad sellele nimeruumile, mitte teenusele. Sellest tuleneb kolm otsust: kuhu rakendus end seob, milline konteiner pordi avaldab ja kui kitsas on haldustee. Tee need vales järjekorras ja iga üksik seade näib õige, samal ajal kui kombinatsioon ei saa töötada.
Kes omab pordi nimeruumi
Jagatud nimeruumis ei anna sõltuvale teenusele ports: kirje lisamine midagi kasulikku ja mitut võrguvalikut ei toetata selle jaoks disaini järgi. Avalda selle asemel konteineril, mis nimeruumi omab. See konteiner on ka see, mille aadress ilmub hostile, seega loetakse vastendust ühe kirjena, mitte ühe kirjena teenuse kohta.
services:
vpn:
image: vpn-client-image
cap_add: [NET_ADMIN]
ports:
- "127.0.0.1:8080:8080"
app:
network_mode: "service:vpn"
Pööra tähelepanu vastendusest vasakul olevale aadressile. Sidumine aadressiga 127.0.0.1 hoiab avaldatud pordi hosti loopbackil, mida haldusliides tavaliselt soovib. Sidumine aadressiga 0.0.0.0 paljastab selle igal hosti liidesel ja see on teine turvaotsus, mitte mugavus.
Pane rakendus kuulama sinna, kus nimeruum seda ootab
Nimeruumi sees aadressiga 127.0.0.1 seotud kuulaja on kättesaadav ainult selle nimeruumi seest. Avaldatud hosti pordid tulevad väljastpoolt, seega peab rakendus siduma laiema aadressi, et vastendus töötaks. See on enamikus serverites üherealiseks muudatuseks ja just selle sammu jätavad inimesed vahele pärast ilma konteineriteta juurutamiseks kirjutatud karastusjuhendi kopeerimist.
docker compose exec app ss -lntp
docker port vpn
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
Rakenduse sees olev kuulajate loend räägib tõtt sidumisaadressi kohta ja docker port näitab, mida omanik tegelikult avaldas. Kui esimene näitab 127.0.0.1 ja teine näitab hosti vastendust, olete ebakõla leidnud VPN-i seadistust puutumata.
Vali, kuidas haldustee sisse tuleb
On kolm mõistlikku lahendust. Avalda VPN-konteineril ja jõua selleni hostilt või kohalikust võrgust. Pane nimeruumi ette pöördproksi ja anna proksile ainus avatud port. Või hoia juhtpaneel kättesaadav ainult nimeruumi seest exec-seansi või SSH-tunneli kaudu, mis on väikseim avatus ja väikseim mugavus.
Milline sobib, sõltub sellest, kes liidest vajab ja kust. Ühele administraatorile samal hostil piisab loopbacki sidumisest. Meeskond, kes jõuab selleni VPN-i kaudu, vajab teadlikku teed ja nimetatud omanikku. Proksi valiku eest saate TLS-i ja juurdepääsu logid, kuid see nõuab veel üht komponenti, mida ajakohasena hoida.
Ava haldusport ilma kõike avamata
VPN-kliendi enda kohaliku juurdepääsu või lukustuse poliitika võib sissetuleva haldustaotluse kõrvale jätta ka siis, kui väljuv tunnel töötab laitmatult. Luba üks dokumenteeritud erand kavandatud allika ja pordi jaoks, seejärel kinnita, et tunneli tavaline kaitse on muutumatu. Hädalüliti väljalülitamine juhtpaneeli laadimiseks vahetab tõelise juhtimise brauseri vahelehe vastu.
Jäta rakenduse enda autentimine sisse lülitatuks. VPN-iga ühendatud virnas olemine ei anna õigust igale kohalikule kasutajale ega igale seadmele, mis hostile ligi pääseb, ja autentimiseta halduspaneel tunneli taga on ikka autentimiseta halduspaneel.
Kontrolli haldusseadmest ja kontrolli hiljem uuesti
Testi masinast, mis teenust tegelikult haldab, mitte hostilt, ja seejärel kontrolli eraldi rakenduse nõutavat internetiteed. Halduse õnnestumine tõestab ühte suunda ega ütle väljuva liikluse kohta midagi.
Testi uuesti pärast virna uuesti loomist. Asendatud võrguomanik muudab nimeruumi, millega rakendus liitub, ja enne uuendust töötanud URL ei pruugi pärast seda enam mitte kuhugi osutada. Kirjuta üles avaldatud vastendus ja sidumisaadress, et järgmine ümberehitus oleks kaheminutiline kontroll, mitte korduv uurimine.