Dosiahnuť webové rozhranie v kontajneri VPN: vyberte vlastníka portu
Aplikácia zdieľa menný priestor VPN, takže port patrí kontajneru VPN. Správne pripnite poslucháč, publikujte na vlastníkovi a držte cestu úzku.
S aplikáciou nie je nič zle a s tunelom nie je nič zle, a predsa sa panel nenačíta. Keď služba beží s network_mode: service:vpn, zdieľa sieťový menný priestor kontajnera VPN, čo znamená, že jej poslucháč a publikované porty patria tomuto mennému priestoru, nie službe. Z toho vyplývajú tri rozhodnutia: kam sa aplikácia pripája, ktorý kontajner port publikuje a aká úzka je cesta správy. Usporiadajte ich v nesprávnom poradí a každé jednotlivé nastavenie vyzerá správne, zatiaľ čo kombinácia nemôže fungovať.
Kto vlastní menný priestor portu
V zdieľanom mennom priestore neprinesie pridanie záznamu ports: závislej službe nič užitočné a niekoľko sieťových možností preň nie je podľa návrhu podporovaných. Publikujte namiesto toho na kontajneri, ktorý menný priestor vlastní. Tento kontajner je aj ten, ktorého adresa sa objavuje na hostiteľovi, takže mapovanie sa číta ako jeden záznam, nie jeden na službu.
services:
vpn:
image: vpn-client-image
cap_add: [NET_ADMIN]
ports:
- "127.0.0.1:8080:8080"
app:
network_mode: "service:vpn"
Všimnite si adresu naľavo od mapovania. Pripojenie na 127.0.0.1 ponechá publikovaný port na loopbacku hostiteľa, čo zvyčajne chce správne rozhranie. Pripojenie na 0.0.0.0 ho vystaví na každom rozhraní hostiteľa, a to je iné bezpečnostné rozhodnutie, nie pohodlie.
Nechajte aplikáciu počúvať tam, kde menný priestor očakáva
Poslucháč pripnutý na 127.0.0.1 vnútri menného priestoru je dostupný len z jeho vnútra. Publikované porty hostiteľa prichádzajú zvonku, takže aplikácia musí pripnúť širšiu adresu, aby mapovanie fungovalo. Na väčšine serverov je to zmena na jednom riadku, a práve tento krok ľudia vynechajú po skopírovaní príručky na spevnenie napísanej pre nasadenie bez kontajnerov.
docker compose exec app ss -lntp
docker port vpn
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
Zoznam poslucháčov vnútri aplikácie hovorí pravdu o adrese pripnutia a docker port ukazuje, čo vlastník skutočne publikoval. Ak prvý zobrazuje 127.0.0.1 a druhý mapovanie na hostiteľovi, našli ste nesúlad bez toho, aby ste sa dotkli konfigurácie VPN.
Vyberte, ako sa cesta správy dostane dnu
Existujú tri rozumné usporiadania. Publikujte na kontajneri VPN a pristupujte k nemu z hostiteľa alebo z lokálnej siete. Postavte pred menný priestor reverzný proxy a dajte mu jediný vystavený port. Alebo ponechajte panel dostupný len z vnútra menného priestoru cez reláciu exec alebo tunel SSH, čo je najmenšia expozícia a najmenšie pohodlie.
Ktoré sa hodí, závisí od toho, kto rozhranie potrebuje a odkiaľ. Jednému správcovi na tom istom hostiteľovi stačí pripnutie na loopback. Tím, ktorý sa k nemu dostáva cez VPN, potrebuje premyslenú cestu a menovaného vlastníka. Voľba proxy vám prinesie TLS a prístupové záznamy za cenu ďalšej komponenty, ktorú treba udržiavať.
Otvorte port správy bez otvorenia všetkého
Vlastná politika lokálneho prístupu alebo uzamknutia klienta VPN môže zahodiť prichádzajúcu požiadavku správy, aj keď odchádzajúci tunel funguje bezchybne. Povoľte jednu zdokumentovanú výnimku pre zamýšľaný zdroj a port a potom potvrďte, že obvyklá ochrana tunela zostala nezmenená. Vypnutie núdzového prepínača preto, aby sa panel načítal, vymieňa skutočnú kontrolu za kartu v prehliadači.
Ponechajte vlastnú autentifikáciu aplikácie zapnutú. Byť vnútri zásobníka pripojeného k VPN neoprávňuje každého lokálneho používateľa ani každé zariadenie, ktoré sa k hostiteľovi dostane, a panel správy bez autentifikácie za tunelom zostáva panelom bez autentifikácie.
Overte z riadiaceho zariadenia a potom overte znova neskôr
Testujte zo stroja, ktorý bude službu skutočne spravovať, nie z hostiteľa, a potom samostatne overte internetovú cestu, ktorú aplikácia vyžaduje. Úspech správy dokazuje jeden smer a o odchádzajúcej prevádzke nehovorí nič.
Otestujte znova po tom, ako sa zásobník znova vytvorí. Vymenený sieťový vlastník mení menný priestor, ku ktorému sa aplikácia pripája, a URL, ktoré fungovalo pred aktualizáciou, po nej už nemusí ukazovať nikam. Zapíšte publikované mapovanie a adresu pripnutia, aby ďalšia prestavba bola dvojminútovou kontrolou namiesto opakovaného vyšetrovania.