O que realmente significa um tempo limite de conexão UDP?

18

Como o UDP é um protocolo sem conexão, estou confuso com a configuração no meu firewall da Sonicwall para "Tempo limite da conexão UDP". É definido como um padrão de 30 segundos - mas o que exatamente expira após 30 segundos?

WTF?

Aqui está minha situação real: eu tenho um servidor NTP no pool ntp.org que atende cerca de 3000 consultas por minuto. Isso coloca um pouco de pressão no meu grau SOHO TZ-200 - não em termos de largura de banda; mas em termos de número de conexões que passa por ele. Gostaria de saber se as conexões UDP de alguma forma são 'mantidas vivas' no SonicWall; mesmo estando (por definição) sem conexão.

O que estou perdendo aqui? O que o SonicWall significa quando se trata de um "Tempo limite de conexão UDP"?

Jon Wadsworth
fonte
Os firewalls geralmente permitem pacotes para uma conexão que foi estabelecida por uma máquina dentro do firewall. Mas o UDP não tem conexões. Portanto, as opções são permitir todos os pacotes UDP, bloquear todos os pacotes UDP ou tentar adivinhar quais são as "conexões UDP" para permitir apenas os pacotes que fazem parte dessas "conexões". Todos os fornecedores de firewall adotam a última abordagem.
user253751
Como immibis descreveu. Devido à conversão de endereços de rede ou NAT, um roteador de gateway de Internet / sub-rede permitirá apenas o TCP (praticamente todo o tráfego é TCP) no qual um cliente na sub-rede inicia a conexão. Pois não há como atribuir uma porta para o NAT se a conexão estiver chegando. Como o roteador sabe para quem enviá-lo? O UDP nem sequer tem uma conexão. Como o roteador pode lidar com as solicitações UDP? Uma maneira é acompanhar os pacotes UDP de saída.
Marshal craft
Se você estiver hospedando um servidor, encaminhe as portas nas quais espera receber conexões, embora esteja preparado para qualquer coisa.
Marshal craft

Respostas:

16

Embora não exista uma "conexão" formal com o UDP, ainda existe uma convenção de que os clientes enviam solicitações e esperam obter respostas de volta com o IP e a porta de origem trocados com o IP e a porta do Destinato.

Os firewalls stateful e NATs, portanto, assumem que os pacotes com uma determinada combinação de IP de origem / porta de origem / IP de destino / porta de destino e a combinação correspondente com a origem e o destino trocados fazem parte de uma "conexão". Isso permite que regras como "somente conexões de saída" sejam aplicadas ao UDP e permite que traduções reversas sejam aplicadas aos pacotes de resposta.

Infelizmente, o firewall ou o NAT não têm como saber quando o cliente terminou de conversar com o servidor. Portanto, é necessário aguardar um tempo limite antes de remover a entrada de suas tabelas de rastreamento de estado. Esse é o tempo limite que você está definindo.

Em princípio, seria possível criar uma caixa NAT que usasse uma abordagem sem estado para encaminhamento de porta, mantendo uma abordagem com estado para conexões de saída, mas é mais simples usar apenas a NAT com estado para tudo e parece que é isso que seu fornecedor está fazendo.

Infelizmente, como você descobriu, isso é péssimo para servidores UDP sem estado que atendem a um grande número de solicitações pequenas. Você acaba em uma situação em que o firewall consome muito mais recursos do que o próprio servidor.

Peter Green
fonte
2
Obrigado pela ótima resposta Peter! No meu caso, o SonicWall me permite reduzir o "tempo limite de conexão" do UDP em uma regra de firewall específica, portanto reduzirei a regra da política NTP para 5 segundos (a partir do padrão de 30).
Jon Wadsworth
1
Nota: Depois disso, vi as 'conexões totais', conforme relatadas pela Sonicwall, caírem de ~ 1500 para ~ 400. Perfeito! Mais uma vez obrigado pela ótima resposta.
Jon Wadsworth
1
Esteja ciente de que a maioria dos protocolos de streaming usa UDP, que inclui a parte da mídia do VOIP (depois de negociada usando o SIP). Ter esse tempo limite curto pode causar problemas se não houver tráfego (por exemplo, chamada em espera, ambos os lados silenciados, etc.), pois nem todos os telefones VOIP (físicos ou virtuais) são ótimos para renegociar a conexão de mídia se as portas caírem. . Outros usam um 'keep alive' enviando minúsculos sinais periodicamente, que podem ficar mais afastados do que 5 segundos.
Chuck van der Linden
11

Seu firewall está mantendo uma tabela de conexões para conexões UDP. Por exemplo, quando você envia uma consulta DNS, o firewall cria uma entrada para esse fluxo, para que a resposta DNS seja permitida de volta à sua rede. As entradas na tabela atingem o tempo limite após 30 segundos sem atividade.

Ron Trunk
fonte
Obrigado Ron. Você pode comentar sobre essa tabela de conexão em relação às conexões de entrada? Como meu servidor NTP está por dentro, não deve realmente ser necessário "manter a porta aberta" para essas conexões de entrada, pois meu servidor por dentro sempre pode voltar à fonte (eu tenho saída aberta). regras). Obrigado pela resposta rápida!
Jon Wadsworth
3
A tabela de conexão é criada independentemente da direção da conexão e, na verdade, é imediatamente usada para o pacote de resposta que volta do servidor através do firewall retornando ao consultante. O firewall está mantendo uma tupla de (src ip, src port, dst ip, dst port) para associar a consulta inicial à resposta. Como não há realmente um semáforo para indicar ao firewall que uma sessão UDP específica foi concluída e o soquete foi fechado, o valor do tempo limite acaba sendo usado.
Rnxrx
2

Seu servidor NTP está atrás do seu NAT (firewall). O UDP é sem conexão do ponto de vista do aplicativo e do SO e para a maioria dos dispositivos de rede ao longo do caminho.

No entanto, para o firewall NAT, ele grava sempre que um pacote UDP sai, de forma que uma resposta do outro lado acaba sendo redirecionada para o mesmo computador dentro da sua rede. Eles são chamados de "conexões" pelo firewall.

Agora, em teoria, o NAT sabe que a porta externa será a porta conhecida do NTP, mas parece que seu firewall não suporta isso. Se esse é o seu único uso para UDP por meio desse firewall, você pode definir o tempo limite da conexão para um número menor. Como alternativa, se permitir definir por porta de aplicativo, você poderá configurá-lo para um tempo menor (1 segundo, digamos) para essa porta específica.

Alan
fonte
1
O tempo limite não é específico para o NAT; qualquer firewall com estado terá um.
grawity
O firewall não executa NAT, mas tenta filtrar pacotes que estão em transição através do NAT, portanto, a inter-relação com o roteador e o NAT.
Marshal craft
Um roteador de gateway para a Internet Deve empregar NAT porque qualquer computador fica em uma sub-rede, apenas o roteador de gateway tem um endereço IP de Internet real. Seria imensamente inútil se cada computador fosse uma coisa na internet. Às vezes, o roteador de gateway possui um grande grupo de computadores, todos associados a um endereço IP da Internet. Ele usa um soquete berkly da web para poder traduzir um a um entre pacotes recebidos da web e computadores em sua rede. As pessoas parecem não entender isso.
Marshal craft #
0

O IPv6 não precisa de NAT, mas ainda parece que os firewalls são compatíveis com o UDP.

David Howard
fonte