O que acontece nas conexões dentro e fora do túnel VPN

Das cartas enviadas ao suporte técnico da Tucha nascem verdadeiros artigos. Recentemente, um cliente nos contatou pedindo esclarecimentos sobre o que acontece nas conexões dentro do túnel VPN entre o escritório do usuário e o ambiente na nuvem, bem como nas conexões fora do túnel VPN. Portanto, todo o texto abaixo é uma carta real que enviamos a um dos clientes em resposta à sua pergunta. Claro, alteramos os endereços IP para não desanonimizar o cliente. Mas, sim, o suporte técnico da Tucha realmente é conhecido por suas respostas detalhadas e cartas informativas. 🙂

Claro, entendemos que para muitos este artigo não será uma revelação. Mas, como de vez em quando surgem artigos para administradores iniciantes no Habr, e dado que este artigo surgiu de uma carta real para um cliente real, ainda assim decidimos compartilhar essas informações aqui. Há uma grande probabilidade de que alguém as considere úteis.
Portanto, explicamos detalhadamente o que acontece entre o servidor na nuvem e o escritório, se eles estão conectados por uma rede site-to-site. Vale ressaltar que, nesse caso, parte dos serviços está acessível apenas do escritório, enquanto parte pode ser acessada de qualquer lugar da Internet.

Pela primeira vez, explicamos que nosso cliente desejou que no servidor 192.168.A.1 fosse possível conexão de qualquer lugar via RDP, conectando-se a A.A.A.2:13389, enquanto os demais serviços só estivessem disponíveis do escritório (192.168.B.0/24), conectado através de VPN. O cliente também havia configurado, desde o início, que a máquina 192.168.B.2 no escritório pudesse ser acessada via RDP de qualquer lugar, conectando-se a B.B.B.1:11111. Ajudamos a organizar conexões IPSec entre a nuvem e o escritório, e o especialista em TI do cliente começou a fazer perguntas sobre o que ocorreria em cada caso. Para responder a todas essas perguntas, nós, na verdade, escrevemos tudo isso que você pode ler abaixo.

O que acontece nas conexões dentro e fora do túnel VPN

Agora vamos examinar esses processos com mais detalhes.

Primeira posição

Quando algo é enviado de 192.168.B.0/24 em 192.168.A.0/24 ou de 192.168.A.0/24 em 192.168.B.0/24, ele entra no VPN. Ou seja, esse pacote é criptografado adicionalmente e enviado entre B.B.B.1 e A.A.A.1, mas 192.168.A.1 vê o pacote exatamente de 192.168.B.1. Eles podem se comunicar entre si usando qualquer protocolo. As respostas de volta também são transmitidas pelo VPN, ou seja, o pacote de 192.168.A.1 para 192.168.B.1 será enviado como um datagrama ESP de A.A.A.1 para B.B.B.1, que na outra extremidade do roteador será descompactado, extrairá o pacote e o enviará para 192.168.B.1 como pacote de 192.168.A.1.

Um exemplo concreto:

1) 192.168.B.1 acessa o 192.168.A.1, deseja estabelecer uma conexão TCP com 192.168.A.1:3389;

2) 192.168.B.1 envia um pedido para estabelecer uma conexão de 192.168.B.1:55555 (o número da porta para o feedback é escolhido por ele mesmo, aqui e em diante usaremos o número 55555 como exemplo de um número de porta que o sistema escolhe ao formar a conexão TCP) para 192.168.A.1:3389;

3) o sistema operacional que está rodando no computador com o endereço 192.168.B.1, decide enviar este pacote para o endereço do gateway do roteador (192.168.B.254 neste caso), porque ele não tem outras rotas mais específicas para 192.168.A.1, portanto, envia o pacote pela rota padrão (0.0.0.0/0);

4) para isso, ele tenta encontrar o endereço MAC para o endereço IP 192.168.B.254 na tabela de cache do protocolo ARP. Se não for encontrado, envia do endereço 192.168.B.1 um pedido de who-has de broadcast para a rede 192.168.B.0/24. Quando 192.168.B.254 responde enviando seu endereço MAC, o sistema envia um pacote Ethernet para ele e registra essa informação na sua tabela de cache;

5) o roteador recebe este pacote e decide para onde enviá-lo: ele tem uma política que determina que todos os pacotes entre 192.168.B.0/24 e 192.168.A.0/24 devem ser enviados por uma conexão VPN entre B.B.B.1 e A.A.A.1;

6) o roteador forma um datagrama ESP de B.B.B.1 para A.A.A.1;

7) o roteador decide a quem enviar este pacote, ele o envia para, digamos, B.B.B.254 (o gateway do provedor de internet), porque não tem rotas mais específicas para A.A.A.1, do que 0.0.0.0/0;

8) da mesma forma, como já foi mencionado, ele encontra o endereço MAC para B.B.B.254 e envia o pacote para o gateway do provedor de internet;

9) os provedores de internet enviam através de suas redes o datagrama ESP de B.B.B.1 para A.A.A.1;

10) o roteador virtual em A.A.A.1 recebe este datagrama, o descriptografa e obtém o pacote de 192.168.B.1:55555 para 192.168.A.1:3389;

11) o roteador virtual verifica para quem enviá-lo, encontra na tabela de roteamento a rede 192.168.A.0/24 e o envia diretamente para 192.168.A.1, pois tem um interface 192.168.A.254/24;

12) para isso, o roteador virtual encontra o endereço MAC para 192.168.A.1 e envia-lhe este pacote através da rede Ethernet virtual;

13) 192.168.A.1 recebe este pacote na porta 3389, concorda em estabelecer a conexão e forma um pacote de resposta de 192.168.A.1:3389 para 192.168.B.1:55555;

14) seu sistema envia este pacote para o endereço do gateway do roteador virtual (192.168.A.254 neste caso), porque ele não tem outras rotas mais específicas para 192.168.B.1, ele não tem, portanto, deve enviar o pacote pela rota padrão (0.0.0.0/0);

15) assim como nos casos anteriores, o sistema que opera em um servidor com o endereço 192.168.A.1, encontra o endereço MAC 192.168.A.254, uma vez que está na mesma rede que sua interface 192.168.A.1/24;

16) o roteador virtual recebe este pacote e decide para onde enviá-lo: ele tem uma política definida, segundo a qual deve encaminhar todos os pacotes entre 192.168.A.0/24 e 192.168.B.0/24 devem ser enviados por uma conexão VPN entre A.A.A.1 e B.B.B.1;

17) o roteador virtual forma um datagrama ESP de A.A.A.1 para B.B.B.1;

18) o roteador virtual decide para quem enviar este pacote e o envia para A.A.A.254 (gateway do provedor de internet, neste caso, também somos nós), pois não há rotas mais específicas para B.B.B.1, do que 0.0.0.0/0;

19) os provedores de internet transmitem pelo suas redes o datagrama ESP de A.A.A.1 para B.B.B.1;

20) o roteador em B.B.B.1 recebe este datagrama, o descriptografa e obtém o pacote de 192.168.A.1:3389 para 192.168.B.1:55555;

21) ele entende que deve ser enviado especificamente para 192.168.B.1, uma vez que está na mesma rede, portanto, há uma entrada correspondente em sua tabela de roteamento que o obriga a enviar pacotes para toda 192.168.B.0/24 diretamente;

22) o roteador encontra o endereço MAC para 192.168.B.1 e lhe envia este pacote;

23) o sistema operacional no computador com o endereço 192.168.B.1 recebe o pacote de 192.168.A.1:3389 para 192.168.B.1:55555 e inicia os próximos passos para estabelecer a conexão TCP.

Neste exemplo, de maneira bastante concisa e simplificada (e aqui poderia ser lembrado um monte de detalhes), é descrito o que acontece nos níveis 2-4. Os níveis 1, 5-7 não foram abordados.

Posição dois

Se de 192.168.B.0/24 algo é enviado especificamente para A.A.A.2, ele vai não por VPN, mas diretamente. Ou seja, se um usuário com o endereço 192.168.B.1 acessa o A.A.A.2:13389, este pacote é encaminhado do endereço B.B.B.1, passa por A.A.A.2, e lá o roteador o recebe e o envia para 192.168.A.1. 192.168.A.1 não sabe nada sobre 192.168.B.1, ele vê o pacote de B.B.B.1, uma vez que foi encaminhado. Portanto, a resposta a esta solicitação vai pelo caminho comum, sendo também endereçado do endereço A.A.A.2 e vai para B.B.B.1, e aquele roteador entrega esta resposta para 192.168.B.1, que vê a resposta de A.A.A.2, para o qual ele se dirigiu.

Um exemplo concreto:

1) 192.168.B.1 acessa o A.A.A.2, deseja estabelecer uma conexão TCP com A.A.A.2:13389;

2) 192.168.B.1 envia um pedido para estabelecer uma conexão de 192.168.B.1:55555 (este número, assim como no exemplo anterior, pode ser diferente) para A.A.A.2:13389;

3) o sistema operacional que está rodando no computador com o endereço 192.168.B.1, decide enviar este pacote para o endereço do gateway do roteador (192.168.B.254 neste caso), porque ele não tem outras rotas mais específicas para A.A.A.2, ela não o possui, e portanto, ela encaminha o pacote pela rota padrão (0.0.0.0/0);

4) para isso, como mencionamos no exemplo anterior, ela tenta encontrar o endereço MAC para o endereço IP 192.168.B.254 na tabela de cache do protocolo ARP. Se não for encontrado, envia do endereço 192.168.B.1 um pedido de who-has de broadcast para a rede 192.168.B.0/24. Quando 192.168.B.254 responde enviando seu endereço MAC, o sistema envia um pacote Ethernet para ele e registra essa informação na sua tabela de cache;

5) o roteador recebe este pacote e decide para onde enviá-lo: ele tem uma política definida, segundo a qual deve encaminhar (substituindo o endereço de origem) todos os pacotes de 192.168.B.0/24 para outros nós da rede Internet;

6) uma vez que esta política implica que o endereço de retorno deve coincidir com o endereço menor na interface pela qual o pacote será enviado, o roteador primeiro determina para quem exatamente deve enviar este pacote, e ele, como no exemplo anterior, deve enviá-lo para B.B.B.254 (o gateway do provedor de internet), porque não tem rotas mais específicas para A.A.A.2, do que 0.0.0.0/0;

7) portanto, o roteador substitui o endereço de retorno do pacote, de agora em diante, o pacote de B.B.B.1:44444 (o número da porta, claro, pode ser diferente) para A.A.A.2:13389;

8) o roteador lembra o que fez, então, quando uma resposta de A.A.A.2:13389 para B.B.B.1:44444 chegar, ele saberá que deve alterar o endereço e a porta do destinatário para 192.168.B.1:55555.

9) agora o roteador deve enviar isso para a rede do provedor de internet através de B.B.B.254, portanto, exatamente como já mencionamos, ele encontra o endereço MAC para B.B.B.254 e envia o pacote para o gateway do provedor de internet;

10) os provedores de internet transmitem o pacote de suas redes de B.B.B.1 para A.A.A.2;

11) o roteador virtual em A.A.A.2 recebe este pacote na porta 13389;

12) no roteador virtual, há uma regra que estipula que pacotes recebidos de qualquer remetente nessa porta devem ser enviados para 192.168.A.1:3389;

13) o roteador virtual encontra na tabela de roteamento a rede 192.168.A.0/24 e envia diretamente para 192.168.A.1, pois possui uma interface 192.168.A.254/24;

14) para isso, o roteador virtual encontra o endereço MAC para 192.168.A.1 e envia-lhe este pacote através da rede Ethernet virtual;

15) 192.168.A.1 recebe este pacote na porta 3389, concorda em estabelecer a conexão e forma um pacote de resposta de 192.168.A.1:3389 para B.B.B.1:44444;

16) seu sistema envia este pacote para o endereço do gateway do roteador virtual (192.168.A.254 neste caso), porque ele não tem outras rotas mais específicas para B.B.B.1, ele não tem, portanto, deve enviar o pacote pela rota padrão (0.0.0.0/0);

17) assim como nos casos anteriores, o sistema que está rodando em um servidor com o endereço 192.168.A.1, encontra o endereço MAC 192.168.A.254, uma vez que está na mesma rede que sua interface 192.168.A.1/24;

18) o roteador virtual recebe este pacote. Vale lembrar que ele se recorda de que recebeu de A.A.A.2:13389 um pacote de B.B.B.1:44444 e alterou seu endereço e porta do destinatário para 192.168.A.1:3389, portanto, para o pacote de 192.168.A.1:3389 para B.B.B.1:44444 ele altera o endereço do remetente para A.A.A.2:13389;

19) o roteador virtual decide para quem enviar este pacote, ele o envia para A.A.A.254 (gateway do provedor de internet, neste caso, também somos nós), pois não há rotas mais específicas para B.B.B.1, do que 0.0.0.0/0;

20) os provedores de internet transmitem o pacote em suas redes com A.A.A.2 para B.B.B.1;

21) o roteador em B.B.B.1 recebe este pacote e se lembra de que, quando ele enviou o pacote de 192.168.B.1:55555 para A.A.A.2:13389, ele alterou seu endereço e porta do remetente para B.B.B.1:44444, portanto, essa é uma resposta que precisa ser enviada para 192.168.B.1:55555 (na verdade, existem mais algumas verificações, mas não vamos entrar nos detalhes);

22) ele entende que deve enviá-lo diretamente para 192.168.B.1, uma vez que está na mesma rede, portanto, ele tem na tabela de roteamento um registro correspondente que força o envio de pacotes para toda a 192.168.B.0/24 diretamente;

23) o roteador encontra o endereço MAC para 192.168.B.1 e lhe envia este pacote;

24) o sistema operacional no computador com o endereço 192.168.B.1 recebe o pacote de A.A.A.2:13389 para 192.168.B.1:55555 e inicia os próximos passos para estabelecer a conexão TCP.

É importante notar que, neste caso, o computador com o endereço 192.168.B.1 não sabe nada sobre o servidor com o endereço 192.168.A.1, ele se comunica apenas com A.A.A.2. Da mesma forma, o servidor com o endereço 192.168.A.1 não sabe nada sobre o computador com o endereço 192.168.B.1. Ele acredita que está sendo acessado a partir do endereço B.B.B.1, e mais nada, por assim dizer, ele sabe.

Também é importante notar que, se esse computador fizer uma solicitação para A.A.A.2:1540, a conexão não será estabelecida, porque o redirecionamento de conexões na porta 1540 não está configurado no roteador virtual, mesmo que em algum servidor na rede virtual 192.168.A.0/24 (por exemplo, no servidor com o endereço 192.168.A.1) existam serviços que aguardam uma conexão nessa porta. Se o usuário do computador com o endereço 192.168.B.1 necessitar urgentemente estabelecer uma conexão com esse serviço, ele deve usar uma VPN, ou seja, conectar-se diretamente a 192.168.A.1:1540.

É importante enfatizar que qualquer tentativa de estabelecer uma conexão com A.A.A.1 (exceto para a conexão IPSec do lado de B.B.B.1 não será bem-sucedida. Qualquer tentativa de estabelecer conexões com A.A.A.2, exceto conexões na porta 13389, também não terá êxito.
Além disso, se alguém de A.A.A.2 se conectar, como por exemplo, C.C.C.C, tudo o que está descrito nos itens 10-20 também se aplicará a ele. O que acontece antes e depois disso depende do que realmente está por trás desse C.C.C.C. Não temos essa informação, por isso aconselhamos a consulta com os administradores do nó com o endereço C.C.C.C.

Terceira posição

E, inversamente, se algo é enviado para alguma porta que está configurada para redirecionamento interno para B.B.B.1 (por exemplo, 11111), isso também não entra na VPN, mas simplesmente é redirecionado de 192.168.A.1 e vai para A.A.A.1 , e aquele já o encaminha para algum lugar em, digamos, B.B.B.1192.168.B.2:3389 . Aquele vê esse pacote não de, mas de 192.168.A.1. E, quando A.A.A.1responde, o pacote vai de 192.168.B.2 A.A.A.1, B.B.B.1 para e mais tarde chega ao iniciador da conexão — 192.168.A.1:55555 192.168.A.1.

Um exemplo concreto:

1) 192.168.A.1 acessa o B.B.B.1, deseja estabelecer uma conexão TCP com B.B.B.1:11111;

2) 192.168.A.1 envia um pedido para estabelecer uma conexão de 3) o sistema operacional que está funcionando no servidor com o endereço (este número, assim como no exemplo anterior, pode ser diferente) para B.B.B.1:11111;

4) para isso, como mencionamos nos exemplos anteriores, tenta encontrar o endereço MAC para o endereço IP 192.168.A.1, decide enviar este pacote para o endereço do gateway do roteador (192.168.A.254 neste caso), porque ele não tem outras rotas mais específicas para B.B.B.1, portanto, envia o pacote pela rota padrão (0.0.0.0/0);

em resposta, ele envia seu endereço MAC, o sistema envia um pacote Ethernet para ele e registra essa informação em sua tabela de cache; 192.168.A.254 na tabela de cache do protocolo ARP. Se não for encontrado, envia do endereço 192.168.A.1 um pedido de who-has de broadcast para a rede 192.168.A.0/24. Quando 192.168.A.254 em resposta, envia seu endereço MAC, o sistema envia o pacote Ethernet para ele e armazena essa informação em sua tabela de cache;

5) O roteador virtual recebe este pacote e decide para onde enviá-lo: há uma política estabelecida que determina que ele deve mascarar (substituindo o endereço de origem) todos os pacotes de 192.168.A.0/24 para outros nós da rede Internet;

6) Como essa política indica que o endereço de origem deve corresponder ao endereço mais baixo na interface, através da qual este pacote será enviado, o roteador virtual primeiro decide para quem realmente enviar este pacote, e ele, como no exemplo anterior, deve enviá-lo para A.A.A.254 (gateway do provedor de internet, neste caso, também somos nós), pois não há rotas mais específicas para B.B.B.1, do que 0.0.0.0/0;

7) Portanto, o roteador virtual substitui o endereço de origem do pacote, a partir de agora, este é um pacote de A.A.A.1:44444 (o número da porta, claro, pode ser diferente) para B.B.B.1:11111;

8) O roteador virtual lembra-se do que fez, portanto, quando de B.B.B.1:11111 para A.A.A.1:44444 chegar, ele saberá que deve alterar o endereço e a porta do destinatário para 3) o sistema operacional que está funcionando no servidor com o endereço.

9) Agora o roteador virtual deve transmiti-lo para a rede do provedor de internet através de A.A.A.254, portanto, assim como mencionamos anteriormente, ele encontra o endereço MAC para A.A.A.254 e envia o pacote para o gateway do provedor de internet;

10) os provedores de internet transmitem o pacote de suas redes de A.A.A.1 no B.B.B.1;

11) O roteador em B.B.B.1 recebe este pacote na porta 11111;

12) No roteador virtual, existe uma regra que prevê que pacotes recebidos de qualquer remetente nessa porta devem ser encaminhados para . Aquele vê esse pacote não de;

13) O roteador encontra na tabela de roteamento a rede 192.168.B.0/24 e o envia diretamente para 192.168.B.2, pois tem um interface 192.168.B.254/24;

14) para isso, o roteador virtual encontra o endereço MAC para 192.168.B.2 e envia-lhe este pacote através da rede Ethernet virtual;

15) 192.168.B.2 recebe este pacote na porta 3389, concorda em estabelecer a conexão e forma um pacote de resposta de . Aquele vê esse pacote não de para A.A.A.1:44444;

16) Seu sistema envia este pacote para o endereço do gateway do roteador (192.168.B.254 neste caso), porque ele não tem outras rotas mais específicas para A.A.A.1, ele não tem, portanto, deve enviar o pacote pela rota padrão (0.0.0.0/0);

17) Assim como nos casos anteriores, o sistema que opera em um computador com o endereço 192.168.B.2, encontra o endereço MAC 192.168.B.254, uma vez que está na mesma rede que sua interface 192.168.B.2/24;

18) O roteador aceita este pacote. Vale destacar que ele lembra que recebeu em B.B.B.1:11111 um pacote de A.A.A.1 e alterou seu endereço e porta do destinatário para . Aquele vê esse pacote não de, portanto, para o pacote de . Aquele vê esse pacote não de para A.A.A.1:44444 ele altera o endereço do remetente para B.B.B.1:11111;

19) O roteador decide para quem enviar este pacote. Ele o envia para, digamos, B.B.B.254 (gateway do provedor de internet, cujo endereço exato não conhecemos), porque não há rotas mais específicas para A.A.A.1, do que 0.0.0.0/0;

20) os provedores de internet transmitem o pacote em suas redes com B.B.B.1 para A.A.A.1;

21) O roteador virtual em A.A.A.1 recebe este pacote e se lembra de que, quando ele enviou o pacote de 3) o sistema operacional que está funcionando no servidor com o endereço para B.B.B.1:11111, ele alterou seu endereço e porta do remetente para A.A.A.1:44444. Portanto, esta é a resposta que deve ser enviada para 3) o sistema operacional que está funcionando no servidor com o endereço (na verdade, como mencionamos no exemplo anterior, existem também algumas verificações, mas desta vez não vamos nos aprofundar nessas);

22) Ele entende que deve ser enviado diretamente para 192.168.A.1, uma vez que está na mesma rede, portanto, ele possui uma entrada correspondente na tabela de roteamento que o leva a enviar pacotes para todo o 192.168.A.0/24 diretamente;

23) o roteador encontra o endereço MAC para 192.168.A.1 e lhe envia este pacote;

24) O sistema operacional no servidor com o endereço 192.168.A.1 recebe o pacote de B.B.B.1:11111 para 3) o sistema operacional que está funcionando no servidor com o endereço e inicia os próximos passos para estabelecer a conexão TCP.

Assim como no caso anterior, neste caso o servidor com o endereço 192.168.A.1 não sabe nada sobre o computador com o endereço 192.168.B.1, ele se comunica apenas com B.B.B.1. O computador com o endereço 192.168.B.1 também não sabe nada sobre o servidor com o endereço 192.168.A.1. Ele acredita que está sendo acessado a partir do endereço A.A.A.1, e o restante está oculto.

Saída

É assim que tudo acontece nas conexões dentro do túnel VPN entre o escritório do cliente e o ambiente na nuvem, bem como nas conexões fora do túnel VPN. E se você tiver mais perguntas ou precisar da nossa ajuda com questões na nuvem, entre em contato 24/7.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster