# Runbook temporário - Relay RSFN via AWS Cecresa

Data: 2026-06-21
Escopo: habilitar, de forma temporária e controlada, testes RSFN da Monetarie usando um relay TCP dentro da AWS Cecresa.
Ambiente: homologação

Este documento descreve o que precisa ser feito do lado da AWS Cecresa para permitir que a VM Monetarie RSFN egress use temporariamente o caminho RSFN já funcional da Cecresa.

## 1. Decisão técnica

Não usar VPC Peering como trânsito direto para a RSFN.

VPC Peering não suporta roteamento transitivo. Portanto, o desenho `Monetarie -> Peering -> VPC Cecresa -> link RSFN` não funciona como rota L3 direta para `200.218.64.0/18`.

O desenho funcional é:

- Monetarie fala por rede privada com um relay TCP na VPC Cecresa.
- O relay TCP na Cecresa abre as conexões reais para os destinos RSFN.
- O relay não termina TLS, não troca certificado, não interpreta payload e não usa credencial de aplicação.
- A Monetarie continua usando seus próprios certificados e fluxos de aplicação.
- O uso é temporário, restrito a homologação e deve ter autorização explícita da Cecresa.

## 2. Gate zero

Antes de executar qualquer mudança, confirmar:

- CIDR da VPC Cecresa.
- CIDR da subnet Cecresa onde o relay ficará.
- Se há sobreposição com a VPC RTM Monetarie `192.168.0.0/16`.
- Se há sobreposição com a App VPC Monetarie `10.40.0.0/16`, caso ela venha a ser usada diretamente.

Se houver sobreposição de CIDR entre Monetarie e Cecresa, VPC Peering não é a solução. Nesse caso, usar AWS PrivateLink com NLB na Cecresa expondo o relay TCP.

## 3. Dados Monetarie já conhecidos

Conta AWS Monetarie:

- Conta: `990933657879`
- Região: `sa-east-1`

Origem preferencial para o relay:

- VM Monetarie RSFN egress: `192.168.40.10/32`
- Instância: `i-0692fbf5e0dd6d350`
- VPC: `vpc-0d5ecd0df0976bcb9`
- CIDR da VPC: `192.168.0.0/16`

Origem que deve ser evitada neste desenho:

- App VPC inteira `10.40.0.0/16`, salvo necessidade explícita. O objetivo é concentrar a ponte temporária na VM RSFN egress da Monetarie.

## 4. Resultado esperado

Depois de pronto, a VM Monetarie RSFN egress deverá conseguir:

- resolver os hostnames RSFN para IPs privados do relay Cecresa;
- abrir TCP para os mesmos hostnames e portas originais;
- trafegar sem mudar porta de aplicação;
- reverter para o caminho Monetarie original removendo apenas os overrides DNS e rotas temporárias.

## 5. Serviços RSFN a publicar pelo relay

Como `dict-h` e `icom-h` usam a mesma porta `16522`, não usar um único IP privado para todos os serviços.

Usar um IP privado dedicado por hostname RSFN no relay Cecresa. Pode ser uma única EC2 com múltiplos secondary private IPs na mesma ENI.

| Hostname RSFN | Porta original | IP real atual | IP privado no relay Cecresa |
|---|---:|---|---|
| `dict-h.pi.rsfn.net.br` | `16522` | `200.218.66.145`, `200.218.67.209` | `<CECRESA_RELAY_DICT_H_IP>` |
| `dict-np-h.pi.rsfn.net.br` | `16532` | `200.218.66.147`, `200.218.67.211` | `<CECRESA_RELAY_DICT_NP_H_IP>` |
| `icom-h.pi.rsfn.net.br` | `16522` | `200.218.66.141`, `200.218.67.205` | `<CECRESA_RELAY_ICOM_H_IP>` |
| `icom-sec-h.pi.rsfn.net.br` | `17522` | `200.218.66.151`, `200.218.67.215` | `<CECRESA_RELAY_ICOM_SEC_H_IP>` |
| `arq-h.pi.rsfn.net.br` | `1130` | `200.218.66.143` | `<CECRESA_RELAY_ARQ_H_IP>` |

## 6. Ações na AWS Cecresa

### 6.1 Criar ou selecionar subnet do relay

Escolher subnet Cecresa que:

- tenha rota funcional para os destinos RSFN;
- tenha rota de retorno para a VPC Monetarie pelo VPC Peering;
- não dependa de IP público para receber tráfego da Monetarie;
- permita SSM Session Manager para operação sem SSH público, se possível.

### 6.2 Criar VPC Peering

Opção A, Cecresa cria o peering:

- Requester: VPC Cecresa.
- Accepter: VPC Monetarie RTM `vpc-0d5ecd0df0976bcb9`.
- Região: `sa-east-1`.
- Conta accepter: `990933657879`.

Opção B, Monetarie cria o peering:

- Cecresa aceita o peering cross-account.
- Cecresa aplica suas rotas e security groups.

Em ambos os casos:

- habilitar DNS resolution no peering apenas se houver necessidade;
- não anunciar `200.218.64.0/18` pela rota de peering, porque peering não é trânsito;
- rotear apenas comunicação entre Monetarie RSFN egress e IPs privados do relay Cecresa.

### 6.3 Rotas do lado Cecresa

Na route table da subnet do relay Cecresa, adicionar rota de retorno para a origem Monetarie.

Preferência:

- destino `192.168.40.10/32`;
- target: VPC Peering com Monetarie.

Se a AWS não aceitar rota `/32` por política interna da conta ou se houver necessidade operacional, usar o menor CIDR possível contendo a VM Monetarie RSFN egress.

Evitar usar `192.168.0.0/16` inteiro se não for necessário.

### 6.4 Rotas do lado Monetarie

Este item não é executado na Cecresa, mas precisa ser informado para alinhamento.

Na route table da subnet Monetarie onde está `192.168.40.10`, adicionar rota para o bloco privado dos IPs do relay Cecresa via VPC Peering.

Exemplo:

- destino `<CECRESA_RELAY_SUBNET_CIDR>` ou CIDRs específicos dos secondary IPs;
- target: VPC Peering Monetarie-Cecresa.

### 6.5 Security group do relay Cecresa

Ingress mínimo:

- origem `192.168.40.10/32`;
- TCP `16522`;
- TCP `16532`;
- TCP `17522`;
- TCP `1130`.

Opcional para validação HTTP simples:

- TCP `80` apenas se for criado listener de health check interno.

Egress mínimo:

- destino `200.218.66.145/32`, TCP `16522`;
- destino `200.218.67.209/32`, TCP `16522`;
- destino `200.218.66.147/32`, TCP `16532`;
- destino `200.218.67.211/32`, TCP `16532`;
- destino `200.218.66.141/32`, TCP `16522`;
- destino `200.218.67.205/32`, TCP `16522`;
- destino `200.218.66.151/32`, TCP `17522`;
- destino `200.218.67.215/32`, TCP `17522`;
- destino `200.218.66.143/32`, TCP `1130`.

Se a política da Cecresa já usa um security group de egress amplo para RSFN, registrar a exceção e manter escopo por instância.

### 6.6 NACL da subnet Cecresa

Confirmar que a NACL permite:

- entrada das portas `16522`, `16532`, `17522`, `1130` vindas de `192.168.40.10/32`;
- saída para portas efêmeras de retorno para `192.168.40.10/32`;
- saída para destinos RSFN nas portas de serviço;
- retorno dos destinos RSFN para portas efêmeras do relay.

## 7. EC2 relay Cecresa

### 7.1 Recomendação de instância

Para homologação:

- `t4g.micro` ou `t3.micro`, se throughput for baixo;
- Amazon Linux 2023 ou Ubuntu LTS;
- sem IP público, se SSM estiver disponível;
- IMDSv2 obrigatório;
- CloudWatch Agent ou logs do serviço enviados para CloudWatch.

### 7.2 Endereçamento

Configurar uma ENI com IP primário e secondary private IPs:

- `<CECRESA_RELAY_DICT_H_IP>`;
- `<CECRESA_RELAY_DICT_NP_H_IP>`;
- `<CECRESA_RELAY_ICOM_H_IP>`;
- `<CECRESA_RELAY_ICOM_SEC_H_IP>`;
- `<CECRESA_RELAY_ARQ_H_IP>`.

Cada IP representa um hostname RSFN, mantendo a porta original do serviço.

### 7.3 Proxy TCP

Usar HAProxy em modo TCP ou NGINX stream.

Recomendação: HAProxy, porque a configuração por frontend/backend fica explícita e fácil de auditar.

Exemplo de configuração HAProxy:

```haproxy
global
  log /dev/log local0
  maxconn 2000

defaults
  log global
  mode tcp
  option tcplog
  timeout connect 10s
  timeout client 5m
  timeout server 5m

frontend dict_h_in
  bind <CECRESA_RELAY_DICT_H_IP>:16522
  default_backend dict_h_out

backend dict_h_out
  balance first
  server dict_h_a 200.218.66.145:16522 check inter 5s
  server dict_h_b 200.218.67.209:16522 check inter 5s backup

frontend dict_np_h_in
  bind <CECRESA_RELAY_DICT_NP_H_IP>:16532
  default_backend dict_np_h_out

backend dict_np_h_out
  balance first
  server dict_np_h_a 200.218.66.147:16532 check inter 5s
  server dict_np_h_b 200.218.67.211:16532 check inter 5s backup

frontend icom_h_in
  bind <CECRESA_RELAY_ICOM_H_IP>:16522
  default_backend icom_h_out

backend icom_h_out
  balance first
  server icom_h_a 200.218.66.141:16522 check inter 5s
  server icom_h_b 200.218.67.205:16522 check inter 5s backup

frontend icom_sec_h_in
  bind <CECRESA_RELAY_ICOM_SEC_H_IP>:17522
  default_backend icom_sec_h_out

backend icom_sec_h_out
  balance first
  server icom_sec_h_a 200.218.66.151:17522 check inter 5s
  server icom_sec_h_b 200.218.67.215:17522 check inter 5s backup

frontend arq_h_in
  bind <CECRESA_RELAY_ARQ_H_IP>:1130
  default_backend arq_h_out

backend arq_h_out
  server arq_h_a 200.218.66.143:1130 check inter 5s
```

Observações:

- Não usar TLS termination.
- Não configurar certificado Cecresa no relay.
- Não registrar payload.
- Logs devem conter apenas conexão, IP de origem, destino e status.

## 8. DNS temporário na Monetarie

Depois que Cecresa entregar os IPs privados do relay, a Monetarie deve aplicar override DNS temporário na VM RSFN egress:

| Hostname | Valor temporário |
|---|---|
| `dict-h.pi.rsfn.net.br` | `<CECRESA_RELAY_DICT_H_IP>` |
| `dict-np-h.pi.rsfn.net.br` | `<CECRESA_RELAY_DICT_NP_H_IP>` |
| `icom-h.pi.rsfn.net.br` | `<CECRESA_RELAY_ICOM_H_IP>` |
| `icom-sec-h.pi.rsfn.net.br` | `<CECRESA_RELAY_ICOM_SEC_H_IP>` |
| `arq-h.pi.rsfn.net.br` | `<CECRESA_RELAY_ARQ_H_IP>` |

Não alterar `spi-h`, porque esse hostname não deve ser recriado.

## 9. Validação esperada

### 9.1 Validação na Cecresa

No relay Cecresa:

```bash
nc -vz 200.218.66.145 16522
nc -vz 200.218.66.147 16532
nc -vz 200.218.66.141 16522
nc -vz 200.218.66.151 17522
nc -vz 200.218.66.143 1130
systemctl status haproxy
```

Resultado esperado:

- conexões TCP para RSFN OK;
- HAProxy ativo;
- health checks dos backends OK ou, no mínimo, conexão sob demanda OK se o destino não aceitar health check vazio.

### 9.2 Validação na Monetarie

Na VM Monetarie RSFN egress:

```bash
getent ahostsv4 dict-h.pi.rsfn.net.br
getent ahostsv4 dict-np-h.pi.rsfn.net.br
getent ahostsv4 icom-h.pi.rsfn.net.br
getent ahostsv4 icom-sec-h.pi.rsfn.net.br
getent ahostsv4 arq-h.pi.rsfn.net.br

nc -vz dict-h.pi.rsfn.net.br 16522
nc -vz dict-np-h.pi.rsfn.net.br 16532
nc -vz icom-h.pi.rsfn.net.br 16522
nc -vz icom-sec-h.pi.rsfn.net.br 17522
nc -vz arq-h.pi.rsfn.net.br 1130
```

Resultado esperado:

- DNS resolve para IPs privados Cecresa;
- TCP abre nas portas originais;
- logs do relay mostram origem `192.168.40.10`.

## 10. Rollback

Rollback deve ser simples e sem impacto estrutural:

1. Remover overrides DNS temporários na VM Monetarie RSFN egress.
2. Reiniciar ou recarregar BIND/systemd-resolved na VM Monetarie, se necessário.
3. Remover rotas Monetarie para IPs do relay Cecresa.
4. Parar listeners HAProxy no relay Cecresa.
5. Remover ingress do security group Cecresa vindo de `192.168.40.10/32`.
6. Remover rotas Cecresa para `192.168.40.10/32`.
7. Remover VPC Peering somente quando não houver mais tráfego.

## 11. Critérios de aceite

Considerar funcional apenas se todos os itens forem verdadeiros:

- VPC Peering ativo e rotas bidirecionais aplicadas.
- Relay Cecresa acessível de `192.168.40.10`.
- Relay Cecresa consegue abrir TCP para todos os destinos RSFN listados.
- DNS Monetarie resolve hostnames RSFN para IPs privados do relay.
- TCP da Monetarie para os hostnames RSFN abre nas portas originais.
- Nenhuma aplicação ou relatório cliente marca RSFN como validada antes de teste funcional real de mensagem.

## 12. Pendências para execução

Itens que precisam vir da Cecresa:

- ID da conta AWS Cecresa.
- VPC ID Cecresa.
- CIDR da VPC Cecresa.
- Subnet ID para o relay.
- Route table ID da subnet do relay.
- Security group ID do relay.
- Confirmação de que a subnet tem acesso RSFN funcional.
- IPs privados finais do relay para cada hostname.
- Aprovação formal para uso temporário do link RSFN Cecresa em homologação Monetarie.

Itens que a Monetarie executa depois:

- criar ou aceitar VPC Peering;
- adicionar rota até os IPs privados do relay;
- aplicar overrides DNS temporários;
- validar TCP e fluxo de aplicação;
- documentar evidências.
