Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Estabeleça uma VPN com o Oracle Cloud Infrastructure usando um Endereço IP Público Dinâmico
Introdução
O OCI (Oracle Cloud Infrastructure) não suporta o uso do DNS (Domain Name System) para configurar o CPE (Customer Premises Equipment) como ponto final do túnel de VPN. Este tutorial tem como objetivo permitir que pequenas empresas que não têm acesso a um endereço IP público estático usem o serviço IPSec mesmo com um endereço dinâmico. A estratégia envolve a implantação de um script capaz de gerar automaticamente um novo túnel do OCI sempre que o IP público do CPE (Customer Premises Equipment) for alterado.
Observação: Neste tutorial, as duas últimas linhas no arquivo de script shell são usadas para atualizar o endereço IP e o segredo compartilhado do novo ponto final criado no OCI em meu roteador (MikroTik). Dependendo do seu roteador, você precisa atualizá-lo para refletir esses dois valores.
Objetivo
- Crie um novo túnel de VPN Site a Site do Oracle Cloud Infrastructure com o novo endereço IP CPE atualizado.
Pré-requisitos
-
Um registro de DNS atualizado dinamicamente que aponta para o endereço IP do CPE público.
-
Uma máquina virtual (VM) Linux.
-
Instale
sshpass
na VM do Linux. Neste tutorial, isso será usado para enviar comandos ao roteador MikroTik. -
Instalar e configurar a CLI do OCI (Interface de Linha de Comando) do Oracle Cloud Infrastructure.
-
Gere uma chave de API. Para obter mais informações, consulte Como Gerar uma Chave de Assinatura da API.
Configure uma VPN com o Oracle Cloud Infrastructure
-
Para obter uma conexão VPN IPSec estável com o OCI para uma atualização de endereço IP CPE, configure um registro DNS atualizado dinamicamente. Há vários provedores de DNS públicos que suportam esse recurso. Selecione seu favorito e configure-o. (Exemplo: Cloudns.net)
Depois de ter registrado e configurado um registro DNS dinâmico público, você pode configurar sua VM linux.
-
Depois que a VM do Linux estiver ativa e em execução, instale a CLI do OCI para operar na tenancy do OCI nessa máquina. Para obter mais informações, consulte instalar e configurar a CLI do OCI.
-
Instale o aplicativo
sshpass
caso você precise usá-lo para atualizar suas configurações privadas do roteador Mikrotik.sudo apt-get install sshpass
-
Crie o arquivo
.sh
, copie o script a seguir no arquivo e torne-o executável. Lembre-se de modificar o script com seus dados, o ID do compartimento, o ID do DRG e o nome do DNS que aponta para o seu CPE.Observação: Você pode encontrar o caminho do oci executando este comando em seu terminal:
which oci
Observação: A última seção do script, dedicada ao roteador MikroTik, só será necessária se você estiver usando um roteador MikroTik. Caso contrário, você terá que implementar os comandos para atualizar o endereço IP do ponto final do túnel do OCI e o segredo compartilhado no seu roteador.
nano VPN_update.sh
#!/bin/bash #OCI variables export compartment_id=ocid1.compartment.oc1… #your OCI compartment ID export drg_id=ocid1.drg.oc1.eu-frankfurt-1… #your DRG ID export DNS_cpe=YOUR_DYNAMIC_DNS_RECORD_POINT_TO_YOUR_CPE #(example: your-domain.com) #Mikrotik variables export static_routes=192.168.1.0/24 #(YOUR PRIVATE SUBNET) export router_ip=192.168.1.1 #(YOUR ROUTER PRIVATE IP ADDRESS) export router_user=USER #(YOUR ROUTER USER) export router_password=PWD #(YOUR ROUTER PASSWORD) #oci command path (to find the path of oci command type 'which oci' into the terminal) export oci_path=PATH #(YOUR oci COMMAND PATH. example: /home/ubuntu/bin/oci) export ip_address=$(ping -c 1 $DNS_cpe | gawk -F'[()]' '/PING/{print $2}') check_out=$($oci_path network ip-sec-connection list --compartment-id $compartment_id --all --query "data[?\"cpe-local-identifier\"=='$ip_address']" | sed 's|[[]]||g') if [[ -n $check_out ]] then printf -- "%s\n" "IP of the CPE is not changed - EXIT" exit else printf -- "%s\n" "create new IPSEC tunnel" cpe_id=$($oci_path network cpe create --compartment-id $compartment_id --ip-address $ip_address --query data.id --raw-output) $oci_path network cpe update --cpe-id $cpe_id ipsc_id=$($oci_path network ip-sec-connection create --compartment-id $compartment_id --cpe-id $cpe_id --drg-id $drg_id --static-routes '["$static_routes"]' --query data.id --raw-output) $oci_path network ip-sec-connection update --ipsc-id $ipsc_id tunnel_id1=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[0].id' --raw-output) tunnel_id2=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[1].id' --raw-output) ip_sec_psk1=$($oci_path network ip-sec-psk get --ipsc-id=$ipsc_id --tunnel-id=$tunnel_id1 | grep -oP '(?<="shared-secret": ").*(?=")') ip_sec_psk2=$($oci_path network ip-sec-psk get --ipsc-id=$ipsc_id --tunnel-id=$tunnel_id2 | grep -oP '(?<="shared-secret": ").*(?=")') vpn_ip1=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[0]."vpn-ip"' --raw-output) vpn_ip2=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[1]."vpn-ip"' --raw-output) echo OCI TUNNEL 1 IP and SHARED SECRET echo $vpn_ip1 echo $ip_sec_psk1 echo OCI TUNNEL 2 IP and SHARED SECRET echo $vpn_ip2 echo $ip_sec_psk2 #Mikrotik router update section. (Execute the sshpass command before run this script). Avoid and delete these two rows if you don't need it. sshpass -p '$router_password' ssh $router_user@$router_ip "/ip ipsec/ identity/ set number=0 secret=$ip_sec_psk1" sshpass -p '$router_password' ssh $router_user@$router_ip "/ip ipsec/ peer/ set number=0 address=$vpn_ip1"
chmod +x VPN_update.sh
Observação: o script pode criar os túneis, mas não pode encerrar os antigos. Às vezes, você precisa fazer log-in na Console do OCI e encerrar os túneis antigos não usados da VPN Site a Site do OCI ou implementar essa função nela.
-
Adicione o script ao
crontab
se quiser executá-lo automaticamente.Crontab -e
Observação: adicione a frequência e o caminho do script à última linha do
crontab
. O comando a seguir deve ser executado a cada 15 minutos.*/15 * * * * YOUR_SCRIPT_PATH/VPN_update.sh
Na próxima vez que seu endereço IP do CPE for alterado, o túnel do OCI será recriado com o novo endereço IP e o segredo compartilhado em um máximo de 15 minutos.
Links Relacionados
Confirmação
- Autor - Marco Santucci (Arquiteto de Soluções em Nuvem Empresarial da EMEA)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Establish a VPN with Oracle Cloud Infrastructure using a Dynamic Public IP Address
F96565-01
April 2024