Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
Exponer el puerto acoplable solo a la red interna

Ejecutando numerosos acopladores en este momento en una nueva compilación para un servidor de laboratorio doméstico y tratando de asegurarse de que todo esté bloqueado y seguro. Uso el servidor para una variedad de cosas, tanto que requieren acceso desde el mundo exterior (nextcloud) como cosas a las que solo accederé desde mi red interna (plex). Por supuesto, el servidor está detrás de un enrutador que limita los puertos abiertos pero busca seguridad adicional. Me gustaría restringir aquellos acopladores a los que solo quiero acceder a través de la red interna, a 192.168.0.0/24. De esa manera, si de alguna manera un puerto se abriera en mi enrutador, no estaría expuesto (¿estoy siendo paranoico?).

Actualmente, los archivos docker-compose están exponiendo puertos a través de:

 .... ports: - 8989:8989 ....

Por supuesto, esto funciona bien, pero es accesible para todo el mundo si abro el puerto en mi enrutador. Sé que puedo vincularme a localhost a través de

 .... ports: - 127.0.0.1:8989:8989 ....

Pero eso no me ayuda cuando intento acceder a la ventana acoplable desde mi red interna. He leído numerosos artículos sobre redes docker y varias banderas y también leí sobre la posibilidad de solución de iptables.

Cualquier orientación es muy apreciada.

Gracias,

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Simplemente no declare ningún puerto en docker-compose, son visibles automáticamente entre contenedores.

Utilizo un contenedor de búsqueda elástica de esta manera y un kibana separado puede conectarse a él por el nombre del servidor declarado en el yml.


si de alguna manera un puerto se abriera en mi enrutador, no estaría expuesto

Usando este procedimiento, los puertos nunca son visibles fuera del entorno de la ventana acoplable (es decir, fuera == en su red local).

Si lo que te preocupa es que se publiquen puertos en tu LAN al hacer el procedimiento que te comenté, no es así.

over 4 years ago · Santiago Trujillo Report

0

en realidad eres muy cercano a

 ports: - 127.0.0.1:8989:8989

como con esto, es accesible localmente en su servidor, lo suficientemente divertido, su enlace al truco localhost es exactamente lo que estaba buscando para mi propia configuración xD

a partir de este punto, en realidad hay un par de formas de configurarlo para que pueda acceder a él en su red local.

Tunelización SSH

el primero es el que estoy usando en mi propia configuración: reenvío ssh

puede, si aún no lo ha hecho, configurar un archivo .ssh/config para reenviar puertos localhost a su computadora. teniendo en cuenta su ejemplo, la sintaxis es la siguiente

 Host some-hostname HostName 192.168.xx User user-of-server LocalForward 8989 127.0.0.1:8989

some-hostname es un nombre abreviado que puede elegir, user-of-server es el usuario real con el que configuró para iniciar sesión, 192.168.xx es la dirección IP local real de su servidor y también puede incluir un IdentityFile /path/to/ssh/key . con esto, puede ejecutar ssh some-hostname para ingresar a su servidor desde cualquier computadora en su red local y su servidor estará disponible en localhost:8989 en esa computadora específica

Proxy inverso

el segundo es un proxy inverso como nginx, esto también se puede ejecutar en un contenedor docker y puede vincularlo a cualquier puerto como, por ejemplo, a 6443 y puede montar su archivo de configuración en el contenedor con

 volumes: - 'config:/etc/nginx/conf.d' ports: - 6443:443 volumes: config: driver: local driver_opts: type: none; o: bind device: "./config"

en ./config/defaul.conf podría configurar algo como

 server { listen 443 ssl http2; server_name 192.168.xx; ssl_certificate /etc/letsencrypt/signed_chain.crt; ssl_certificate_key /etc/letencrypt/domain.key include /etc/nginx/includes/ssl.conf location /{ ### force timeouts if one of backend is died ## ### such died, many backend, very timeouts ## proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; ### Set headers #### proxy_set_header Accept-Encoding ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host:server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto $scheme; add_header Front-End-Https on; proxy_buffering off; proxy_pass http://127.0.0.1:8989 }

entonces debería estar disponible en y solo en 192.168.xx:6443

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!