AWS Admin

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

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á

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.

Referências


Artigos relacionados