
Tengo un servidor que ejecuta una VPN Wireguard 10.0.1.254/24
y Docker se está ejecutando 172.17.0.1/16
.
Mi docker-compose.yaml
aspecto es este (simplificado):
services:
container_a:
image: nginx:latest
ports:
- '10.0.1.254:80:80'
container_b:
image: alpine:latest
Ahora puedo acceder a nginx usando wget http://10.0.1.254
el host. También puedo acceder a él de la misma manera desde un par VPN (por ejemplo 10.0.1.1
). Pero cuando intento hacer esto desde otro contenedor Docker (por ejemplo docker compose exec container_b wget http://10.0.1.254
), se agota el tiempo de espera. Sin embargo, puedo hacer ping al host ( docker compose exec container_b ping 10.0.1.254
).
Supongo que esto tiene algo que ver con la forma en que Docker asigna los puertos en el host. Pero no puedo encontrar mucha información sobre esto. ¿Alguien sabe por qué esto no funciona?
Respuesta1
Resulta que todavía tenía instalado UFW, que estaba configurado para permitir la conexión entrante a este puerto en la wg0
interfaz. Pero el sistema fue lo suficientemente inteligente como para tomar un atajo, directamente de una interfaz virtual de Docker a la otra, evitando esta regla ACEPTAR para la wg0
interfaz.
Descubrí esto usando tail +1f /var/log/ufw.log
y luego ejecutando el wget
comando fallido desde el otro contenedor Docker.
En mi caso, la solución fue simplemente desactivar UFW ( sudo ufw disable
), ya que de todos modos no lo estoy usando.