Digamos que eu tenha um nome de domínio "my.domain.com" com um registro A que resolve o endereço IPv4 público (digamos 160.200.200.21) do meu servidor (executando o Ubuntu 20.04)
Instalei o BigBlueButton no servidor e quase tudo está bem, exceto que o BigBlueButton precisa ser capaz de se acessar a partir do nome de domínio ou IP público e aí ele falha e dá este erro:
curl: (28) Failed to connect to port 443: Connection timed out
# Error: Could not connect to the configured hostname/IP address
Então eu fiz as seguintes verificações:
- Usado
netcat -l
nas portas 80 e 443 com um servidor remoto para garantir que as portas estejam abertas => SUCESSO
também os seguintes comandos que executei:
~# curl https://my.domain.com
curl: (28) Failed to connect to my.domain.com port 443: Connection timed out
~# curl my.domain.com
curl: (28) Failed to connect to my.domain.com port 80: Connection timed out
~# wget https://my.domain.com
--2023-11-07 20:08:51-- https://my.domain.com/
Resolving my.domain.com (my.domain.com)... 160.200.200.21
Connecting to my.domain.com (my.domain.com)|160.200.200.21|:443... failed: Connection timed out.
Retrying.
Mas curl http://google.com
responde!
Observe também que os comandos acima funcionam perfeitamente em outro servidor ou computador
~# netstat -anltp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4082/nginx: master
tcp 0 0 127.0.0.1:52562 127.0.0.1:8021 ESTABLISHED 13903/node
tcp6 0 0 :::80 :::* LISTEN 4082/nginx: master
tcp6 0 0 :::8021 :::* LISTEN 13262/freeswitch
tcp6 0 0 127.0.0.1:8090 :::* LISTEN 13076/java
tcp6 0 0 127.0.0.1:32800 127.0.0.1:8021 ESTABLISHED 13745/java
tcp6 0 0 127.0.0.1:8021 127.0.0.1:32800 ESTABLISHED 13262/freeswitch
tcp6 0 0 127.0.0.1:8021 127.0.0.1:52562 ESTABLISHED 13262/freeswitch
~# netstat -anltp | grep :443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 12628/haproxy
tcp6 0 0 :::443 :::* LISTEN 12628/haproxy
Neste ponto, não sei o que verificar novamente ou onde procurar o problema. Este servidor é uma máquina virtual, fornecida por um provedor, então eu só tenho ssh e o provedor de acesso root disse que estava atrás de um firewall, mas como as portas estão claramente abertas, não sei se eles podem ser culpados.
Então o que está acontecendo é que my.domain.com é perfeitamente acessível fora do servidor (no navegador ou CLI), mas não dentro do servidor, mesmo que as portas relevantes estejam abertas.
uma coisa que achei estranho, talvez a informação seja útil: quando fiz netcat -l 80
isso no meu servidor, funcionou mesmo que o Nginx estivesse rodando na porta 80. netcat -l 443
falhou ao dizer que a porta está em uso, tive que primeiro desligar o processo antes de poder executar o teste.
Se sua VM não conseguir se conectar por meio de uma conexão externa, você poderá modificar /etc/hosts para mapear um dos endereços IP do adaptador de rede (mesmo localhost) para o nome DNS da máquina. Estas configurações têm precedência sobre as do DNS externo.