Ar lietotni viss ir kārtībā un ar tuneli viss ir kārtībā, bet informācijas panelis tomēr neielādējas. Kad pakalpojums darbojas ar network_mode: service:vpn, tas dala VPN konteinera tīkla nosaukumvietu, kas nozīmē, ka tā klausītājs un publicētie porti pieder šai nosaukumvietai, nevis pakalpojumam. No tā izriet trīs lēmumi: kur lietotne piesaistās, kurš konteiners publicē portu un cik šaurs ir pārvaldības ceļš. Salieciet tos nepareizā secībā, un katrs atsevišķais iestatījums izskatīsies pareizs, kamēr kombinācija nevarēs darboties.

Kam pieder porta nosaukumvieta

Koplietotā nosaukumvietā ports: ieraksta pievienošana atkarīgajam pakalpojumam neko lietderīgu nedod, un vairākas tīkla opcijas tam pēc konstrukcijas netiek atbalstītas. Tā vietā publicējiet konteinerā, kuram pieder nosaukumvieta. Šis konteiners ir arī tas, kura adrese parādās resursdatorā, tāpēc kartējums tiek lasīts kā viens ieraksts, nevis viens uz katru pakalpojumu.

services:
  vpn:
    image: vpn-client-image
    cap_add: [NET_ADMIN]
    ports:
      - "127.0.0.1:8080:8080"
  app:
    network_mode: "service:vpn"

Pievērsiet uzmanību adresei kartējuma kreisajā pusē. Piesaiste 127.0.0.1 patur publicēto portu resursdatora loopback saskarnē, ko parasti vēlas pārvaldības saskarne. Piesaiste 0.0.0.0 atklāj to visās resursdatora saskarnēs, un tas ir cits drošības lēmums, nevis ērtība.

Lieciet lietotnei klausīties tur, kur nosaukumvieta to gaida

Klausītājs, kas piesaistīts 127.0.0.1 nosaukumvietas iekšienē, ir sasniedzams tikai no šīs nosaukumvietas iekšpuses. Publicētie resursdatora porti nāk no ārpuses, tāpēc lietotnei ir jāpiesaista plašāka adrese, lai kartējums darbotos. Lielākajā daļā serveru tas ir vienas rindas grozījums, un tieši šo soli cilvēki izlaiž pēc tam, kad nokopējuši sacietēšanas rokasgrāmatu, kas rakstīta izvietošanai bez konteineriem.

docker compose exec app ss -lntp
docker port vpn
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/

Klausītāju saraksts lietotnes iekšienē pastāsta patiesību par piesaistes adresi, un docker port parāda, ko īpašnieks faktiski publicēja. Ja pirmais rāda 127.0.0.1 un otrais rāda kartējumu resursdatorā, jūs esat atradis neatbilstību, neaiztiekot VPN konfigurāciju.

Izvēlieties, kā pārvaldības ceļš nāk iekšā

Ir trīs saprātīgi izkārtojumi. Publicējiet VPN konteinerā un sasniedziet to no resursdatora vai vietējā tīkla. Novietojiet apgriezto starpniekserveri nosaukumvietas priekšā un dodiet tam vienīgo atvērto portu. Vai arī turiet informācijas paneli sasniedzamu tikai no nosaukumvietas iekšpuses, izmantojot exec sesiju vai SSH tuneli, kas ir mazākā pakļautība un vismazākās ērtības.

Kurš der, atkarīgs no tā, kam un no kurienes ir vajadzīga saskarne. Vienam administratoram tajā pašā resursdatorā pietiek ar loopback piesaisti. Komandai, kas tai piekļūst caur VPN, vajadzīgs apdomāts ceļš un nosaukts īpašnieks. Izvēloties starpniekservera variantu, jūs iegūstat TLS un piekļuves žurnālus, bet par cenu vēl vienai komponentei, kas jāuztur atjaunināta.

Atveriet pārvaldības portu, neatverot visu

VPN klienta paša vietējās piekļuves vai bloķēšanas politika var izmest ienākošo pārvaldības pieprasījumu pat tad, kad izejošais tunelis darbojas nevainojami. Atļaujiet vienu dokumentētu izņēmumu paredzētajam avotam un portam, pēc tam apstipriniet, ka parastā tuneļa aizsardzība nav mainījusies. Avārijas slēdža izslēgšana, lai ielādētos informācijas panelis, apmaina reālu kontroli pret pārlūka cilni.

Atstājiet pašas lietotnes autentifikāciju ieslēgtu. Atrašanās ar VPN savienotā kopā nedod tiesības katram vietējam lietotājam vai katrai ierīcei, kas var sasniegt resursdatoru, un administratora panelis bez autentifikācijas aiz tuneļa joprojām ir panelis bez autentifikācijas.

Pārbaudiet no pārvaldības ierīces un vēlāk pārbaudiet vēlreiz

Pārbaudiet no mašīnas, kas patiešām pārvaldīs pakalpojumu, nevis no resursdatora, un pēc tam atsevišķi pārbaudiet lietotnei nepieciešamo interneta ceļu. Pārvaldības panākumi pierāda vienu virzienu un neko nepasaka par izeju.

Pārbaudiet vēlreiz pēc tam, kad kopa ir izveidota no jauna. Nomainīts tīkla īpašnieks maina nosaukumvietu, kurai lietotne pievienojas, un URL, kas darbojās pirms atjauninājuma, pēc tam var nenorādīt nekur. Pierakstiet publicēto kartējumu un piesaistes adresi, lai nākamā pārbūve būtu divu minūšu pārbaude, nevis atkārtota izmeklēšana.

Saistītie raksti