Was bedeutet ein UDP-Verbindungs-Timeout wirklich?


18

Da UDP ein verbindungsloses Protokoll ist, bin ich durch die Einstellung in meiner Sonicwall Firewall für "UDP Connection Timeout" verwirrt. Die Standardeinstellung ist 30 Sekunden - aber wie lange dauert es genau nach 30 Sekunden?

WTF?

Hier ist meine reale Situation: Ich habe einen NTP-Server im ntp.org-Pool, der ungefähr 3000 Abfragen pro Minute bedient. Dies belastet meine SOHO-Klasse TZ-200 ein wenig - nicht in Bezug auf die Bandbreite; aber in Bezug auf die Anzahl der Verbindungen hat es durchlaufen. Ich frage mich, ob die UDP-Verbindungen auf der SonicWall irgendwie "am Leben erhalten" werden. obwohl sie (per definitionem) verbindungslos sind.

Was vermisse ich hier? Was bedeutet SonicWall, wenn es sich um ein "UDP Connection Timeout" handelt?


Firewalls erlauben normalerweise Pakete für eine Verbindung, die von einem Computer innerhalb der Firewall hergestellt wurde. UDP hat aber keine Verbindungen. Sie können also alle UDP-Pakete zulassen, alle UDP-Pakete blockieren oder versuchen, die "UDP-Verbindungen" zu erraten, sodass nur Pakete zugelassen werden, die Teil dieser "Verbindungen" sind. Alle (?) Firewall-Anbieter gehen den letzten Weg.
user253751

Wie immibis beschrieben hat. Aufgrund von Network Address Translation oder NAT lässt ein Internet- / Subnetz-Gateway-Router nur TCP zu (praktisch der gesamte Datenverkehr ist TCP), bei dem ein Client im Subnetz die Verbindung initiiert. Denn es gibt keine Möglichkeit, dem NAT einen Port zuzuweisen, wenn die Verbindung eingeht. Woher weiß der Router, an wen er es senden soll? UDP hat nicht einmal eine Verbindung. Wie soll der Router mit eingehenden UDP-Anfragen umgehen? Eine Möglichkeit besteht darin, ausgehende UDP-Pakete zu verfolgen.
Marschall Handwerk

Wenn Sie einen Server hosten, sollten Sie Ports weiterleiten, auf denen Sie Verbindungen erwarten, obwohl Sie auf alles vorbereitet sind.
Marschall Handwerk

Antworten:


16

Während es keine formale "Verbindung" mit UDP gibt, gibt es immer noch eine Konvention, nach der Clients Anforderungen senden und erwarten, dass sie Antworten mit der Quell-IP und dem mit der Ziel-IP und dem Ziel-Port ausgetauschten Port zurückerhalten.

Stateful Firewalls und NATs gehen daher davon aus, dass Pakete mit einer bestimmten Kombination aus Quell-IP / Quell-Port / Ziel-IP / Ziel-Port und der entsprechenden Kombination aus ausgetauschtem Quell- und Ziel-IP Teil einer "Verbindung" sind. Auf diese Weise können Regeln wie "Nur ausgehende Verbindungen" auf UDP angewendet werden und Rückübersetzungen auf Antwortpakete angewendet werden.

Leider kann die Firewall oder NAT nicht erkennen, wann der Client die Kommunikation mit dem Server beendet hat. Es muss also auf eine Zeitüberschreitung warten, bevor der Eintrag aus den Statusverfolgungstabellen entfernt wird. Das ist die Zeitüberschreitung, die Sie einstellen.

Grundsätzlich wäre es möglich, eine NAT-Box zu erstellen, die einen statusfreien Ansatz für Portforwards verwendet und gleichzeitig einen statusbehafteten Ansatz für ausgehende Verbindungen beibehält. Es ist jedoch einfacher, statusbehafteten NAT für alles zu verwenden.

Leider, wie Sie festgestellt haben, ist dies für zustandslose UDP-Server, die eine große Anzahl kleiner Anforderungen bedienen, zum Scheitern verurteilt. Sie befinden sich in einer Situation, in der die Firewall wesentlich mehr Ressourcen verbraucht als der Server.


2
Danke für die tolle Antwort Peter! In meinem Fall kann ich mithilfe von SonicWall das UDP-Verbindungszeitlimit für eine bestimmte Firewall-Regel verringern. Daher reduziere ich die Regel der NTP-Richtlinie auf 5 Sekunden (von der Standardeinstellung 30).
Jon Wadsworth

1
Hinweis: Danach habe ich festgestellt, dass die vom Sonicwall gemeldeten "Gesamtverbindungen" von ~ 1500 auf ~ 400 gesunken sind. Perfekt! Nochmals vielen Dank für die tolle Antwort.
Jon Wadsworth

1
Beachten Sie, dass die meisten Streaming-Protokolle UDP verwenden, einschließlich des Medienteils von VOIP (nachdem es über SIP ausgehandelt wurde). Wenn die Wartezeit so kurz ist, kann dies zu Problemen führen, wenn kein Datenverkehr vorliegt (z. B. Halten eines Anrufs, Stummschalten beider Seiten usw.), da nicht alle VOIP-Telefone (hart oder weich) die Medienverbindung neu aushandeln können, wenn die Ports unterbrochen werden . Andere verwenden ein "Keep Alive", indem sie in regelmäßigen Abständen winzige Signale senden, die möglicherweise weiter als 5 Sekunden voneinander entfernt sind.
Chuck van der Linden

11

Ihre Firewall verwaltet eine Verbindungstabelle für UDP-Verbindungen. Wenn Sie beispielsweise eine DNS-Abfrage senden, erstellt die Firewall einen Eintrag für diesen Nachrichtenfluss, damit die DNS-Antwort wieder in Ihr Netzwerk gelangen kann. Die Einträge in der Tabelle laufen nach 30 Sekunden ohne Aktivität ab.


Vielen Dank, Ron. Können Sie diese Verbindungstabelle in Bezug auf eingehende Verbindungen kommentieren? Da sich mein NTP-Server auf der Innenseite befindet, sollte es eigentlich nicht erforderlich sein, die Tür für eingehende Verbindungen offen zu halten, da mein Server auf der Innenseite immer wieder zur Quelle zurückkehren kann (ich habe einen offenen Ausgang) Regeln). Danke für die schnelle Antwort!
Jon Wadsworth

3
Die Verbindungstabelle wird unabhängig von der Verbindungsrichtung erstellt und sofort für das Antwortpaket verwendet, das von Ihrem Server durch die Firewall zurück an den Abfrager gesendet wird. Die Firewall verwaltet ein Tupel von (src ip, src port, dst ip, dst port), um die anfängliche Abfrage mit der Antwort zu verknüpfen. Da es kein Semaphor gibt, das der Firewall anzeigt, dass eine bestimmte UDP-Sitzung beendet ist und der Socket geschlossen wurde, wird der Timeout-Wert letztendlich verwendet.
rnxrx

2

Ihr NTP-Server befindet sich hinter Ihrer NAT (Firewall). UDP ist aus Sicht der Anwendung und des Betriebssystems verbindungslos und für die meisten Netzwerkgeräte unterwegs.

Für Ihre NAT-Firewall wird jedoch aufgezeichnet, wann immer ein UDP-Paket ausgeht, sodass eine Antwort vom anderen Ende an denselben Computer in Ihrem Netzwerk umgeleitet wird. Diese werden von der Firewall als "Verbindungen" bezeichnet.

Theoretisch weiß das NAT, dass der externe Port der bekannte NTP-Port sein wird, aber es sieht so aus, als ob Ihre Firewall dies nicht unterstützt. Wenn dies Ihre einzige Verwendung für UDP über diese Firewall ist, können Sie das Verbindungszeitlimit auf einen kleineren Wert festlegen. Alternativ können Sie, wenn Sie dies nach Anwendungsport festlegen können, eine kürzere Zeit (z. B. 1 Sekunde) für diesen bestimmten Port festlegen.


1
Das Timeout ist nicht NAT-spezifisch. Jede Stateful Firewall wird eine haben.
Grawity

Die Firewall macht kein NAT, sondern versucht, Pakete zu filtern, die über NAT übertragen werden, also die Beziehung zwischen Router und NAT.
Marschall Handwerk

Ein Gateway-Router zum Internet Muss NAT verwenden, da sich jeder Computer in einem Subnetz befindet. Nur der Gateway-Router verfügt über eine tatsächliche Internet-IP-Adresse. Es wäre immens verschwenderisch, wenn jeder einzelne Computer eine Sache im Internet wäre. Der Gateway-Router hat manchmal eine große Gruppe von Computern, die alle einer Internet-IP-Adresse zugeordnet sind. Es verwendet einen frechen Web-Socket, um eins zu eins zwischen eingehenden Paketen aus dem Web und Computern in seinem Netzwerk zu übersetzen. Die Leute scheinen das nicht zu verstehen.
Marschall Handwerk

0

IPv6 benötigt kein NAT, dennoch scheint es, als wären Firewalls in Bezug auf UDP statusbehaftet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.