Ligue-se à VPN do escritório, inicie um serviço pequeno na porta 8443, envie o endereço do túnel a um colega e veja a ligação falhar enquanto o cliente continua a reportar que está ligado. Nada está avariado no túnel: o endereço foi atribuído, a sessão está ativa e os pacotes que levariam a resposta simplesmente nunca são admitidos. Faça as três verificações abaixo por ordem e pare na que falhar, porque cada uma tem uma correção diferente e só uma delas diz respeito à VPN.

Comece por onde o socket está realmente associado

Antes de algo ser encaminhado, algo tem de estar à escuta num endereço que o chamador consiga alcançar. Os servidores de desenvolvimento são o culpado habitual, porque muitos associam-se por predefinição a loopback e só aceitam ligações originadas na mesma máquina. Um endereço de túnel não altera essa associação, e o sistema operativo recusará a ligação muito antes de a VPN entrar em jogo.

ss -ltnp | grep 8443
netstat -ano | findstr 8443

Leia a coluna do endereço local em vez do estado. 127.0.0.1:8443 significa apenas loopback, e a correção é uma associação a 0.0.0.0 ou ao próprio endereço do túnel. 0.0.0.0:8443 aceita em todas as interfaces, o que é mais amplo do que a maioria pretende quando a máquina também tem um endereço público; 10.64.7.15:8443 é a versão estreita que só escuta onde o colega consegue chegar. Repare também no nome do processo na mesma saída, porque uma instância perdida de um teste anterior é uma causa comum de a porta parecer aberta e responder com o conteúdo errado.

Depois pergunte se algo consegue encaminhar para esse endereço

Um endereço de túnel só faz sentido para os pares configurados para enviar esse prefixo para dentro do túnel. A máquina do colega tem a sua própria tabela e, sem uma rota para a sub-rede do túnel, o pacote vai para o gateway predefinido e morre num local que não faz ideia de que o endereço existe. É uma questão de encaminhamento do lado de quem chama, não uma permissão do seu lado.

Symptom from the callerWhat it usually meansWhere to look next
Connection refused immediatelyNothing is listening on the address the packet reachedThe bind address and the process owning the port
Connection times out with no replyA policy dropped the packet, or no route returnsServer forwarding, host firewall, cloud security group
Works from the same machine onlyListener is on loopback, or no route reaches the tunnel addressBind address, then the caller's route to that prefix

O servidor entre os dois clientes importa tanto como isso. No desenho habitual de acesso remoto, cada cliente abre uma ligação de saída para o gateway e o gateway guarda o estado desses fluxos, pelo que as respostas voltam por um caminho que já conhece. Uma ligação de um cliente para outro é um fluxo novo que o gateway tem de aceitar e reencaminhar, e muitas instalações desativam isso deliberadamente para manter os clientes isolados uns dos outros. Os serviços VPN de consumo isolam normalmente por predefinição; os gateways empresariais às vezes permitem-no por grupo.

Verifique a direção antes de mudar algo no anfitrião. Se o endereço do túnel responde a partir do próprio gateway mas não de um par, a diferença é a definição de cliente-para-cliente do gateway, e nenhuma edição da firewall local a pode substituir.

Por fim, encontre a política que permite o fluxo

Três camadas de política estão entre um pacote encaminhado e um serviço que responde: a decisão de reencaminhamento do servidor VPN, a firewall do anfitrião e qualquer grupo de segurança da nuvem à frente da instância. As três têm de concordar, e falham de formas diferentes, por isso o sintoma da tabela acima é mais útil do que a mensagem de erro no navegador.

A firewall do anfitrião é a camada de que as pessoas se esquecem depois de uma associação bem-sucedida, porque uma regra que permite a porta na interface LAN não a permite automaticamente na interface do túnel. As regras limitadas à interface são o desenho correto e também a causa habitual de um serviço que funciona a partir do escritório e não de casa. Leia o âmbito da regra, não o número da porta.

A filtragem com estado explica o caso inverso. Uma ligação de saída do seu portátil cria estado, e as respostas são admitidas sem uma regra de entrada. A ligação do colega é um fluxo completamente novo sem estado por trás, por isso precisa de uma autorização explícita. Essa assimetria é toda a razão pela qual uma sessão de navegador a funcionar na sua própria máquina não diz nada sobre se o serviço é acessível de fora.

Quando uma verificação falha, mude o desenho e não o túnel

Se o requisito é que um colega abra o seu serviço local, a resposta honesta costuma ser um mecanismo concebido para o acesso de entrada. Um túnel SSH inverso é o mais pequeno: a sua máquina liga-se para fora a um anfitrião que o colega já consegue alcançar, e o ouvinte existe nesse anfitrião.

ssh -N -R 8443:127.0.0.1:8443 [email protected]

O relé precisa de GatewayPorts clientspecified na configuração do servidor SSH, caso contrário o ouvinte reencaminhado associa-se a loopback no relé e o colega depara-se com a mesma recusa de antes. Para tudo o que dure mais de uma tarde, um balanceador de carga ou um ingress com verificação de saúde e certificado para o nome publicado é o melhor instrumento, e um túnel de local para local com rotas para as duas sub-redes é a resposta certa quando duas redes precisam mesmo de falar.

Cada um desses desenhos torna a exposição explícita, e é esse o ponto. Uma VPN move pacotes entre redes para as quais já estava autorizado; não publica um serviço nem transforma um portátil num anfitrião exposto à internet. Decidir qual das três camadas mudar é a tarefa, e o túnel raramente é uma delas.

Artigos relacionados