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?
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”?
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
IPv6 nie potrzebuje NAT, ale nadal wygląda na to, że zapory ogniowe są stanowe w odniesieniu do UDP.
źródło