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).
import boto3
ec2 = boto3.client('ec2', region_name='us-east-1')
# Criar Virtual Private Gateway
vpn_gw_response = ec2.create_vpn_gateway(
Type='ipsec.1',
AmazonSideAsn=64512
)
vpn_gateway_id = vpn_gw_response['VpnGateway']['VpnGatewayId']
# Criar Customer Gateway (seu on-premises)
customer_gw_response = ec2.create_customer_gateway(
Type='ipsec.1',
PublicIp='203.0.113.10', # IP público do seu roteador
BgpAsn=65000
)
customer_gateway_id = customer_gw_response['CustomerGateway']['CustomerGatewayId']
# Criar conexão VPN
vpn_connection = ec2.create_vpn_connection(
Type='ipsec.1',
CustomerGatewayId=customer_gateway_id,
VpnGatewayId=vpn_gateway_id,
Options={
'StaticRoutesOnly': False,
'TunnelOptions': [
{
'TunnelInsideCidr': '169.254.10.0/30',
'PreSharedKey': 'sua-chave-segura-aqui'
},
{
'TunnelInsideCidr': '169.254.11.0/30',
'PreSharedKey': 'sua-segunda-chave-aqui'
}
]
}
)
vpn_connection_id = vpn_connection['VpnConnection']['VpnConnectionId']
print(f"VPN Connection criada: {vpn_connection_id}")
# Habilitar propagação de rotas
vpc_id = 'vpc-12345678'
ec2.enable_vgw_route_propagation(
RouteTableId='rtb-12345678',
GatewayId=vpn_gateway_id
)
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.
Client VPN
Para acesso remoto, use Client VPN — ideal para funcionários conectando-se de qualquer lugar. Diferente de Site-to-Site, funciona como VPN tradicional cliente-servidor.
# Criar Client VPN Endpoint
client_vpn = ec2.create_client_vpn_endpoint(
ClientCidrBlock='10.0.0.0/22',
ServerCertificateArn='arn:aws:acm:us-east-1:123456789012:certificate/...',
AuthenticationOptions=[
{
'Type': 'certificate-authentication',
'MutualAuthentication': {
'ClientRootCertificateChainArn': 'arn:aws:acm:us-east-1:123456789012:certificate/...'
}
}
],
ConnectionLogOptions={
'Enabled': True,
'CloudwatchLogGroup': '/aws/clientvpn/logs'
}
)
endpoint_id = client_vpn['ClientVpnEndpoint']['ClientVpnEndpointId']
# Associar à subnet
ec2.associate_client_vpn_target_network(
ClientVpnEndpointId=endpoint_id,
SubnetId='subnet-12345678'
)
# Autorizar acesso para CIDR específico
ec2.authorize_client_vpn_ingress(
ClientVpnEndpointId=endpoint_id,
TargetNetworkCidr='10.0.0.0/16',
AccessGroupId='sg-12345678'
)
AWS Direct Connect: Conexões Dedicadas
Provisionamento e Configuração
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.
# Criar Direct Connect Virtual Interface (VIF)
dx = boto3.client('directconnect', region_name='us-east-1')
# 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='dxcon-1a2b3c4d',
newPrivateVirtualInterface={
'virtualInterfaceName': 'meu-vif-privado',
'vlan': 100,
'asn': 65000, # Seu ASN (BGP)
'authKey': 'sua-chave-md5-aqui',
'customerAddress': '192.168.1.1/30',
'amazonAddress': '192.168.1.2/30',
'virtualGatewayId': 'vgw-12345678',
'tags': [
{'key': 'Ambiente', 'value': 'Producao'}
]
}
)
vif_id = vif_response['virtualInterface']['virtualInterfaceId']
print(f"Private VIF criado: {vif_id}")
# Monitorar status
status_response = dx.describe_virtual_interfaces(
filters=[
{'name': 'virtual-interface-id', 'values': [vif_id]}
]
)
print(f"Status: {status_response['virtualInterfaces'][0]['virtualInterfaceState']}")
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.
Resiliência com LAG e Failover
Para alta disponibilidade, use LAG (Link Aggregation Group) — agrupa múltiplas conexões como uma única. Implemente failover com VPN como backup.
# Criar LAG com 2 conexões Direct Connect
lag_response = dx.create_lag(
numberOfConnections=2,
location='US-EAST-1a',
bandwidth='10Gbps',
lagName='lag-producao-critica',
connectionsBandwidth='10Gbps',
tags=[
{'key': 'Criticidade', 'value': 'Alta'}
]
)
lag_id = lag_response['lag']['lagId']
# 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"LAG criado com redundância: {lag_id}")
Monitoramento e Otimização
Métricas e Alertas Essenciais
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.
cloudwatch = boto3.client('cloudwatch', region_name='us-east-1')
# Criar alarme para latência de Direct Connect
cloudwatch.put_metric_alarm(
AlarmName='DX-Latencia-Alta',
MetricName='ConnectionLatency',
Namespace='AWS/DX',
Statistic='Average',
Period=300,
EvaluationPeriods=2,
Threshold=20, # ms
ComparisonOperator='GreaterThanThreshold',
Dimensions=[
{'Name': 'ConnectionId', 'Value': 'dxcon-1a2b3c4d'}
],
AlarmActions=['arn:aws:sns:us-east-1:123456789012:alertas']
)
# Monitorar disponibilidade do túnel VPN
cloudwatch.put_metric_alarm(
AlarmName='VPN-Tunel-Down',
MetricName='TunnelState',
Namespace='AWS/VPN',
Statistic='Minimum',
Period=60,
Threshold=1, # 1 = up, 0 = down
ComparisonOperator='LessThanThreshold',
Dimensions=[
{'Name': 'VpnConnectionId', 'Value': vpn_connection_id}
]
)
Otimizações Práticas
Para VPN, ative VPN acceleration (roteamento por rede de edge da AWS). Para Direct Connect, implemente BGP communities para controle fino de rota. Monitore packet loss e ajuste MTU para 1500 bytes padrão ou 9000 com Jumbo frames em Direct Connect.
Conclusão
Dominando conectividade híbrida, você compreende que VPN é flexível e rápida de provisionar, ideal para prototipagem e fallback, enquanto Direct Connect oferece performance consistente para ambientes críticos. A combinação de ambas 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.