

# Configuração de um túnel VPN entre as instâncias primária e de réplica do RDS Custom para Oracle
<a name="cfo-standby-vpn-tunnel"></a>

Um túnel VPN é uma conexão criptografada entre dois ou mais dispositivos em uma rede. Para garantir o mais alto nível de segurança para suas instâncias do Oracle Data Guard no RDS Custom para Oracle, é altamente recomendável que você implemente um túnel VPN para criptografar a comunicação entre suas instâncias primária e em espera. O túnel serve como uma proteção para dados confidenciais enquanto eles percorrem a rede entre as instâncias. Embora essa configuração seja opcional, recomendamos como uma prática recomendada para alcançar a segurança dos dados e a conformidade regulatória. 

Satisfaça os seguintes pré-requisitos:
+ Você tem acesso raiz aos hosts primário e em espera.
+ Você tem o conhecimento técnico para executar o comando `ipsec`.

**Como configurar um túnel VPN entre uma instância primária e uma réplica no RDS Custom para Oracle**

1. Adicione os grupos de segurança da instância primária e da instância em espera à lista de permissões usando as seguintes regras:

   ```
   ACTION FLOW SOURCE PROTO PORT
   
   ALLOW ingress this-SG 50 (ESP) all (N/A)
   ALLOW egress this-SG 50 (ESP) all (N/A)
   
   ALLOW ingress this-SG 17 (UDP) 500 (IKE)
   ALLOW egress this-SG 17 (UDP) 500 (IKE)
   ```

1. Mude para o usuário raiz.

   ```
   $ sudo su – root
   ```

1. Execute os comandos a seguir na instância primária e na instância em espera para inicializar o banco de dados do Network Security Services (NSS) sob o usuário `root`.

   ```
   ipsec initnss --nssdir /etc/ipsec.d
   ```

1. Gere chaves RSA da seguinte forma:

   1. Na instância primária, gere as chaves usando um dos comandos `ipsec` a seguir, dependendo da versão do seu sistema operacional.

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. Obtenha a chave pública, de que você precisa para criar a configuração. No exemplo a seguir, a instância primária é `left` porque na linguagem `ipsec`, `left` refere-se ao dispositivo que você está configurando no momento e `right` refere-se ao dispositivo na outra extremidade do túnel.

      ```
      ipsec showhostkey --left --ckaid ckaid-returned-in-last-statement
      ```

   1. Na instância em espera, gere chaves para a instância em espera. 

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. Obtenha a chave pública para a instância em espera, de que você precisa para criar a configuração. No exemplo a seguir, a instância em espera é `right` porque se refere ao dispositivo na outra extremidade do túnel.

      ```
      ipsec showhostkey --right --ckaid ckaid-returned-in-last-statement
      ```

1. Com base nas chaves RSA que você obteve, gere a configuração. A configuração é idêntica tanto para a instância primária quanto para a instância em espera. Você pode encontrar o endereço IPv4 da instância primária e o endereço IPv4 da instância em espera no console da AWS.

   Tanto na instância primária quanto na instância em espera, salve a configuração a seguir no arquivo `/etc/ipsec.d/custom-fb-tunnel.conf`.

   ```
   conn custom-db-tunnel
    type=transport
    auto=add
    authby=rsasig
    left=IPV4-for-primary 
    leftrsasigkey=RSA-key-generated-on-primary
    right=IPV4-for-standby
    rightrsasigkey=RSA-key-generated-on-standby
   ```

1. Tanto na instância primária quanto na instância em espera, inicie o daemon `ipsec` nos dois hosts.

   ```
   ipsec setup start
   ```

1. Inicie o túnel na instância primária ou na instância em espera. A saída deve ser semelhante à seguinte.

   ```
   [root@ip-172-31-6-81 ~]# ipsec auto --up custom-db-tunnel
   181 "custom-db-tunnel" #1: initiating IKEv2 connection
   181 "custom-db-tunnel" #1: sent IKE_SA_INIT request to 172.31.32.196:500
   182 "custom-db-tunnel" #1: sent IKE_AUTH request {cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
   003 "custom-db-tunnel" #1: initiator established IKE SA; authenticated peer '3584-bit PKCS#1 1.5 RSA with SHA1' signature using preloaded certificate '172.31.32.196'
   004 "custom-db-tunnel" #2: initiator established Child SA using #1; IPsec transport [172.31.6.81-172.31.6.81:0-65535 0] -> [172.31.32.196-172.31.32.196:0-65535 0] {ESP/ESN=>0xda9c4815 <0xb742ca42 xfrm=AES_GCM_16_256-NONE DPD=passive}
   [root@ip-172-31-6-81 ~]#
   ```