Что означает время ожидания UDP-соединения?

Поскольку UDP является протоколом без установления соединения, меня путают настройки на моем Sonicwall Firewall для «UDP Connection Timeout». Он установлен по умолчанию 30 секунд - но что именно происходит после 30 секунд?

 WTF?

Вот моя реальная реальная ситуация: У меня есть NTP-сервер в пуле ntp.org, который обслуживает около 3000 запросов в минуту. Это немного напрягает мой класс SOHO TZ-200 - не в плане пропускной способности; но в терминах количества подключений, которые он проходит через него. Мне интересно, как UDP-соединения каким-то образом «поддерживаются» на SonicWall; даже если они (по определению) без установления соединения.

Что мне здесь не хватает? Что означает SonicWall, когда речь идет о «Тайм-ауте соединения UDP»?

16 голосов | спросил Jon Wadsworth 30 FriEurope/Moscow2016-12-30T02:11:15+03:00Europe/Moscow12bEurope/MoscowFri, 30 Dec 2016 02:11:15 +0300 2016, 02:11:15

4 ответа


12

Пока нет официального соединения с UDP, все еще существует соглашение о том, что клиенты отправляют запросы и ожидают ответа обратно с исходным IP-адресом и портом, замененным IP-адресом и портом Destinatoin.

Таким образом, брандмауэры с постоянным доступом и NAT допускают, что пакеты с заданной комбинацией исходного IP /исходного порта /целевого порта IP /Destination и соответствующей комбинации с исходным кодом и пунктом назначения заменяют собой часть «соединения». Это позволяет применять к UDP правила, такие как «исходящие соединения», и позволяет применять обратные переводы к пакетам ответов.

К сожалению, брандмауэр или NAT не знают, когда клиент закончит разговор с сервером. Поэтому он должен дождаться таймаута, прежде чем удалять запись из своих таблиц отслеживания состояния. Это тайм-аут, который вы устанавливаете.

В принципе можно было бы создать ящик NAT, который использовал бы апатридный подход для переадресации портов, поддерживая при этом поддерживающий состояние подход к исходящим соединениям, но проще просто использовать NAT с полным состоянием для всего, и похоже, что это то, что ваш поставщик делает.

К сожалению, поскольку вы обнаружили, что это отстой для безстоящих UDP-серверов, обслуживающих большое количество небольших запросов. Вы попадаете в ситуацию, когда брандмауэр потребляет гораздо больше ресурсов, чем сам сервер.

ответил Peter Green 30 FriEurope/Moscow2016-12-30T06:50:28+03:00Europe/Moscow12bEurope/MoscowFri, 30 Dec 2016 06:50:28 +0300 2016, 06:50:28
10

Ваш брандмауэр поддерживает таблицу соединений для соединений UDP. Например, при отправке DNS-запроса брандмауэр создает запись для этого потока, чтобы ответ DNS был возвращен в вашу сеть. Записи в таблице истекают после 30 секунд отсутствия активности.

ответил Ron Trunk 30 FriEurope/Moscow2016-12-30T02:40:30+03:00Europe/Moscow12bEurope/MoscowFri, 30 Dec 2016 02:40:30 +0300 2016, 02:40:30
2

Ваш NTP-сервер находится за вашим NAT (брандмауэром). UDP без установления соединения с точки зрения приложения и ОС и для большинства сетевых устройств на этом пути.

Однако для вашего брандмауэра NAT он записывается всякий раз, когда пакет UDP выходит, так что ответ с другого конца будет перенаправлен на тот же компьютер внутри вашей сети. Эти брандмауэры получают «соединения».

Теперь, теоретически, NAT знает, что внешний порт будет известным портом NTP, но похоже, что ваш брандмауэр не поддерживает это. Если это ваше единственное использование для UDP через этот брандмауэр, вы можете установить время ожидания соединения на меньшее число. Альтернативно, если он позволяет вам установить порт приложения, вы можете установить его на меньшее время (1 секунду, скажем) для этого конкретного порта.

ответил Alan 30 FriEurope/Moscow2016-12-30T05:43:09+03:00Europe/Moscow12bEurope/MoscowFri, 30 Dec 2016 05:43:09 +0300 2016, 05:43:09
0

IPv6 не нуждается в NAT, но по-прежнему выглядит так, как если бы брандмауэры были настроены в соответствии с UDP.

ответил David Howard 30 J0000006Europe/Moscow 2017, 10:52:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132