Qayda deyir ki, VPN server ünvanına dərc edilmiş xidmətə icazə verin, amma o, bağlantını yenə də kəsir. Bu nəticə geniş yayılmışdır və Docker səhvi deyil. İki ayrı uyğunluq səhvdir: yazdığınız mənbə hostun qəbul etdiyi mənbə olmaya bilər, yazdığınız port isə filtrin gördüyü port olmaya bilər. Hər ikisini düzəltmək xidmət diaqramına deyil, paket yoluna baxmağı tələb edir.

Mif: VPN serverinə icazə ver və iş bitdi

Marşrutlanmış VPN müştəri tunel ünvanını Docker hostuna qədər saxlaya bilər. Mənbə çevrilməsi edən şlüz bu ünvanı öz ünvanı ilə əvəz edə bilər. Hər iki dizayn qanunidir və eyni istifadəçi hərəkəti üçün fərqli mənbələr yaradır.

Yəni VPN server IP ifadəsi müşahidəni deyil, fərziyyəni təsvir edir. Qarşınızda hansı dizaynın olduğunu bilməyincə qayda təxmindir.

Mənbə: müştəri hovuzu, yoxsa çevrilmiş şlüz

Dörd şeyi ardıcıl yoxlayın. Birinci, müştəri ünvan hovuzu, məsələn 10.90.0.0/24. İkinci, şlüzün bu hovuzu hosta çatmadan əvvəl çevirib-çevirmədiyi. Üçüncü, hostun bir yeni bağlantı üçün həqiqətən gördüyü mənbə. Dördüncü, tətbiq autentifikasiyasının ayrı-ayrı istifadəçiləri fərqləndirib-fərqləndirmədiyi, çünki ortaq çevrilmiş ünvan bunu edə bilməz.

Hovuz qorunursa, yalnız şlüzün ictimai ünvanına uyğun gələn qayda hər müştərini qaçırır. Şlüz qəsdən çevirirsə, çevrilmiş ünvana icazə vermək onun arxasındakı hər istifadəçini qəbul edir; bu, öz girişi olan xidmət üçün məqbul, başqa hər şey üçün qeyri-məqbul ola bilər.

Port: DNAT uyğunlaşdırdığınız rəqəmi dəyişir

Docker iptables ilə adi Linux körpü dərcetməsində 8443-dən konteyner portu 443-ə host xəritələməsi yönləndirmə filtrindən əvvəl çevrilir. Paket filtrə təyinat portu 443 ilə çatır. O nöqtədə 8443-ə uyğun gələn qayda heç vaxt işə düşmür, halbuki müştərinin yazdığı 8443 idi.

Dərc edilmiş port bağlantı izləmədə hələ də mövcuddur və buna görə həqiqətən lazım olduqda orada ilkin təyinatı uyğunlaşdırmaq olar.

Hansı rəqəmin niyyəti ifadə etdiyinə qərar verin. Qayda konteyner daxilindəki xidməti qoruyursa, DNAT-dan sonrakı konteyner portuna uyğunlaşdırın. Qayda müştərinin nə istədiyini təsvir etməlidirsə, conntrack seçimi ilə ilkin təyinatı uyğunlaşdırın və bununla gələn əlavə uyğunlaşdırma xərcini və qayda sırası qayğısını qəbul edin.

Zəncir: INPUT deyil, DOCKER-USER

Docker-in iptables bələdçisi istifadəçi yönləndirmə siyasətini DOCKER-USER zəncirinə qoyur, bu zəncir Docker-in öz yönləndirmə qaydalarından əvvəl qiymətləndirilir. Host xidmətindən INPUT zəncirinə köçürülən qayda hosta ünvanlanmış trafiki süzür, konteynerə yönləndirilən trafiki yox. Bu səhv doğru görünən və konteyner yoluna heç bir təsiri olmayan qayda yaradır.

Mənbə aralığını, effektiv təyinat portunu, protokolu və giriş interfeysini eyni qaydada birlikdə saxlayın. Hər yönləndirilmiş təyinat üçün yalnız mənbəyə əsaslanan qəbul bir dərc edilmiş xidmətə icazə verməkdən daha genişdir.

Yeni bağlantılarla yoxlayın

Hər iki istiqaməti yeni bağlantılarla sınayın: bir icazəli VPN müştərisi və rədd edilməli qalan bir mənbə. Mövcud bağlantı vəziyyəti siyasət dəyişdikdən sonra sessiyanı saxlaya bilər, ona görə köhnə bağlantı yeni qayda haqqında heç nə sübut etmir. Sonra cavab yolunu yoxlayın, çünki konteyner hələ də gördüyü mənbəyə geri marşrutlaşdırmalıdır.

Bu yoxlamaların arxasındakı zəncir sırasını və port çevrilmə davranışını Docker iptables bələdçisi sənədləşdirir. Resepti köçürməzdən əvvəl onu oxuyun və quraşdırılmış Docker-in hansı backend istifadə etdiyini təsdiqləyin, çünki nftables backend siyasəti fərqli birləşdirir.

Əlaqəli məqalələr