Configurando uma VPN IPSec entre a Oracle Cloud Classic e Oracle Cloud OCI
Por Jhonata Lamim Oracle Associate e Anderson Graf Oracle Associate,
Publicado em Decembro 2019
Revisado por Juan Pablo Guizado
INTRODUÇÃO
Neste artigo iremos abordar o processo de criação de uma VPN IPSec utilizando o libreswan para integrar um ambiente Oracle Cloud Classic e Oracle Cloud OCI, ambos localizados no datacenter de São Paulo.
Atualmente no datacenter Oracle de São Paulo não é possível ativar uma VPNaaS (VPN as a Service) diretamente entre os ambientes Oracle Cloud Classic e Oracle Cloud OCI. Por isso temos a necessidade de utilizar uma ferramenta para implementação e configuração de conexões VPN IPSec. Em nosso artigo utilizaremos o libreswan.
O libreswan é um software open source para implementação de VPN baseado em (IPsec) e Internet Key Exchange (IKE). A maioria das distribuições Linux incluem o libreswan ou são compatíveis com a instalação do mesmo.
Vale destacar que o libreswan também é recomendado para a conexões entre a Oracle Cloud e outras nuvens ou mesmo com ambientes on premisses.
Diagrama da conexão entre a Oracle Cloud Classic e Oracle Cloud OCI:

CONFIGURAÇÕES
A primeira configuração a ser feita é a criação de uma compute instance Linux no ambiente OCI para a instalação e configuração do libreswan. Para realizarmos esta configuração podemos utilizar o novo shape VM.Standard.E2.1.Micro que é um shape gratuito disponibilizado recentemente.
Desta forma, a máquina utilizada não irá gerar custos adicionais. A compute instance criada precisa ter um IP Público associado, para que seja possível fechar a conexão VPN.
Tendo em vista que o objetivo deste artigo se restringe a implementação e configuração da VPN, o processo de criação da compute instance não será detalhado.

Após a criação da máquina libreswan, é necessário editar a VNIC anexada a mesma, marcando a opção skipe Source/Destination Check.


Concluída a edição da VNIC, será necessário criar as rotas para que a VPN possa se comunicar entre a rede do Classic e do OCI.
Para isso, serão criadas duas rotas. A rota Internet Gateway 0.0.0.0/0 para que o libreswan possa se comunicar com a VPN e a rota CIDR para o endereço da rede Classic 192.168.1.0/24.
Rede Classic:

Adição das rotas na default route table da VCN na qual a máquina libreswan foi criada.

Concluída a criação das rotas, a próxima etapa é a criação das regras de segurança permitindo o tráfego de entrada UDP na porta 500 para o Internet Key Exchange (IKE), UDP na porta 4500 para o IKE Nat Transverssal, IPsec para o Encapsulated Security Payload (ESP), TCP em todas as portas para o CIDR 192.168.1.0/24 (Rede Classic) e saída para internet 0.0.0.0/0.
Regras de entrada:
Regras de saída:

O próximo passo a ser executado é a criação da VPNaaS no ambiente Classic. Pra isso, vamos em network, VPNaaS, VPN Connections, clicar em Create VPN Connection.

Devem ser preenchidos os seguintes itens e posteriormente clicar em create VPN Connection.
Name:VPNaaSOCI
IP Network:CIDR para a rede IP do Classic
Customer Gateway: IP público da instância OCI do libreswan
Customer Reachable Routes: OCI VCN CIDR
Pre-shared key: pwdvpnociclassic
Name:VPNaaSOCI
IP Network:192.168.1.0/24
Customer Gateway: 152.67.35.47
Customer Reachable Routes: 172.0.0.0/24
Pre-shared key: pwdvpnociclassic

Após criar a VPNaaS no Classic, a mesma não ficará com status Up/Ready pois ainda é preciso instalar e configurar o libreswan. Porém precisamos do IP Público da VPNaaS Classic, para podermos configurar no libreswan.

Agora vamos acessar a maquina libreswan via ssh e realizar a instalação do aplicativo libreswan.

Neste artigo a versão instalada foi a 4.14.35-1902.5.2.2, porém o procedimento para versões anteriores é o mesmo.

Feita a instalação do libreswan, iremos realizar a configuração do mesmo. Inicialmente, precisaremos adicionar as linhas abaixo no arquivo /etc/sysctl.conf.
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.ens3.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.ens3.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens3.rp_filter = 0
net.ipv4.conf.ip_vti0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

Após o ajuste, devemos executar o comando o comando sysctl -p para que as alterações realizadas sejam aplicadas.

Agora devemos ajustar as configurações do /etc/ipsec.conf, adicionando os dados conforme abaixo. Vale ressaltar que a identação deve ser mantida para que não apresente erro na inicialização.
config setup
plutoopts="--perpeerlog"
protostack=auto
nat_traversal=yes
include /etc/ipsec.d/*.conf

O próximo passo é realizar as configurações da VPN com o Classic, para isso, criaremos o arquivo /etc/ipsec.d/VPNaaS.conf
vi /etc/ipsec.d/VPNaaS.conf
conn vpnaas1
authby=secret
auto=start
pfs=yes
leftid=144.22.68.211 #OCI-C VPNaaS IPSec IP Pubico
left=144.22.68.211 #OCI-C VPNaaS IPSec IP Publico
leftsubnets={192.168.1.0/24} #OCI-C IP-Network CIDR
right=172.0.0.2 #OCI Libreswan local VPC endereço interno
rightid=152.67.35.47 #OCI Libreswan IP Publico
rightsubnet=172.0.0.0/16 #OCI VPC CIDR

Por último, é preciso criar e configurar o arquivo /etc/ipsec.d/VPNaaS.secrets, que conterá a Pre-shared Key utilizada pela VPN.
#OCI-C_VPNaaS-IP-Publico OCI_LibreSWAN-IP-Publico : PSK
"Secret Key(VPNaaS Pre-shared key)"
144.22.68.211 152.67.35.47 : PSK "pwdvpnociclassic"

Concluídas as configurações, podemos realizar um restart do ipsec na maquina libreswan e posteriormente um verify para validar as configurações.

Para configurar a inicialização automática do libreswan, basta executar comando systemctl enable ipsec.

É possível verificar o status da conexão através do comando ipsec auto --status.

Podemos atualizar a pagina da VPNaaS Classic e validar que agora a conexão está UP/Ready. Também é possível validar que os endereços estão pingando normalmente de uma rede para outra.

Ping da rede 192.168.1.0/24 para 172.0.0.0/16.

Ping da rede 172.0.0.0/16 para 192.168.1.0/24

Desta forma, concluímos a configuração e implementação da VPN entre os ambientes Oracle Cloud Classic e Oracle Cloud OCI.
Fonte:
https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/libreswan.htm
https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/libreswan.htm
Anderson Graf, Bacharel em Sistemas de Informação e MBA em Gestão de Banco de Dados Oracle. Trabalha com banco de dados Oracle desde 2009, é Oracle OCP 10g/11g/12c, OCS Linux, Database e Cloud Control. OCE Performance Tuning; OPNCS. É um entusiasta da tecnologia Oracle e autor dos blogs andersondba.com.br e oraclehome.com.br.
Jhonata Euclides Lamim, MBA em Gestão de Banco de Dados Oracle pelo Centro Universitário de Araraquara (UNIARA), Bacharel em Sistemas de Informação pelo Centro Universitário de Brusque (UNIFEBE). Consultor Oracle Sênior, atuando com Oracle desde 2010. É um entusiasta da tecnologia Oracle, autor do blog lamimdba.com.br e um dos fundadores da Exímio Soluções em TI (www.eximioti.com.br).