Co tak naprawdę oznacza limit czasu połączenia UDP?

18

Ponieważ UDP jest protokołem bezpołączeniowym, jestem zdezorientowany ustawieniem zapory Sonicwall Firewall dla „Limit czasu połączenia UDP”. Domyślnie ustawiony jest na 30 sekund - ale co dokładnie upływa po 30 sekundach?

WTF?

Oto moja rzeczywista sytuacja: mam serwer NTP w puli ntp.org, który obsługuje około 3000 zapytań na minutę. To trochę obciąża moją klasę SOHO TZ-200 - nie pod względem przepustowości; ale pod względem liczby połączeń przez nią przechodzi. Zastanawiam się, czy połączenia UDP są w jakiś sposób „utrzymywane przy życiu” na SonicWall; mimo że są (z definicji) bezpołączeniowe.

Czego tu brakuje? Co oznacza SonicWall, gdy mówi o „przekroczeniu limitu czasu połączenia UDP”?

Jon Wadsworth
źródło
Zapory zwykle zezwalają pakietom na połączenie, które zostało ustanowione przez maszynę w zaporze. Ale UDP nie ma połączeń. Zatem do wyboru są wszystkie pakiety UDP, blokowanie wszystkich pakietów UDP lub próba odgadnięcia, jakie są „połączenia UDP”, więc zezwalaj tylko na pakiety, które są częścią tych „połączeń”. Wszyscy (?) Dostawcy zapory stosują ostatnie podejście.
user253751,
Jak opisał immibis. Z powodu translacji adresów sieciowych lub translacji NAT router internetowy / podsieciowy zezwala tylko na TCP (praktycznie cały ruch to TCP), w którym klient w podsieci inicjuje połączenie. Ponieważ nie ma możliwości przypisania portu dla NAT, jeśli połączenie jest przychodzące. Skąd router wie, do kogo go wysłać? UDP nawet nie ma połączenia, więc w jaki sposób router obsługuje przychodzące żądania UDP? Jednym ze sposobów jest śledzenie wychodzących pakietów UDP.
marszałkowski
Jeśli hostujesz serwer, powinieneś przekierować porty, na których spodziewasz się otrzymywać połączenia, ale bądź przygotowany na wszystko.
marszałkowiec

Odpowiedzi:

16

Chociaż nie ma formalnego „połączenia” z UDP, nadal istnieje konwencja, że ​​klienci wysyłają żądania i oczekują, że otrzymają odpowiedzi ze źródłowym adresem IP i portem zamienionym na adres IP i port Destinatoin.

Stanowe zapory ogniowe i NAT zakładają zatem, że pakiety z daną kombinacją źródłowego adresu IP / źródłowego portu / docelowego adresu IP / docelowego portu i odpowiedniej kombinacji z zamianą źródła i miejsca docelowego tworzą część „połączenia”. Umożliwia to stosowanie reguł takich jak „tylko połączenia wychodzące” do UDP i umożliwia stosowanie translacji odwrotnej do pakietów odpowiedzi.

Niestety zapora sieciowa lub NAT nie mają możliwości sprawdzenia, kiedy klient zakończył rozmowę z serwerem. Musi więc poczekać na przekroczenie limitu czasu przed usunięciem wpisu ze swoich tabel śledzenia stanu. To jest ustawiony limit czasu.

Zasadniczo byłoby możliwe zbudowanie skrzynki NAT, która używałaby bezstanowego podejścia do przekazywania portów przy jednoczesnym zachowaniu stanowego podejścia do połączeń wychodzących, ale łatwiej jest po prostu używać stanowego NAT dla wszystkiego i wygląda na to, że robi to twój sprzedawca.

Niestety, jak odkryłeś, jest to do bani dla bezstanowych serwerów UDP obsługujących dużą liczbę małych żądań. W efekcie zapora zużywa znacznie więcej zasobów niż sam serwer.

Peter Green
źródło
2
Dzięki za wspaniałą odpowiedź, Peter! W moim przypadku SonicWall pozwala mi skrócić „limit czasu połączenia” UDP dla określonej reguły zapory, więc zmniejszę zasadę NTP do 5 sekund (z domyślnej wartości 30).
Jon Wadsworth
1
Uwaga: po zrobieniu tego zobaczyłem, że „łączna liczba połączeń” zgłoszona przez Sonicwall spadła z ~ 1500 do ~ 400. Doskonały! Jeszcze raz dziękuję za świetną odpowiedź.
Jon Wadsworth,
1
Należy pamiętać, że większość protokołów przesyłania strumieniowego korzysta z protokołu UDP, który obejmuje część VOIP dotyczącą multimediów (po wynegocjowaniu za pomocą SIP). To przekroczenie limitu czasu może spowodować problem, jeśli nie ma ruchu (np. Zawieszone połączenie, wyciszone obie strony itp.), Ponieważ nie wszystkie telefony VOIP (twarde lub miękkie) świetnie nadają się do renegocjacji połączenia medialnego w przypadku upuszczenia portów . Inni używają „utrzymywania przy życiu”, wysyłając okresowo niewielkie sygnały, które mogą być dalej niż 5 sekund.
Chuck van der Linden
11

Zapora sieciowa utrzymuje tablicę połączeń dla połączeń UDP. Na przykład, gdy wysyłasz zapytanie DNS, zapora ogniowa tworzy wpis dla tego przepływu, aby odpowiedź DNS mogła wrócić z powrotem do sieci. Wpisy w tabeli wygasają po 30 sekundach braku aktywności.

Ron Trunk
źródło
Dzięki Ron. Czy możesz skomentować tę tabelę połączeń w odniesieniu do połączeń przychodzących? Ponieważ mój serwer NTP jest w środku, tak naprawdę nie powinno być potrzeby „utrzymywania otwartych drzwi” dla tych połączeń przychodzących, ponieważ mój serwer wewnątrz zawsze może wrócić do źródła (mam szeroko otwarte połączenie wychodzące zasady). Dzięki za szybką odpowiedź!
Jon Wadsworth
3
Tabela połączeń jest budowana bez względu na kierunek połączenia i jest faktycznie używana natychmiast dla pakietu odpowiedzi wracającego z serwera przez zaporę wracającą do kwerendy. Zapora sieciowa utrzymuje krotkę (src ip, src port, dst ip, dst port), aby powiązać zapytanie początkowe z odpowiedzią. Ponieważ tak naprawdę nie ma semafora wskazującego zaporze ogniowej, że konkretna sesja UDP została zakończona, a gniazdo zostało zamknięte, wartość limitu czasu jest w końcu używana.
rnxrx
2

Twój serwer NTP znajduje się za NAT (zaporą ogniową). UDP jest bezpołączeniowy z punktu widzenia aplikacji i systemu operacyjnego oraz większości urządzeń sieciowych po drodze.

Jednak w przypadku zapory NAT rejestruje się, gdy wychodzi pakiet UDP, dzięki czemu odpowiedź z drugiego końca zostanie przekierowana na ten sam komputer w sieci. Zapory te nazywane są „połączeniami”.

Teraz teoretycznie NAT wie, że port zewnętrzny będzie znanym portem NTP, ale wygląda na to, że twoja zapora ogniowa tego nie obsługuje. Jeśli jest to jedyne użycie UDP przez tę zaporę, możesz ustawić Limit czasu połączenia na mniejszą liczbę. Alternatywnie, jeśli pozwala to ustawić według portu aplikacji, możesz ustawić mniejszy czas (powiedzmy 1 sekundę) dla tego konkretnego portu.

Alan
źródło
1
Limit czasu nie jest specyficzny dla NAT; każda zapora stanowa będzie miała taką.
user1686,
Zapora sieciowa nie wykonuje translacji NAT, lecz próbuje filtrować pakiety, które przechodzą przez NAT, a więc wzajemne relacje z routerem i NAT.
marszałkowski
Router bramy do Internetu musi wykorzystywać NAT, ponieważ każdy komputer znajduje się w podsieci, tylko router bramy ma rzeczywisty internetowy adres IP. Byłoby ogromnie marnotrawstwem, gdyby każdy komputer był czymś w Internecie. Router bramy ma czasem dużą grupę komputerów, z których wszystkie są powiązane z jednym internetowym adresem IP. Wykorzystuje berkly gniazdo sieciowe, aby móc tłumaczyć jeden na jeden między przychodzącymi pakietami z sieci a komputerami w sieci. Ludzie zdają się tego nie rozumieć.
marszałkowski
0

IPv6 nie potrzebuje NAT, ale nadal wygląda na to, że zapory ogniowe są stanowe w odniesieniu do UDP.

David Howard
źródło