Docker'da yeniyim, şu anda bu öğreticiyi [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ izleyerek vps'de docker kurmak istiyorum. ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) yani kurulum planım şöyle olacak: vps ubuntu 22.04, vpn için wireguard, güvenlik duvarı için ufw: http, https, ssl sertifikasını işlemek için nginx proxy yöneticisi (NPM) (açık bağlantı noktası 81) liman işçisi yönetimi için taşıyıcı (9443 numaralı bağlantı noktası açığa çıktı) hayalet, diğer kapsayıcım docker ağını kullanacak ve öğretici gibi doğrudan nginx proxy yöneticisi ile konuşacak ve buna göre alt etki alanına eşleme yapacak. 81, 9443 numaralı bağlantı noktasını halka açık hale getirmekten hoşlanmıyorum, bu nedenle ufw kuralı yapıyorum ve yalnızca o bağlantı noktasına bağlanabilen yerel vpn ipine izin veriyorum. benim sorunum, docker kapsayıcısı ufw kuralını görmezden geliyor ve bağlantı noktasını genel ip ile hala erişilebilir kılıyor. [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) denedim ve portainer ve NPM sorununu çözdü.. ama hayalet ve diğer kapsayıcım başarısız oldu kutu bir şekilde yeniden başlatılırsa veya kapsayıcı yeniden başlatılırsa nginx proxy yöneticisine bağlanmak için. Şu anda etraftaki işim hayalet, diğer konteyneri ana bilgisayar bağlantı noktasına maruz bırakıyor ve ardından onu ip adresine göre NPM'ye eşliyor. işe yarıyor ama yanlış geliyor çünkü konteyner sayısı arttıkça liman ihtiyacı da artacak. Bunun için temiz çözüm nedir? Teşekkürler Docker, ilk kuralını iptables'a oldukça erken, nat PREROUTING'de ekler. Kuralları şununla görüntüleyebilirsiniz: iptables -t nat -S ufw genellikle hem PREROUTING hem de FORWARD'dan sonra olan INPUT'a kurallar koyar! Ancak PREROUTING'de nat'tan önce olan iki yer var! ham ve mangal. Mangle, INPUT'un zaten yapabileceği çoğu şeyi yapabilir, böylece pub arabirimi için aşağıdaki gibi bir kural oluşturarak, genel arabirime gelen paketlerin bırakın docker'ın ağına bile ulaşmasını engelleyebilirsiniz: iptables -t mangle -A ÖN YÖNLENDİRME -i eth0 -p tcp --dport 9443 -j KABUL iptables -t mangle -A ÖN YÖNLENDİRME -i eth0 -p tcp --dport 81 -j KABUL # Böylece kendinizi ssh'den kilitlemezsiniz: iptables -t mangle -A ÖN YÖNLENDİRME -i eth0 -p tcp --dport 22 -j KABUL Ardından, pub arayüzündeki kabullerinizden sonra tcp'nin geri kalanını bırakın (udp'yi unutmayın): iptables -t mangle -A ÖN YÖNLENDİRME -i eth0 -p tcp -j DROP Kılavuzlarda olduğu gibi referans için, INPUT için eşdeğer bir kural şöyle görünür: iptables -A GİRİŞ -i eth0 -p tcp --dport 22 -j KABUL genel arayüz adınızın eth0 olduğunu varsayarsak elbette. Gerekirse kurallarda değiştirin :) Alternatif, hypgn0sis'in DOCKER-USER zincirini kullanarak önerdiği şeydir. Ancak bu daha az verimli olacaktır ve paketler yine de ağa ulaşır (İLERİ kabuller dahil). Ayrıca ufw ve firewalld, siz onları devre dışı bırakmadığınız veya kaldırmadığınız sürece iptables kurallarınıza müdahale edecektir.