# Monetarie HML - VPC 10.45 e OpenVPN

Data: 2026-06-22
Ambiente: AWS sa-east-1
Profile AWS usado na execucao: `vulcimonetarie`
Estado: aplicado e validado

## Estado aplicado

- VPC ativa de aplicacao: `vpc-03e25a932e9fd22a8` / `monetarie-rtm-hml` / `10.45.0.0/16`.
- VPC anterior removida: `vpc-0db1cc5e57331fe0d` / `10.40.0.0/16`.
- Subnets HML usadas pelos servicos: `10.45.1.0/24`, `10.45.2.0/24`, `10.45.3.0/24`.
- Route table HML base: `rtb-0b1f289a9d513cd03`.
- OpenVPN HML: EC2 `i-0fe1fe9ede134cef1`, IP privado `10.45.1.30`, EIP `54.94.247.111`, UDP `1194`.
- Endpoint HSM API: `cloudhsm-hml.priv.rtmcloud.net.br` -> `10.173.1.247:6443`.
- Route 53 Resolver outbound RSFN: `rslvr-out-203e924c6d7849e38`, IPs `10.45.1.53` e `10.45.2.53`, status `OPERATIONAL`.
- Regra Resolver RSFN: `rslvr-rr-545067c07bde42b9b`, dominio `rsfn.net.br`, associada a `vpc-03e25a932e9fd22a8` com status `COMPLETE`.
- Forwarders DNS RSFN: `200.218.64.6`, `200.218.64.134`, `200.218.64.38`, `200.218.64.166`, `200.218.64.70`, `200.218.64.198`.
- Rotas BCB/RSFN ativas em `rtb-0b1f289a9d513cd03`: `200.218.64.0/18`, `200.160.160.0/22` e `10.173.1.247/32` via `tgw-051f1a3c159dfb25b`.

## Diagrama

Fonte Mermaid atualizada tambem em `docs/architecture/diagrams/aws-homolog-topology.mmd`.

```mermaid
flowchart LR
  user["Operadores internos"] --> vpnip["EIP OpenVPN<br/>54.94.247.111"]
  vpnip --> openvpn["OpenVPN HML<br/>10.45.1.30<br/>UDP 1194"]

  subgraph hmlvpc["VPC monetarie-rtm-hml<br/>vpc-03e25a932e9fd22a8<br/>10.45.0.0/16"]
    dns["Route 53 privado<br/>monetarie.internal<br/>priv.rtmcloud.net.br<br/>rsfn.net.br"]
    resolver["Route 53 Resolver outbound<br/>10.45.1.53 / 10.45.2.53"]
    alb["ALB interno<br/>monetarie-internal-homolog-45"]
    ecs["ECS Cluster<br/>monetarie-greenfield-homolog<br/>15 servicos"]
    core["Core API e UIs"]
    pix["PIX API e Admin"]
    spb["SPB API e Admin"]
    aux["Backoffice, NPC, STA, CLST, Docs"]
    aurora["Aurora PostgreSQL<br/>monetarie-core-homolog-45"]
    redis["Redis<br/>monetarie-gf-redis-node-homolog-45"]
    nats["NATS<br/>10.45.1.10:4222"]
    tb["TigerBeetle<br/>10.45.1.20:3001"]
  end

  openvpn --> dns
  openvpn --> alb
  dns --> alb
  alb --> ecs
  ecs --> core
  ecs --> pix
  ecs --> spb
  ecs --> aux
  core --> aurora
  pix --> aurora
  spb --> aurora
  aux --> aurora
  core --> redis
  pix --> redis
  spb --> redis
  core --> nats
  pix --> nats
  spb --> nats
  core --> tb

  dns --> hsmname["cloudhsm-hml.priv.rtmcloud.net.br<br/>10.173.1.247"]
  hsmname --> path["TGW / DX / rota RTM"]
  path --> hsm["CloudHSM HML API<br/>10.173.1.247:6443<br/>TCP validado"]
  dns --> resolver
  resolver --> rsfndns["DNS RSFN<br/>200.218.64.6 / .134 / .38<br/>.166 / .70 / .198"]
  rsfndns --> rsfnsvc["BCB / RSFN<br/>www, DICT, ICOM, ARQ<br/>TCP validado"]
  rsfnsvc --> path

  oldvpc["VPC antiga removida<br/>vpc-0db1cc5e57331fe0d<br/>10.40.0.0/16"]:::removed

  classDef removed fill:#f7eded,stroke:#b42318,color:#7a271a,stroke-dasharray: 5 5;
```

## Evidencias de validacao

- Terraform `plan -detailed-exitcode`: sem mudancas pendentes apos a aplicacao.
- `describe-vpcs` para `vpc-0db1cc5e57331fe0d`: `InvalidVpcID.NotFound`.
- Regras DNS antigas apontando para `192.168.40.10`: removidas.
- ECS: 15 servicos em estado estavel, cada um com `desired=1`, `running=1`, `pending=0`.
- Tasks ECS validadas com ENIs nas subnets `10.45.x`.
- NATS validado em `nats-h.monetarie.internal` -> `10.45.1.10:4222`.
- TigerBeetle validado em `tigerbeetle-h.monetarie.internal` -> `10.45.1.20:3001`.
- CloudHSM validado a partir de task Fargate e da instancia OpenVPN: `cloudhsm-hml.priv.rtmcloud.net.br` -> `10.173.1.247`, TCP `6443` OK.
- OpenVPN validado via SSM: servico `openvpn-server@hml` ativo, perfis gerados e DNS interno funcional.
- Route 53 Resolver outbound RSFN validado: endpoint `OPERATIONAL`, IPs `10.45.1.53` e `10.45.2.53` `ATTACHED`, associacao da regra `rsfn.net.br` `COMPLETE`.
- Resolucao RSFN validada diretamente no resolver da VPC `10.45.0.2`: `www.rsfn.net.br` -> `200.218.66.12`, `dict-h.pi.rsfn.net.br` -> `200.218.67.209`, `icom-h.pi.rsfn.net.br` -> `200.218.67.205`.
- OpenVPN validado com push-route e NAT para `200.218.64.0/18` e `200.160.160.0/22`.
- TCP validado a partir do OpenVPN: `dict-h:16522`, `dict-np-h:16532`, `icom-h:16522`, `icom-sec-h:17522`, `arq-h:1130`, `www.rsfn.net.br:443` e `cloudhsm-hml.priv.rtmcloud.net.br:6443`.

## Perfis OpenVPN disponiveis localmente

Diretorio local:

`/Users/luizpenha/Desktop/Monetarie-HML-OpenVPN-Profiles/`

Perfis:

- `Monetarie-HML-OpenVPN-Admin.ovpn`
- `Monetarie-HML-OpenVPN-Gabriel-Cardoso.ovpn`
- `Monetarie-HML-OpenVPN-Wagner-Vieira.ovpn`
- `Monetarie-HML-OpenVPN-Herbeth-Santana.ovpn`

Todos os perfis usam `remote 54.94.247.111 1194`.

## Observacoes operacionais

- O EIP antigo `52.67.167.212` nao esta mais alocado.
- Perfis OpenVPN antigos que apontem para `52.67.167.212` devem ser substituidos uma vez pelos novos perfis HML.
- O IP publico do OpenVPN passa a ser fixo via EIP `54.94.247.111`.
- Acesso OpenVPN a `www.rsfn.net.br` e aos nomes `*.pi.rsfn.net.br` usa push-route de servidor; nao exige novo arquivo `.ovpn`, mas o cliente precisa reconectar para receber as novas rotas.
- Os blocos `192.168.69.0/24` e `192.168.70.0/24` nao foram enviados para clientes OpenVPN para evitar conflito com a VPC RTM `192.168.0.0/16`; os destinos solicitados e validados estao em `200.218.64.0/18`.
- A regra de entrada do OpenVPN permite UDP `1194` a partir de `0.0.0.0/0` ate que os CIDRs administrativos definitivos sejam informados.
- O PKI do OpenVPN esta na propria instancia. Reboot nao exige troca de perfil; substituicao da instancia pode exigir nova distribuicao de perfis se o PKI nao for externalizado.
