Eu tenho uma configuração que funcionou muito bem nos últimos anos, mas que parou de funcionar há alguns dias. Na minha sala de estar, eu tenho uma máquina "bare metal", com algumas VMs nela. Uma das VMs é responsável pelos meus emails (dovecot, postfix), um é responsável pelo servidor HTTP / S (nginx). Cada um desses dois faz uma conexão OpenVPN a um droplet na Digital Ocean. O droplet tem regras de firewall (iptables) que encaminham os pacotes para o cliente OpenVPN responsável pelo pacote: se ele está vindo para a porta 80, encaminhe para a VM interna que possui nginx. Se for um pacote relacionado a email, encaminhe-o para a VM de email.
Desde alguns dias atrás, qualquer coisa relacionada ao TLS parou de funcionar (veja as edições). As transações SMTP apenas travariam durante a fase STARTTLS, as conexões HTTPS travariam durante a negociação TLS. Qualquer outra coisa funciona bem: conexões HTTP simples são atendidas (consulte as edições) e, se eu desabilitar o TLS no postfix, os emails entrarão bem.
Além disso, se eu estiver na mesma rede e adicionar o nome do host em /etc/hosts
ao IP interno da VM, receberei HTTPS e STARTTLS para funcionar bem. Ele simplesmente não funciona se a conexão estiver vindo do "lado de fora" (isto é: do túnel).
Se eu alterar a conexão à Internet do "bare metal" para usar a conexão de dados móveis do meu telefone, ele também funcionará como esperado.
Em suma, parece para mim que meu roteador e / ou meu ISP esteja desempenhando um papel fundamental nessa equação, mas eu simplesmente não consigo aceitá-lo , porque o tráfego para / da VM passa via OpenVPN (criptografado). Se eu já aprendi alguma coisa, a explicação mais simples é geralmente a correta, e a única explicação que estou encontrando não é nada simples, por isso, estou interessado em outras possíveis causas para esse problema.
O que tentei até agora:
Logs que podem ajudar:
TCP despeje a partir da VM interna
TCP despeja do servidor OpenVPN (Droplet)
Conexão bem sucedida da internet pública para a VM interna, através do Droplet, na porta 80
Conexão bem sucedida da rede interna na porta 443
Editar:
Log do Wireshark para o servidor OpenVPN
Editar 2:
Eu testei um pouco mais e criei um novo vhost no nginx com um certificado autoassinado. Parece que a troca de dados entre o servidor OpenVPN e a VM foi mais longe, mas não foi concluída:
Log do Wireshark para o servidor OpenVPN
Editar 3:
Parece que no final, não é sobre o TLS. É uma "coincidência" que aconteceu sempre que o TLS estava envolvido, mas estou convencido de que é sobre o tamanho do pacote: removendo o "redirecionamento forçado" no nginx que encaminha todas as conexões HTTP para HTTPS, vejo que o problema também acontece Conexões HTTP quando a carga útil é maior que alguns KBs.
Eu também testei a desconexão do roteador / modem da conexão de fibra do meu provedor e fiz com que ele usasse o tethering USB, do meu telefone, para verificar se o problema estava no roteador / modem e funcionava. Então, parece que o problema agora está isolado.
Tags tls