Cosa significa davvero un timeout della connessione UDP?


18

Poiché UDP è un protocollo senza connessione, sono confuso dall'impostazione sul mio Sonicwall Firewall per "Timeout connessione UDP". L'impostazione predefinita è 30 secondi, ma cosa si verifica esattamente dopo 30 secondi?

WTF?

Ecco la mia situazione reale: ho un server NTP nel pool ntp.org che serve circa 3000 query al minuto. Questo mette a dura prova il mio SOZ TZ-200 di grado SOHO - non in termini di larghezza di banda; ma in termini di # di connessioni ha attraversato. Mi chiedo se le connessioni UDP in qualche modo siano "mantenute in vita" su SonicWall; anche se sono (per definizione) senza connessione.

Cosa mi sto perdendo qui? Cosa significa SonicWall quando parla di "Timeout connessione UDP"?


I firewall in genere consentono i pacchetti per una connessione stabilita da una macchina all'interno del firewall. Ma UDP non ha connessioni. Quindi la scelta è di consentire tutti i pacchetti UDP, bloccare tutti i pacchetti UDP o provare a indovinare quali sono le "connessioni UDP", quindi consentire solo i pacchetti che fanno parte di tali "connessioni". Tutti i (?) Fornitori di firewall adottano l'ultimo approccio.
user253751

Come immibis ha descritto. A causa della traduzione dell'indirizzo di rete o NAT, un router gateway Internet / sottorete consentirà solo TCP (praticamente tutto il traffico è TCP) in cui un client su sottorete avvia la connessione. Perché non c'è modo di assegnare una porta per il NAT se la connessione è in arrivo. In che modo il router sa a chi inviarlo? UDP non ha nemmeno una connessione, quindi in che modo il router gestisce le richieste UDP? Un modo è tenere traccia dei pacchetti UDP in uscita.
Maresciallo artigianale

Se stai ospitando un server, dovresti inoltrare le porte su cui ti aspetti di ricevere connessioni, anche se preparati a tutto.
Maresciallo artigianale

Risposte:


16

Sebbene non esista una "connessione" formale con UDP, esiste ancora una convenzione secondo cui i client inviano richieste e si aspettano di ottenere risposte con l'IP di origine e la porta scambiata con l'IP e la porta di Destinatoin.

I firewall e i NAT con stato presuppongono quindi che i pacchetti con una data combinazione di IP di origine / porta di origine / IP di destinazione / porta di destinazione e la combinazione corrispondente con sorgente e destinazione scambiate facciano parte di una "connessione". Ciò consente di applicare regole come "solo connessioni in uscita" a UDP e di applicare traduzioni inverse ai pacchetti di risposta.

Sfortunatamente il firewall o NAT non ha modo di sapere quando il client ha finito di parlare con il server. Quindi deve attendere un timeout prima di rimuovere la voce dalle sue tabelle di monitoraggio dello stato. Questo è il timeout che stai impostando.

In linea di principio sarebbe possibile costruire un NAT box che utilizzava un approccio senza stato per i port forward mantenendo un approccio stateful per le connessioni in uscita, ma è più semplice usare solo il stateful state per tutto e sembra che questo sia ciò che il tuo fornitore sta facendo.

Sfortunatamente, come hai scoperto, questo fa schifo per i server UDP senza stato che servono un gran numero di piccole richieste. Si finisce in una situazione in cui il firewall consuma molte più risorse rispetto al server stesso.


2
Grazie per l'ottima risposta Peter! Nel mio caso, SonicWall mi consente di ridurre il "timeout di connessione" UDP su una determinata regola del firewall, quindi ridurrò la regola del criterio NTP a 5 secondi (dal valore predefinito di 30).
Jon Wadsworth il

1
Nota: dopo aver fatto ciò, ho visto le "connessioni totali" riportate da Sonicwall scendere da ~ 1500 a ~ 400. Perfetto! Grazie ancora per l'ottima risposta.
Jon Wadsworth il

1
Tenere presente che la maggior parte dei protocolli di streaming utilizza UDP, che include la parte multimediale di VOIP (dopo che è stata negoziata tramite SIP). Avere un timeout così breve può causare un problema se non c'è traffico (es. Chiamata messa in attesa, entrambi i lati disattivati, ecc.) Poiché non tutti i telefoni VOIP (hard o soft) sono bravi a rinegoziare la connessione multimediale in caso di caduta delle porte . Altri usano un 'keep alive' inviando piccoli segnali su base periodica, che potrebbe ben distanziarsi di 5 secondi.
Chuck van der Linden,

11

Il firewall mantiene una tabella di connessione per le connessioni UDP. Ad esempio, quando si invia una query DNS, il firewall crea una voce per quel flusso in modo che la risposta DNS sia consentita di nuovo nella propria rete. Le voci nella tabella scadono dopo 30 secondi di inattività.


Grazie Ron. Puoi commentare la tabella delle connessioni in merito alle connessioni in entrata? Dal momento che il mio server NTP è all'interno, non dovrebbe esserci realmente la necessità di "tenere la porta aperta" per quelle connessioni in entrata, dal momento che il mio server all'interno può sempre tornare indietro alla fonte (ho un outbound completamente aperto regole). Grazie per la risposta rapida!
Jon Wadsworth il

3
La tabella delle connessioni viene creata indipendentemente dalla direzione della connessione e viene effettivamente utilizzata immediatamente per il pacchetto di risposta che ritorna dal tuo server attraverso il firewall che ritorna al richiedente. Il firewall mantiene una tupla di (src ip, src port, dst ip, dst port) per associare la query iniziale alla risposta. Poiché in realtà non esiste un semaforo per indicare al firewall che una determinata sessione UDP è terminata e che il socket ha chiuso il valore di timeout finisce per essere utilizzato.
rnxrx,

2

Il server NTP è protetto da NAT (firewall). UDP è senza connessione dal punto di vista dell'applicazione e del sistema operativo e per la maggior parte dei dispositivi di rete lungo la strada.

Per il tuo firewall NAT, tuttavia, registra ogni volta che esce un pacchetto UDP in modo che una risposta dall'altra estremità finisca per essere reindirizzata allo stesso computer all'interno della tua rete. Questi vengono chiamati "connessioni" dal firewall.

Ora, in teoria, il NAT sa che la porta esterna sarà la porta NTP ben nota, ma sembra che il tuo firewall non lo supporti. Se questo è l'unico utilizzo per UDP tramite questo firewall, è possibile impostare il timeout della connessione su un numero inferiore. In alternativa, se ti consente di impostare per porta dell'applicazione, puoi impostarlo su un tempo inferiore (1 secondo, diciamo) per quella porta specifica.


1
Il timeout non è specifico per NAT; qualsiasi firewall con stato ne avrà uno.
user1686

Il firewall non esegue NAT, ma sta cercando di filtrare i pacchetti che stanno passando attraverso NAT, quindi l'interrelazione con il router e NAT.
Maresciallo artigianale

Un router gateway per Internet Deve utilizzare NAT perché qualsiasi computer si trova su una sottorete, solo il router gateway ha un indirizzo IP Internet effettivo. Sarebbe immensamente dispendioso se ogni singolo computer fosse una cosa su Internet. Il router gateway a volte ha un grande gruppo di computer che sono tutti associati a un indirizzo IP Internet. Utilizza un bizzarro socket Web per essere in grado di tradurre da uno a uno tra i pacchetti in arrivo dal web e i computer sulla sua rete. Le persone sembrano non capirlo.
Maresciallo artigianale

0

IPv6 non ha bisogno di NAT, ma sembra comunque che i firewall siano stateful rispetto a UDP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.