# RSFN via relay Cecresa - lado Monetarie, rota isolada (executado)

Data: 2026-06-21
Ambiente: homologação
Conta: `990933657879`, região `sa-east-1`
Complementa: `docs/handoff/2026-06-21-cecresa-side-DONE-monetarie-actions.md` e
`docs/handoff/2026-06-21-cecresa-rsfn-relay-runbook.md`.

## 1. Objetivo

Habilitar a rota RSFN da Monetarie pelo relay TCP da Cecresa **usando exclusivamente
recursos nossos**, sem nenhuma sobreposição com:

- o **bastion** da Lerian (`i-06be52454b879cbbb`, `192.168.19.59`);
- as subnets/route table da Lerian (`subnet-prod/hml/dr`, tag `Project=monetarie-rtm`);
- o TGW, SGs e demais recursos geridos pela Lerian.

Decisão validada com o usuário: **não criar VPC/subnet/EC2 nova**. A origem é a VM de
egress que **nós** criamos via Terraform.

## 2. Descoberta-chave (por que já era isolado por construção)

A `vpc-mq` (`vpc-0d5ecd0df0976bcb9`, `192.168.0.0/16`) é da **nossa conta**, mas tem
recursos da Lerian dentro. A separação acontece por **route table**:

| Subnet | CIDR | Project | Route table | Dono |
|---|---|---|---|---|
| `subnet-prod` | 192.168.18.0/24 | `monetarie-rtm` | **main** `rtb-0f84caeba8d62d2d7` | Lerian |
| `subnet-hml` (bastion) | 192.168.19.0/24 | `monetarie-rtm` | **main** `rtb-0f84caeba8d62d2d7` | Lerian |
| `subnet-dr` | 192.168.30.0/24 | `monetarie-rtm` | **main** `rtb-0f84caeba8d62d2d7` | Lerian |
| **`monetarie-rsfn-egress-homolog`** | **192.168.40.0/24** | **`monetarie`** | **própria** `rtb-003e7f7e9a48d7caf` | **nós** |

A nossa subnet de egress tem **route table dedicada e exclusiva**
(`rtb-003e7f7e9a48d7caf`). Colocando a rota do relay **só** nela, o bastion e as subnets
da Lerian, que usam a main RT, **não recebem rota nenhuma** para o relay.

E o lado Cecresa já estava amarrado à **nossa** origem:
- SG do relay (`sg-0fb9bcad750d59434`) só aceita ingress de `192.168.40.10/32`;
- rota de retorno só para `192.168.40.10/32`.

Logo, nenhuma mudança foi necessária do lado Cecresa.

## 3. Origem (nossa)

| Recurso | ID / valor |
|---|---|
| EC2 egress | `i-0692fbf5e0dd6d350` (`monetarie-rsfn-egress-homolog`, t4g.micro, Ubuntu) |
| Criada em | 2026-06-20 22:58 UTC, `ManagedBy=terraform`, `Project=monetarie` |
| IP privado | `192.168.40.10` |
| Subnet | `subnet-0c9eb0464d27ef9ae` (`192.168.40.0/24`) |
| Route table | `rtb-003e7f7e9a48d7caf` (exclusiva) |
| Security group | `sg-060e624746e07ed3d` (egress allow-all, sem mudança) |
| NACL | `acl-0e728901fd2a59dab` (default allow-all, sem mudança) |
| Acesso operacional | **SSM Session Manager** (sem SSH, sem bastion) |
| Resolver | BIND9 (`named`) com zona estática `monetarie-rsfn-static` |

## 4. Garantias de isolamento

1. Rota para `172.16.70.0/24` vive **só** em `rtb-003e7f7e9a48d7caf`. A main RT da Lerian
   foi verificada e **não tem** essa rota. O bastion não alcança o relay.
2. SG do relay Cecresa só aceita `192.168.40.10/32`.
3. Override DNS aplicado **só** no BIND da nossa VM, via SSM.
4. Zero alteração em recurso Lerian (main RT, TGW, SGs RTM, bastion).
5. Operação 100% por SSM. O bastion não é tocado em momento algum.

## 5. Execução (realizada em 2026-06-21)

### 5.1 Aceite do peering
```
aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id pcx-0e15a54db2a1fc8b1
# Status: evoluiu de pending-acceptance para provisioning e depois active
```

### 5.2 Rota (somente na nossa route table)
```
aws ec2 create-route --route-table-id rtb-003e7f7e9a48d7caf \
  --destination-cidr-block 172.16.70.0/24 \
  --vpc-peering-connection-id pcx-0e15a54db2a1fc8b1
# Return: true
```

### 5.3 Override DNS (BIND na VM, via SSM)
Backup: `/etc/bind/monetarie-rsfn-static.bak.20260621170746`.
Zonas master reescritas (serial `2026062101`, TTL 60), 1 A record por hostname:

| Zona | A antes (BACEN real) | A depois (relay) |
|---|---|---|
| `dict-h.pi.rsfn.net.br` | 200.218.66.145 / .67.209 | `172.16.70.51` |
| `dict-np-h.pi.rsfn.net.br` | 200.218.66.147 / .67.211 | `172.16.70.52` |
| `icom-h.pi.rsfn.net.br` | 200.218.66.141 / .67.205 | `172.16.70.53` |
| `icom-sec-h.pi.rsfn.net.br` | 200.218.66.151 / .67.215 | `172.16.70.54` |
| `arq-h.pi.rsfn.net.br` | 200.218.66.143 | `172.16.70.55` |

Não tocado: `www.rsfn.net.br`, que segue real. `spi-h` não existe e não foi criado.
`named-checkzone` OK nas 5 zonas, `named-checkconf` OK, `rndc reload` OK,
`resolvectl flush-caches` OK.

## 6. Evidências (camada de rede COMPLETA)

DNS na VM:
```
dict-h     -> 172.16.70.51
dict-np-h  -> 172.16.70.52
icom-h     -> 172.16.70.53
icom-sec-h -> 172.16.70.54
arq-h      -> 172.16.70.55
```
TCP na porta original (todos `succeeded`):
```
dict-h:16522  dict-np-h:16532  icom-h:16522  icom-sec-h:17522  arq-h:1130
```
Prova ponta a ponta (certificado do BACEN volta intacto pelo relay, que não termina TLS):
```
subject = O = BANCO CENTRAL DO BRASIL, CN = *.pi.rsfn.net.br, serialNumber = 00038166000105
issuer  = ICP-Brasil / Autoridade Certificadora do SERPRO SSLv1
```
Confirmado em `dict-h:16522` e `icom-sec-h:17522`.

## 7. O que NÃO está validado (não inferir)

- **Teste funcional de mensagem** (DICT/ICOM/ARQ no nível de aplicação) depende do
  BACEN/RTM homolog aceitar o cert/ISPB da Monetarie chegando por esta origem. O relay
  entrega o handshake intacto, mas não garante aceitação na aplicação.
- ICOM (`icom-h` e `icom-sec-h`) não é IBM MQ neste desenho. É tráfego mTLS em porta TCP
  de homologação, encaminhado em camada 4 pelo relay.
- Critério de aceite #6 do runbook (teste real de mensagem) continua aberto.

## 8. Rollback (lado Monetarie, simples e sem impacto estrutural)

```
# 1. Restaurar DNS para os IPs reais do BACEN (via SSM):
sudo cp -a /etc/bind/monetarie-rsfn-static.bak.20260621170746/. /etc/bind/monetarie-rsfn-static/
sudo rndc reload && sudo resolvectl flush-caches

# 2. Remover a rota do relay (só na nossa RT):
aws ec2 delete-route --route-table-id rtb-003e7f7e9a48d7caf \
  --destination-cidr-block 172.16.70.0/24

# 3. (opcional) Remover o peering quando não houver mais tráfego:
aws ec2 delete-vpc-peering-connection --vpc-peering-connection-id pcx-0e15a54db2a1fc8b1
```

## 9. IDs de referência

| Item | ID |
|---|---|
| Peering Cecresa/vpc-mq | `pcx-0e15a54db2a1fc8b1` (active) |
| Peering App/vpc-mq, já existente | `pcx-035032773d2f617e4` |
| Nossa route table | `rtb-003e7f7e9a48d7caf` |
| Main RT Lerian (intocada) | `rtb-0f84caeba8d62d2d7` |
| VM egress | `i-0692fbf5e0dd6d350` |
| Relay Cecresa | `i-022ffea9f507098ad` (conta 364807861246) |
| Sub-rede relay | `172.16.70.0/24`, frontends `.51` a `.55` |
