Firewall e portas
Redirecionamentos de porta do VPS, SSH com vencimento e listas de IP permitidos ou excluídos no firewall do host.
- Categoria: Servidores e infraestrutura
- Estado: Disponível
- Requisitos: Um VPS da empresa com host atribuído; Para ver e criar redirecionamentos: ser membro da empresa com acesso ao VPS; Para alterar a política de IP: ser admin da empresa
- Ferramentas MCP (Só leem):
listar_redirecciones_vps,ver_politica_ip_puertos_vps - Ferramentas MCP (Escrevem ou modificam):
crear_redireccion_vps,cambiar_politica_ip_puertos_vps,cambiar_lista_ip_app - Ferramentas MCP (Destrutivas):
eliminar_redireccion_vps
O que permite fazer?
- Expor uma porta TCP ou UDP de dentro do VPS em uma porta pública do host, atribuída automaticamente.
- Abrir SSH (porta 22) por um número de horas, com fecho automático ao expirar.
- Decidir que IPs chegam às portas redirecionadas: a todos, só a uma lista ou a todos menos uma lista; para todo o VPS ou para uma porta concreta.
- Ver que redirecionamentos são da plataforma (não são tocados) e quais são seus.
Quando convém usar?
- Um serviço que não é HTTP (um jogo, um broker MQTT, um servidor VPN) e precisa de uma porta própria.
- Entrar por SSH a partir do seu computador durante uma janela de trabalho.
- Deixar uma porta acessível só a partir do escritório ou do IP de um cliente.
Como funciona na ArduMaker?
Redirecionamentos de porta
- Indica-se a porta de dentro do VPS (
container_port) e o protocolo (tcppor padrão, ouudp). - Se já existe um redirecionamento para essa porta e protocolo, devolve-se o mesmo: não se duplica.
- O host escolhe uma porta livre (
host_port) e cria o redirecionamento para o VPS. - No firewall do host (
ufw) essa porta é aberta a toda a internet, salvo se a porta estiver restrita ou houver uma política de IP global, que o novo redirecionamento herda. - De fora chega-se com
<dnsip do VPS>:<host_port>.
Portas que nunca ficam públicas
- PostgreSQL (5432), MySQL/MariaDB (3306) e Redis (6379, ou a porta onde foi instalado, e a sua porta TLS): o redirecionamento é criado, mas só é alcançável pela rede interna da plataforma. Para abrir uma base ao exterior usa-se o acesso externo de Apps, com a sua lista de IP.
- A porta do agente da ArduMaker está reservada: a criação rejeita-a.
- O redirecionamento para a 443 do VPS é do nginx do VPS: nunca é aberto à internet nem a outros VPS.
SSH com vencimento
Um redirecionamento para a porta 22 aceita closed_in_hs: passadas essas horas, a plataforma apaga-o sozinha e registra-o no registro do VPS. A listagem mostra is_ssh: true e as horas que faltam. Sem closed_in_hs, o SSH fica aberto até ser apagado.
Política de IP
| Modo | Regra no firewall do host | Uso |
|---|---|---|
todos | allow <porta> | Aberto a qualquer um (o habitual) |
solo | Um allow from <ip> por IP; o resto cai no deny padrão | Lista branca; além disso fecha-se o acesso a partir de outros VPS do host |
excluir | deny from <ip> à frente e o allow geral | Bloquear IPs concretos |
alcance: "global"aplica-se a todos os redirecionamentos do VPS;alcance: "puerto"a umhost_porte prevalece sobre a global.- As listas aceitam IPv4 e IPv6, com ou sem prefixo. Por padrão, até 20 entradas e prefixos não mais amplos que /24 (IPv4) ou /48 (IPv6). Nunca
0.0.0.0/0nem::/0, nem loopback, multicast ou link-local. - Aplica-se no momento: primeiro acrescentam-se as regras novas e depois apagam-se as velhas, para não deixar um buraco aberto nem cortar todos de repente.
- As portas da plataforma não são tocadas. A porta de uma app de Apps é alterada pelo caminho de Apps (mesma lista;
excluirnão está disponível aí).
O que muda realmente?
- No host: o redirecionamento (um dispositivo de proxy para o VPS) e as suas regras de
ufw. Nada muda dentro do VPS. - Ao apagar um redirecionamento, primeiro restauram-se as suas regras de IP e esquecem-se as suas políticas, e depois remove-se a regra geral.
- A política fica guardada com o seu estado (
aplicada,pendienteoufallida) e vê-se emver_politica_ip_puertos_vps. - Cada criação, exclusão ou alteração de política fica no registro de atividade do VPS.
IP real e portas da plataforma
O filtro por IP vive no host, antes do redirecionamento: aí vê-se o IP real do cliente. O serviço dentro do VPS, por outro lado, vê as links de um redirecionamento TCP como se viessem de 127.0.0.1. Se a sua app precisa do IP do cliente, convém publicá-la como web (por nginx), onde chega em X-Real-IP.
| Classificação (`motivo_plataforma`) | O que é | Editável? |
|---|---|---|
agente | Agente da ArduMaker | Não (não é listado) |
nginx_del_vps | Entrada web para a 443 do VPS | No |
tailnet | Bases de dados e Redis, só rede interna | No |
apps | Criada por Apps (acesso externo ou URL de uma app) | A partir de Apps |
| (vazio) | Sua | Sim |
Esquema
- Cliente: <dnsip>:<host_port>
- Firewall do host (ufw): todos / solo / excluir; vê o IP real
- Redirecionamento: host_port → container_port
- Serviço no VPS: vê a link a partir de 127.0.0.1
Resultado esperado
crear_redireccion_vpsdevolvename(odevice_namepara o apagar),host_port,container_port,protocol,is_public_for_ipesolo_tailscale(true se a porta ficou só na rede interna).listar_redirecciones_vpsacrescenta a cada umde_plataforma,editable,gestionado_poremotivo_plataforma, e oip_host(odnsip) para ligar.ver_politica_ip_puertos_vpsdevolve a política global e, por porta, a própria e aefectiva.
nc -vz <dnsip> <host_port>
ssh -p <host_port> usuario@<dnsip>Erros e resolução
| Resposta | Causa | O que fazer |
|---|---|---|
container_port <n> is reserved | Porta reservada do agente | Usar outra porta |
| 400 ao criar | Porta não positiva, protocolo diferente de tcp/udp, closed_in_hs não positivo, ou o host sem portas livres | Corrigir o argumento |
409 redireccion_de_plataforma | O redirecionamento foi criado por Apps | Removê-lo a partir da app |
404 redirect_not_found | Esse host_port ou device_name não é deste VPS | Listar primeiro |
400 ips_requeridas | solo ou excluir sem IP | Acrescentar pelo menos uma |
400 lista_ip_invalida / lista_ip_demasiado_amplia | Entrada que não é IP ou faixa demasiado ampla; data.invalid diz quais | Corrigir a lista |
409 modo_no_soportado | excluir sobre a porta de uma app | Usar solo ou todos |
424 regla_no_aplicada | O firewall do host falhou; a política ficou fallida | Repetir a mesma chamada |
| 403 | Um membro tentou alterar a política | Pedir a um admin |
Criar um redirecionamento é seguro de repetir: se já existe para essa porta e protocolo, devolve-se o mesmo. Alterar a política também (aplicar a mesma lista não muda nada). Apagar um redirecionamento corta na hora as links que o usam.
Relação com MCP
Sim, nos perfis /mcp e /mcp/vps.
| Ferramenta | Tipo | Permissão |
|---|---|---|
listar_redirecciones_vps | Leitura | Membro |
ver_politica_ip_puertos_vps | Leitura | Membro |
crear_redireccion_vps | Escrita (aceita idempotency_key) | Membro |
cambiar_politica_ip_puertos_vps | Escrita | Admin da empresa |
eliminar_redireccion_vps | Destrutiva | Membro |
cambiar_lista_ip_app | Escrita | Lista de IP do acesso externo de uma app; exige os IPs escritos |