
Eu tenho um servidor rodando uma VPN Wireguard 10.0.1.254/24
e o Docker está rodando 172.17.0.1/16
.
Minha docker-compose.yaml
aparência é assim (simplificada):
services:
container_a:
image: nginx:latest
ports:
- '10.0.1.254:80:80'
container_b:
image: alpine:latest
Agora posso acessar o nginx usando wget http://10.0.1.254
no host. Também posso acessá-lo da mesma maneira a partir de um peer VPN (por exemplo 10.0.1.1
). Mas quando tento fazer isso de outro contêiner do Docker (por exemplo docker compose exec container_b wget http://10.0.1.254
), recebo um tempo limite. No entanto, posso executar ping no host ( docker compose exec container_b ping 10.0.1.254
).
Meu palpite é que isso tem algo a ver com a maneira como o Docker mapeia as portas no host. Mas não consigo encontrar muita informação sobre isso. Alguém sabe por que isso não funciona?
Responder1
Acontece que eu ainda tinha o UFW instalado, que foi configurado para permitir conexão de entrada a esta porta na wg0
interface. Mas o sistema foi inteligente o suficiente para pegar um atalho diretamente de uma interface virtual do Docker para outra, ignorando esta regra ACCEPT para a wg0
interface.
Eu descobri isso usando tail +1f /var/log/ufw.log
e executando o wget
comando com falha no outro contêiner do Docker.
No meu caso a solução foi simplesmente desabilitar o UFW ( sudo ufw disable
), pois não estou usando mesmo.