VPN konteyneri içində veb interfeysə çatmaq: port sahibini seçin
Tətbiq VPN ad məkanını paylaşır, ona görə port VPN konteynerinə aiddir. Dinləyicini düzgün bağlayın, portu sahibində yayımlayın, yolu dar saxlayın.
Tətbiqdə heç bir problem yoxdur və tuneldə heç bir problem yoxdur, amma panel yenə də yüklənmir. Xidmət network_mode: service:vpn ilə işlədikdə VPN konteynerinin şəbəkə ad məkanını paylaşır, bu isə o deməkdir ki, onun dinləyicisi və yayımlanmış portları xidmətə deyil, həmin ad məkanına aiddir. Buradan üç qərar çıxır: tətbiqin haraya bağlandığı, portu hansı konteynerin yayımladığı və idarəetmə yolunun nə qədər dar olduğu. Onları səhv sıra ilə etsəniz, hər fərdi parametr düzgün görünür, amma birləşmə işləyə bilməz.
Port ad məkanı kimə aiddir
Paylaşılan ad məkanında asılı xidmətə ports: girişi əlavə etmək faydalı bir şey vermir və bir neçə şəbəkə seçimi dizaynına görə onun üçün dəstəklənmir. Bunun yerinə ad məkanına sahib olan konteynerdə yayımlayın. Həmin konteyner həm də ünvanı hostda görünən konteynerdir, ona görə xəritələmə hər xidmət üçün bir yox, bir giriş kimi oxunur.
services:
vpn:
image: vpn-client-image
cap_add: [NET_ADMIN]
ports:
- "127.0.0.1:8080:8080"
app:
network_mode: "service:vpn"
Xəritələmənin solundakı ünvana fikir verin. 127.0.0.1 ünvanına bağlanmaq yayımlanmış portu hostun loopback interfeysində saxlayır və bu, adətən idarəetmə interfeysinin istədiyi şeydir. 0.0.0.0 ünvanına bağlanmaq onu hər host interfeysində açır və bu, rahatlıq deyil, fərqli təhlükəsizlik qərarıdır.
Tətbiqi ad məkanının gözlədiyi yerdə dinlədin
Ad məkanının içində 127.0.0.1 ünvanına bağlanmış dinləyiciyə yalnız həmin ad məkanının içindən çatmaq olar. Yayımlanmış host portları onun xaricindən gəlir, ona görə xəritələmənin işləməsi üçün tətbiq daha geniş ünvana bağlanmalıdır. Bu, əksər serverlərdə bir sətirlik dəyişiklikdir və insanların konteynersiz quraşdırma üçün yazılmış sərtləşdirmə təlimatını kopyaladıqdan sonra atladığı addımdır.
docker compose exec app ss -lntp
docker port vpn
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
Tətbiqin içindəki dinləyici siyahısı bağlanma ünvanı barədə həqiqəti deyir, docker port isə sahibin əslində nə yayımladığını göstərir. Birincisi 127.0.0.1 göstərirsə, ikincisi host xəritələməsi göstərirsə, VPN konfiqurasiyasına toxunmadan uyğunsuzluğu tapmısınız.
İdarəetmə yolunun necə daxil olacağını seçin
Üç məqbul tənzimləmə var. VPN konteynerində yayımlayın və ona hostdan və ya LAN-dan çatın. Ad məkanının qarşısına tərs proxy qoyun və proxy-yə yeganə açıq portu verin. Və ya paneli yalnız ad məkanının içindən exec sessiyası və ya SSH tuneli ilə əlçatan saxlayın; bu, ən kiçik məruz qalma və ən az rahatlıqdır.
Hansının uyğun olduğu interfeysin kimə və haradan lazım olduğundan asılıdır. Eyni hostdakı tək administrator üçün loopback bağlantısı kifayətdir. VPN üzərindən çatan komanda qəsdən seçilmiş yol və adı çəkilmiş sahib tələb edir. Proxy seçimini seçmək sizə TLS və giriş jurnalları qazandırır, qarşılığında yenilənməli daha bir komponent tələb edir.
İdarəetmə portunu hər şeyi açmadan açın
VPN müştərisinin öz yerli-giriş və ya kilidləmə siyasəti daxil olan idarəetmə sorğusunu, çıxan tunel mükəmməl işləyərkən belə, atə bilər. Nəzərdə tutulan mənbə və port üçün bir sənədləşdirilmiş istisnaya icazə verin, sonra tunelin adi qorunmasının dəyişmədiyini təsdiqləyin. Paneli yükləmək üçün qəza açarını söndürmək real bir nəzarəti brauzer vərəqi ilə dəyişməkdir.
Tətbiqin öz autentifikasiyasını aktiv saxlayın. VPN-ə qoşulmuş bir yığımın içində olmaq hər yerli istifadəçini və ya hosta çata bilən hər cihazı səlahiyyətləndirmir və tunelin arxasındakı autentifikasiyasız admin paneli yenə autentifikasiyasız admin panelidir.
İdarəetmə cihazından yoxlayın, sonra yenidən yoxlayın
Xidməti həqiqətən idarə edəcək maşından sınaqdan keçirin, hostdan yox, sonra tətbiqin tələb etdiyi internet yolunu ayrıca yoxlayın. İdarəetmə uğuru bir istiqaməti sübut edir və çıxış barədə heç nə demir.
Yığım yenidən yaradıldıqdan sonra yenidən sınayın. Dəyişdirilmiş şəbəkə sahibi tətbiqin qoşulduğu ad məkanını dəyişir və yeniləmədən əvvəl işləyən URL sonradan heç bir yerə işarə etməyə bilər. Yayımlanmış xəritələməni və bağlanma ünvanını yazın ki, növbəti yenidənqurma təkrar araşdırma deyil, iki dəqiqəlik yoxlama olsun.