Cloud & Infraestrutura

VPN e Direct Connect: Conectividade Híbrida com a AWS: Do Básico ao Avançado

8 min de leitura

VPN e Direct Connect: Conectividade Híbrida com a AWS: Do Básico ao Avançado

Fundamentos de Conectividade Híbrida na AWS A conectividade híbrida conecta seus ambientes on-premises com a nuvem AWS de forma segura e confiável. Existem dois pilares: VPN (Virtual Private Network) e AWS Direct Connect. A VPN usa criptografia sobre a internet pública, ideal para conexões pontuais e com orçamento limitado. O Direct Connect oferece conexões dedicadas com menor latência e maior consistência de banda, sendo preferível para cargas críticas. A escolha entre VPN e Direct Connect depende de requisitos como: consistência de performance, volume de dados, sensibilidade a latência e custo operacional. Muitas empresas usam ambos em estratégia complementar — VPN como fallback e Direct Connect como rota primária. Nesta aula, você aprenderá a implementar, configurar e otimizar ambas as soluções. VPN: Implementação Prática e Configuração Site-to-Site VPN A Site-to-Site VPN estabelece túneis criptografados entre seu data center e uma VPC AWS. O processo envolve criar um Customer Gateway (seu lado) e um Virtual Private Gateway (lado AWS). A AWS fornecerá

<h2>Fundamentos de Conectividade Híbrida na AWS</h2>

<p>A conectividade híbrida conecta seus ambientes on-premises com a nuvem AWS de forma segura e confiável. Existem dois pilares: <strong>VPN (Virtual Private Network)</strong> e <strong>AWS Direct Connect</strong>. A VPN usa criptografia sobre a internet pública, ideal para conexões pontuais e com orçamento limitado. O Direct Connect oferece conexões dedicadas com menor latência e maior consistência de banda, sendo preferível para cargas críticas.</p>

<p>A escolha entre VPN e Direct Connect depende de requisitos como: consistência de performance, volume de dados, sensibilidade a latência e custo operacional. Muitas empresas usam ambos em estratégia complementar — VPN como fallback e Direct Connect como rota primária. Nesta aula, você aprenderá a implementar, configurar e otimizar ambas as soluções.</p>

<h2>VPN: Implementação Prática e Configuração</h2>

<h3>Site-to-Site VPN</h3>

<p>A Site-to-Site VPN estabelece túneis criptografados entre seu data center e uma VPC AWS. O processo envolve criar um <strong>Customer Gateway</strong> (seu lado) e um <strong>Virtual Private Gateway</strong> (lado AWS).</p>

<pre><code class="language-python">import boto3

ec2 = boto3.client(&#039;ec2&#039;, region_name=&#039;us-east-1&#039;)

Criar Virtual Private Gateway

vpn_gw_response = ec2.create_vpn_gateway(

Type=&#039;ipsec.1&#039;,

AmazonSideAsn=64512

)

vpn_gateway_id = vpn_gw_response[&#039;VpnGateway&#039;][&#039;VpnGatewayId&#039;]

Criar Customer Gateway (seu on-premises)

customer_gw_response = ec2.create_customer_gateway(

Type=&#039;ipsec.1&#039;,

PublicIp=&#039;203.0.113.10&#039;, # IP público do seu roteador

BgpAsn=65000

)

customer_gateway_id = customer_gw_response[&#039;CustomerGateway&#039;][&#039;CustomerGatewayId&#039;]

Criar conexão VPN

vpn_connection = ec2.create_vpn_connection(

Type=&#039;ipsec.1&#039;,

CustomerGatewayId=customer_gateway_id,

VpnGatewayId=vpn_gateway_id,

Options={

&#039;StaticRoutesOnly&#039;: False,

&#039;TunnelOptions&#039;: [

{

&#039;TunnelInsideCidr&#039;: &#039;169.254.10.0/30&#039;,

&#039;PreSharedKey&#039;: &#039;sua-chave-segura-aqui&#039;

},

{

&#039;TunnelInsideCidr&#039;: &#039;169.254.11.0/30&#039;,

&#039;PreSharedKey&#039;: &#039;sua-segunda-chave-aqui&#039;

}

]

}

)

vpn_connection_id = vpn_connection[&#039;VpnConnection&#039;][&#039;VpnConnectionId&#039;]

print(f&quot;VPN Connection criada: {vpn_connection_id}&quot;)

Habilitar propagação de rotas

vpc_id = &#039;vpc-12345678&#039;

ec2.enable_vgw_route_propagation(

RouteTableId=&#039;rtb-12345678&#039;,

GatewayId=vpn_gateway_id

)</code></pre>

<p>A AWS fornecerá arquivo de configuração do seu lado — use-o para configurar seu roteador Cisco, Juniper ou similar. O túnel VPN oferece redundância automática com dois canais. Latência típica: 20-50ms. Banda: até 1.25 Gbps por conexão.</p>

<h3>Client VPN</h3>

<p>Para acesso remoto, use <strong>Client VPN</strong> — ideal para funcionários conectando-se de qualquer lugar. Diferente de Site-to-Site, funciona como VPN tradicional cliente-servidor.</p>

<pre><code class="language-python"># Criar Client VPN Endpoint

client_vpn = ec2.create_client_vpn_endpoint(

ClientCidrBlock=&#039;10.0.0.0/22&#039;,

ServerCertificateArn=&#039;arn:aws:acm:us-east-1:123456789012:certificate/...&#039;,

AuthenticationOptions=[

{

&#039;Type&#039;: &#039;certificate-authentication&#039;,

&#039;MutualAuthentication&#039;: {

&#039;ClientRootCertificateChainArn&#039;: &#039;arn:aws:acm:us-east-1:123456789012:certificate/...&#039;

}

}

],

ConnectionLogOptions={

&#039;Enabled&#039;: True,

&#039;CloudwatchLogGroup&#039;: &#039;/aws/clientvpn/logs&#039;

}

)

endpoint_id = client_vpn[&#039;ClientVpnEndpoint&#039;][&#039;ClientVpnEndpointId&#039;]

Associar à subnet

ec2.associate_client_vpn_target_network(

ClientVpnEndpointId=endpoint_id,

SubnetId=&#039;subnet-12345678&#039;

)

Autorizar acesso para CIDR específico

ec2.authorize_client_vpn_ingress(

ClientVpnEndpointId=endpoint_id,

TargetNetworkCidr=&#039;10.0.0.0/16&#039;,

AccessGroupId=&#039;sg-12345678&#039;

)</code></pre>

<h2>AWS Direct Connect: Conexões Dedicadas</h2>

<h3>Provisionamento e Configuração</h3>

<p>Direct Connect oferece conexão física dedicada da AWS até um ponto de colocalização (colocation) perto de seu data center. Latência previsível, sem concorrência de banda com internet pública.</p>

<pre><code class="language-python"># Criar Direct Connect Virtual Interface (VIF)

dx = boto3.client(&#039;directconnect&#039;, region_name=&#039;us-east-1&#039;)

Primeiro, você precisa de uma conexão física (solicitada manualmente)

Este exemplo assume que você já tem uma conexão

Criar Private VIF para sua VPC

vif_response = dx.create_private_virtual_interface(

connectionId=&#039;dxcon-1a2b3c4d&#039;,

newPrivateVirtualInterface={

&#039;virtualInterfaceName&#039;: &#039;meu-vif-privado&#039;,

&#039;vlan&#039;: 100,

&#039;asn&#039;: 65000, # Seu ASN (BGP)

&#039;authKey&#039;: &#039;sua-chave-md5-aqui&#039;,

&#039;customerAddress&#039;: &#039;192.168.1.1/30&#039;,

&#039;amazonAddress&#039;: &#039;192.168.1.2/30&#039;,

&#039;virtualGatewayId&#039;: &#039;vgw-12345678&#039;,

&#039;tags&#039;: [

{&#039;key&#039;: &#039;Ambiente&#039;, &#039;value&#039;: &#039;Producao&#039;}

]

}

)

vif_id = vif_response[&#039;virtualInterface&#039;][&#039;virtualInterfaceId&#039;]

print(f&quot;Private VIF criado: {vif_id}&quot;)

Monitorar status

status_response = dx.describe_virtual_interfaces(

filters=[

{&#039;name&#039;: &#039;virtual-interface-id&#039;, &#039;values&#039;: [vif_id]}

]

)

print(f&quot;Status: {status_response[&#039;virtualInterfaces&#039;][0][&#039;virtualInterfaceState&#039;]}&quot;)</code></pre>

<p>Direct Connect oferece velocidades de 1 Gbps até 100 Gbps com SLA de 99.99% de disponibilidade. Latência típica: 5-10ms. Custo inicial é maior, mas reduz custos de transferência de dados em larga escala.</p>

<h3>Resiliência com LAG e Failover</h3>

<p>Para alta disponibilidade, use <strong>LAG (Link Aggregation Group)</strong> — agrupa múltiplas conexões como uma única. Implemente failover com VPN como backup.</p>

<pre><code class="language-python"># Criar LAG com 2 conexões Direct Connect

lag_response = dx.create_lag(

numberOfConnections=2,

location=&#039;US-EAST-1a&#039;,

bandwidth=&#039;10Gbps&#039;,

lagName=&#039;lag-producao-critica&#039;,

connectionsBandwidth=&#039;10Gbps&#039;,

tags=[

{&#039;key&#039;: &#039;Criticidade&#039;, &#039;value&#039;: &#039;Alta&#039;}

]

)

lag_id = lag_response[&#039;lag&#039;][&#039;lagId&#039;]

Configurar rota de backup com menor preferência BGP

No seu roteador, configure:

- Direct Connect AS_PATH: 65000

- VPN AS_PATH: 65000 65000 (menos preferível)

print(f&quot;LAG criado com redundância: {lag_id}&quot;)</code></pre>

<h2>Monitoramento e Otimização</h2>

<h3>Métricas e Alertas Essenciais</h3>

<p>Use CloudWatch para monitorar saúde das conexões. Métricas críticas incluem: latência de túnel VPN, throughput, pacotes perdidos e disponibilidade de BGP.</p>

<pre><code class="language-python">cloudwatch = boto3.client(&#039;cloudwatch&#039;, region_name=&#039;us-east-1&#039;)

Criar alarme para latência de Direct Connect

cloudwatch.put_metric_alarm(

AlarmName=&#039;DX-Latencia-Alta&#039;,

MetricName=&#039;ConnectionLatency&#039;,

Namespace=&#039;AWS/DX&#039;,

Statistic=&#039;Average&#039;,

Period=300,

EvaluationPeriods=2,

Threshold=20, # ms

ComparisonOperator=&#039;GreaterThanThreshold&#039;,

Dimensions=[

{&#039;Name&#039;: &#039;ConnectionId&#039;, &#039;Value&#039;: &#039;dxcon-1a2b3c4d&#039;}

],

AlarmActions=[&#039;arn:aws:sns:us-east-1:123456789012:alertas&#039;]

)

Monitorar disponibilidade do túnel VPN

cloudwatch.put_metric_alarm(

AlarmName=&#039;VPN-Tunel-Down&#039;,

MetricName=&#039;TunnelState&#039;,

Namespace=&#039;AWS/VPN&#039;,

Statistic=&#039;Minimum&#039;,

Period=60,

Threshold=1, # 1 = up, 0 = down

ComparisonOperator=&#039;LessThanThreshold&#039;,

Dimensions=[

{&#039;Name&#039;: &#039;VpnConnectionId&#039;, &#039;Value&#039;: vpn_connection_id}

]

)</code></pre>

<h3>Otimizações Práticas</h3>

<p>Para VPN, ative <strong>VPN acceleration</strong> (roteamento por rede de edge da AWS). Para Direct Connect, implemente <strong>BGP communities</strong> para controle fino de rota. Monitore <strong>packet loss</strong> e ajuste <strong>MTU</strong> para 1500 bytes padrão ou 9000 com Jumbo frames em Direct Connect.</p>

<h2>Conclusão</h2>

<p>Dominando conectividade híbrida, você compreende que <strong>VPN é flexível e rápida de provisionar</strong>, ideal para prototipagem e fallback, enquanto <strong>Direct Connect oferece performance consistente</strong> para ambientes críticos. A <strong>combinação de ambas</strong> resulta em arquitetura resiliente e otimizada. Implementar monitoramento adequado garante visibilidade contínua. Comece com VPN para validar topologia, migre cargas pesadas para Direct Connect conforme maturidade aumentar.</p>

<h2>Referências</h2>

<ul>

<li><a href="https://docs.aws.amazon.com/directconnect/" target="_blank" rel="noopener noreferrer">AWS Direct Connect Documentation</a></li>

<li><a href="https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html" target="_blank" rel="noopener noreferrer">AWS Site-to-Site VPN Guide</a></li>

<li><a href="https://docs.aws.amazon.com/clientvpn/latest/adminGuide/" target="_blank" rel="noopener noreferrer">AWS Client VPN Administrator Guide</a></li>

<li><a href="https://docs.aws.amazon.com/wellarchitected/latest/network-lens/" target="_blank" rel="noopener noreferrer">AWS Well-Architected Framework: Network Design</a></li>

<li><a href="https://aws.amazon.com/blogs/architecture/tag/hybrid-cloud/" target="_blank" rel="noopener noreferrer">Hybrid Cloud Connectivity Patterns</a></li>

</ul>

Comentários

Mais em Cloud & Infraestrutura

Como Usar S3 em Profundidade: Bucket Policies, Versioning e Lifecycle Rules em Produção
Como Usar S3 em Profundidade: Bucket Policies, Versioning e Lifecycle Rules em Produção

Bucket Policies: Controle de Acesso em Escala As Bucket Policies são document...

Deploy automático e HTTPS: Nginx com GitHub Actions e Certbot
Deploy automático e HTTPS: Nginx com GitHub Actions e Certbot

Servidor configurado, agora automatize. Deploy com GitHub Actions, HTTPS grat...

O que Todo Dev Deve Saber sobre AWS X-Ray: Distributed Tracing em Aplicações Serverless e ECS
O que Todo Dev Deve Saber sobre AWS X-Ray: Distributed Tracing em Aplicações Serverless e ECS

AWS X-Ray: Entendendo Distributed Tracing Distributed tracing é a capacidade...