Acesso a Outras Nuvens com o Libreswan

Libreswan é uma implementação IPSec de código aberto baseada em FreeS/WAN e Openswan. A maioria das distribuições Linux inclui Libreswan ou facilita a instalação desse software. Você pode instalá-lo em hosts na sua rede local ou em uma rede de provedor de nuvem. Este tópico mostra como conectar a sua rede virtual na nuvem (VCN) do Oracle Cloud Infrastructure a outro provedor de nuvem usando uma VPN Site a Site com uma VM Libreswan como CPE (Customer Premises Equipment).

No exemplo mostrado aqui, o outro provedor de nuvem é a AWS (Amazon Web Services). A VPN Site a Site fornece uma conexão IPSec site a site segura e criptografada entre os ambientes Oracle e Amazon. Essa conexão permite que recursos nas duas nuvens se comuniquem entre si usando seus próprios endereços IP privados como se eles estivessem no mesmo segmento da rede.

Um Guia de CPE do Libreswan também está disponível para todos os outros casos de uso.

O suporte a VTI (virtual tunnel interface) para essa configuração baseada em rota requer no mínimo o Libreswan versão 3.18 e um kernel Linux 3.x ou 4.x recente. Essa configuração foi validada com o Libreswan 3.29.

Arquitetura

O diagrama a seguir mostra o layout geral da conexão.

Esta imagem mostra o layout geral de duas nuvens conectadas com VPN Site a Site e CPE Libreswan.

Parâmetros IPSec Suportados

Para obter uma lista não dependente de fornecedor contendo parâmetros IPSec suportados para todas as regiões, consulte Parâmetros IPSec Suportados.

O ASN do BGP da Oracle para o realm do Cloud do setor governamental é 31898. Se você estiver configurando a VPN Site a Site para a Nuvem do Governo dos EUA, consulte Parâmetros Obrigatórios da VPN Site a Site para a Nuvem do Governo e também ASN de BGP da Oracle. Para a Nuvem do Governo do Reino Unido, consulte ASN de BGP da Oracle.

Configuração

Importante

As instruções de configuração nesta seção são fornecidas pelo Oracle Cloud Infrastructure para Libreswan. Se precisar de suporte ou assistência adicional, consulte a documentação do Libreswan.

O Libreswan suporta túneis baseados em rota e em política. Os tipos de túnel podem coexistir sem interferir uns com os outros. Os headends da Oracle VPN usam túneis baseados em rota. A Oracle recomenda que você configure o Libreswan com a sintaxe de configuração Virtual Tunnel Interface (VTI).

Consulte Parâmetros IPSec Suportados para obter mais detalhes sobre os parâmetros específicos usados neste documento.

Arquivo de Configuração Padrão do Libreswan

A instalação padrão do Libreswan cria os seguintes arquivos:

  • etc/ipsec.conf: a raiz da configuração do Libreswan.
  • /etc/ipsec.secrets: a raiz do local onde o Libreswan procura segredos (as chaves pré-compartilhadas do túnel).
  • /etc/ipsec.d/: um diretório para armazenar os arquivos .conf e .secrets dos seus túneis Oracle Cloud Infrastructure (por exemplo: oci-ipsec.conf e oci-ipsec.secrets). Os desenvolvedores do Libreswan recomendam criar esses arquivos nessa pasta.

O arquivo etc/ipsec.conf padrão inclui esta linha:

include /etc/ipsec.d/*.conf

O arquivo etc/ipsec.secrets padrão inclui esta linha:

include /etc/ipsec.d/*.secrets

As linhas anteriores mesclam automaticamente todos os arquivos .conf e .secrets do diretório /etc/ipsec.d nos arquivos principais de configuração e segredos que o Libreswan utiliza.

Sobre a Utilização do IKEv2

O sistema Oracle suporta o Internet Key Exchange versão 1 (IKEv1) e versão 2 (IKEv2). Se você configurar a conexão IPSec na Console para usar o IKEv2, deverá configurar o seu CPE para usar somente os parâmetros IKEv2 e os parâmetros de criptografia IKEv2 e relacionados suportados pelo seu CPE. Para obter uma lista de parâmetros que o Oracle suporta para IKEv1 ou IKEv2, consulte Parâmetros IPSec Suportados.

Especifique a versão do IKE ao definir o arquivo de configuração IPSec na tarefa 4 da seção a seguir. Neste arquivo de exemplo, há um comentário que mostra como configurar o IKEv1 em comparação com o IKEv2.

Processo de Configuração

Tarefa 1: Preparar a instância do AWS Libreswan
  1. Usando a Console do AWS ou APIs, crie uma VM Libreswan usando o processo de provisionamento. Use Oracle Linux, CentOS ou Red Hat como sistema operacional principal.
  2. Após a nova instância ser iniciada, conecte-se com ela usando SSH e instale o pacote Libreswan:

    sudo yum -y install libreswan
  3. Na Console do AWS, desative as verificações de origem e destino na instância da VM do Libreswan clicando com o botão direito do mouse na instância, clicando em Networking e depois em Alterar Origem/Destino Origem/Destino. Quando solicitado, clique em Sim, Desativar.

    Esta imagem mostra a caixa de diálogo da Console do AWS para desativar a verificação de origem/destino na instância da VM Libreswan.
  4. Na Libreswan VM, configure o IP_forward para permitir que os clientes AWS enviem e recebam tráfego por meio da Libreswan VM. No arquivo /etc/sysctl.conf, defina os valores a seguir e aplique as atualizações com sudo sysctl -p.

    net.ipv4.ip_forward=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.eth0.accept_redirects = 0
  5. Na Console do AWS, edite a sua tabela de roteamento do AWS. Adicione uma regra com o CIDR da VCN (172.0.0.0/16) como destino e o ID da instância do AWS Libreswan (i-016ab864b43cb368e nesse exemplo) como alvo.

    Esta imagem mostra a caixa de diálogo da Console do AWS para editar uma regra de roteamento.
  6. Na Console do AWS, ative o tráfego TCP e UDP de entrada nas portas 4500 e 500 para permitir a conexão IPSec VPN Site a Site do Oracle Cloud Infrastructure com a VM AWS Libreswan. Esta tarefa inclui a edição dos grupos de segurança do AWS e das ACLs de rede. Você pode definir o valor de origem como o IP público do sistema Oracle (o ponto final do túnel IPSec de headend da Oracle VPN) em vez de 0.0.0.0/0.

    Para grupos de segurança:

    Esta imagem mostra a caixa de diálogo da Console do AWS para editar regras de grupo de segurança.

    Para ACLs de rede:

    Esta imagem mostra a caixa de diálogo da Console do AWS para editar ACLs de rede.
Tarefa 2: Configurar o objeto CPE e o DRG do Oracle Cloud Infrastructure
  1. Na Console do sistema Oracle, crie um objeto CPE (customer-premises equipment) que aponte para o endereço IP público da instância do AWS Libreswan (34.200.255.174). Isso éfeito facilmente usando o Auxiliar de Configuração de CPE.

  2. Se você ainda não tiver um DRG anexado à sua VCN: na Console do sistema Oracle, crie um DRG e anexe-o à VCN (172.0.0.0/16).

  3. Na Console do sistema Oracle, crie uma conexão IPSec e aponte-a para o CIDR da VPC da AWS (10.0.0.0/16). Em outras palavras, ao criar a conexão IPSec, defina a rota estática para o CIDR da AWS VPC.

    Para cada conexão IPSec configurada, o sistema Oracle cria dois túneis e designa estes itens a cada um deles:

    • Ponto final do túnel IPSec de headend da Oracle VPN
    • Segredo compartilhado do túnel da Oracle VPN

    Você pode exibir o status do túnel IPSec e o IP de cabeçalho da Oracle VPN clicando no menu Ações (Menu Ações) da conexão IPSec e depois clicando em Exibir Detalhes. Inicialmente, cada túnel permanece no estado DOWN (off-line) porque você ainda tem algumas configurações adicionais para implementar posteriormente na VM do AWS Libreswan.

    Para exibir o segredo compartilhado, clique no menu Ações (Menu Ações) de um túnel individual e, em seguida, clique em Exibir Detalhes. Ao lado de Segredo Compartilhado, clique em Mostrar.

  4. Na Console do sistema Oracle, edite as regras de segurança da VCN para ativar o tráfego TCP e UDP de entrada nas portas 4500 e 500 como você fez para os grupos de segurança do AWS e as ACLs de rede. Você poderá usar o endereço IP público da VM do AWS Libreswan, em vez de 0.0.0.0/0, se for um IP público persistente. Abra também todos os protocolos e portas para o tráfego de entrada proveniente do CIDR da AWS VPC (10.0.0.0/16). Lembre-se: as listas de segurança são associadas a uma sub-rede; portanto, edite a lista de segurança associada a cada sub-rede que precisa se comunicar com a AWS VPC. Ou, se você estiver usando grupos de segurança de rede da VCN, edite as regras nos NSGs relevantes.

  5. Na Console do sistema Oracle, edite as tabelas de roteamento da VCN para adicionar uma regra que tenha o CIDR da AWS VPC (10.0.0.0/16) como bloco CIDR de destino e o DRG criado anteriormente como alvo. Lembre-se: as tabelas de roteamento são associadas a uma sub-rede; por isso, edite a tabela de roteamento associada a cada sub-rede que precisa se comunicar com a AWS VPC.

Tarefa 3: Determinar os valores de configuração necessários

A configuração do Libreswan usa as variáveis a seguir. Determine os valores antes de continuar a configuração.

  • ${cpeLocalIP}: o endereço IP do seu dispositivo Libreswan.
  • ${cpePublicIpAddress}: o endereço IP público do Libreswan. Este é o endereço IP da sua interface externa. Dependendo da sua topologia de rede, o valor poderá ser diferente de ${cpeLocalIP}.
  • ${oracleHeadend1}: Para o primeiro túnel, o ponto final IP público Oracle obtido da Console do sistema Oracle.
  • ${oracleHeadend2}: Para o segundo túnel, o ponto final IP público Oracle obtido da Console do sistema Oracle.
  • ${vti1}: o nome da primeira VTI usada. Por exemplo, vti1.
  • ${vti2}: O nome da segunda VTI usada. Por exemplo, vti2.
  • ${sharedSecret1}: a chave pré-compartilhada para o primeiro túnel. Você pode usar a chave pré-compartilhada fornecida pela Oracle ou pode fornecer a sua própria chave ao configurar a conexão IPSec na Console do sistema Oracle.
  • ${sharedSecret2}: a chave pré-compartilhada para o segundo túnel. Você pode usar a chave pré-compartilhada fornecida pela Oracle ou pode fornecer a sua própria chave ao configurar a conexão IPSec na Console do sistema Oracle.
  • ${vcnCidrNetwork}: o intervalo de IP da VCN.
Tarefa 4: Configurar o arquivo de configuração: /etc/ipsec.d/oci-ipsec.conf

A configuração do Libreswan usa o conceito de esquerda e direita para definir os parâmetros de configuração do seu dispositivo CPE local e do gateway remoto. Ambos os lados da conexão (conn na configuração do Libreswan) poderão estar à esquerda ou à direita, mas a configuração dessa conexão deve ser consistente. Nesse exemplo:

  • Esquerda: o CPE do seu Libreswan local
  • Direita: o headend da Oracle VPN

Use o modelo a seguir para o seu arquivo /etc/ipsec.d/oci-ipsec.conf. O arquivo define os dois túneis que o sistema Oracle cria quando você configura a conexão IPSec.

Importante

Se o seu CPE estiver atrás de um dispositivo NAT 1–1, remova o comentário do parâmetro leftid e defina-o como igual a ${cpePublicIpAddress}.
conn oracle-tunnel-1
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend1}
     authby=secret
     leftsubnet=0.0.0.0/0 
     rightsubnet=0.0.0.0/0
     auto=start
     mark=5/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti1}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
conn oracle-tunnel-2
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend2}
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=6/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti2}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
Tarefa 5: Configurar o arquivo de segredos: /etc/ipsec.d/oci-ipsec.secrets

Use o modelo a seguir para o seu arquivo /etc/ipsec.d/oci-ipsec.secrets. Ele contém duas linhas por conexão IPSec (uma linha por túnel).

${cpePublicIpAddress} ${ipAddress1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${sharedSecret2}"
Tarefa 6: Reiniciar a configuração do Libreswan

Após definir a sua configuração e os arquivos de segredos, você deverá reiniciar o serviço Libreswan com o comando a seguir.

Importante

A Reinicialização do serviço Libreswan pode afetar os túneis existentes.
service ipsec restart
Tarefa 7: Configurar roteamento de IP

Use o comando ip a seguir para criar rotas estáticas que enviam tráfego para a sua VCN por meio de túneis IPSec. Se você estiver conectado com uma conta de usuário sem privilégios, talvez seja necessário usar sudo antes do comando.

Importante

As rotas criadas com o comando ip route não persistem após uma reinicialização. Para determinar como tornar as suas rotas persistentes, consulte a documentação da distribuição do Linux desejada.
ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show

Verificação

O serviço Monitoring também está disponível no Oracle Cloud Infrastructure para monitorar de forma ativa e passiva os seus recursos de nuvem. Para obter informações sobre o monitoramento da sua VPN Site a Site, consulte Métricas da VPN Site a Site.

Se você tiver problemas, consulte Diagnóstico e Solução de Problemas da VPN Site a Site.

Verificação de Status do Libreswan

Verifique o estado atual dos seus túnel Libreswan usando o seguinte comando:

ipsec status

O túnel terá sido estabelecido se você vir uma linha contendo o seguinte:

STATE_MAIN_I4: ISAKMP SA established

Se você estiver usando o IKEv2, verá o seguinte:

STATE_V2_IPSEC_I (IPsec SA established)

No futuro, se você precisar abrir um ticket de suporte na Oracle sobre o seu túnel Libreswan, inclua a saída do comando ipsec status anterior.

Verificando o Status da Interface do Túnel

Verifique se as interfaces do túnel virtual estão ativas ou inativas usando o comando ifconfig ou o comando ip link show. Também é possível usar aplicativos, como o tcpdump, com as interfaces.

Este é um exemplo da saída ifconfig com uma implementação do Libreswan em funcionamento que mostra as VTIs disponíveis.

ifconfig
<output trimmed>
                 
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::1 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0
 
vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0

Este é um exemplo da saída do comando ip link show:

ip link show
<output trimmed>
 
9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.51
 
10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.49

Além disso, na Console do sistema Oracle, cada túnel IPSec deve agora estar no estado UP.