ALG
siglaSignifica: Application Level Gateway
Código num NAT que lê e reescreve endereços dentro do payload de uma aplicação, para protocolos como o FTP sobreviverem à tradução.
O NAT reescreve headers, mas protocolos como FTP, SIP e H.323 também escrevem endereços no payload. Um Application Level Gateway (RFC 2663) conserta isso um protocolo de cada vez; a mesma intromissão quebra tráfego protegido ou que já sabe lidar com NAT, e por isso a RFC 4787 quer os ALGs de UDP desligados.
O FTP é o modelo, e a RFC 3022 o chama de ALG mais popular nos equipamentos de NAT. O comando PORT e a resposta PASV levam endereço e porta em ASCII, então o ALG os reescreve e cria o mapeamento para a conexão de dados que anunciam. A reescrita pode mudar o tamanho: com a porta 51234 escrita 200,34, a string 10,0,0,10,200,34 tem 16 caracteres e 203,0,113,1,200,34 tem 18, então o ALG também precisa deslocar os números de sequência TCP no resto da sessão. No Linux, isso são os helpers do conntrack, que criam expectations, e a conexão de dados aparece como RELATED.
Todo ALG é um contorno específico de um protocolo, e falha onde o payload é protegido. Um payload codificado o desativa, a menos que ele tenha a chave; um DNS-ALG que reescreve respostas quebra as assinaturas DNSSEC; e NATs que reescreviam qualquer campo com o próprio endereço público quebravam o STUN, até o STUN passar a usar XOR nos endereços. A RFC 4787 diz que ALGs de NAT para UDP devem ser desligados, e a RFC 5382 recomenda desativar por padrão todo ALG de TCP, menos o de FTP.
Atrás de NAT de operadora, o assinante só conta com os ALGs que o provedor roda, e a RFC 6333 registra que nenhum AFTR consegue implementar todos os atuais e futuros.
Também conhecido como: nat alg, application layer gateway, application-level gateway, ftp alg, conntrack helper
Fontes
- RFC 2663, IP Network Address Translator (NAT) Terminology and Considerations, August 1999: sections 2.9, 7 and 7.1 (read 2026-10-19)
- RFC 3022, Traditional IP Network Address Translator (Traditional NAT), January 2001: sections 1 and 4.4 (read 2026-10-19)
- RFC 4787, Network Address Translation (NAT) Behavioral Requirements for Unicast UDP, January 2007: sections 2 and 7 (read 2026-10-19)
- RFC 5382, NAT Behavioral Requirements for TCP, October 2008: section 8 (read 2026-10-19)