Максимальное количество соединений Squid
У меня есть прокси-сервер Squid, который контролирует весь интернет-трафик в моей сети.
Мне нужен способ запретить пользователям загружать большие файлы (скажем,>50 МБ) в моей сети. Я запретил некоторые известные порты (например, торрент), но некоторые загрузки возможны через порт HTTP. Очевидно, я не могу запретить порт 80!
Простым решением является ограничение максимального количества одновременных соединений для каждого IP (например, 3 соединения). Это возможно в Squid с этим конфигом:
acl ACCOUNTSDEPT 192.168.5.0/24
acl limitusercon maxconn 3
http_access deny ACCOUNTSDEPT limitusercon
Но это решение действительно плохо сказывается на просмотре веб-страниц, потому что любой интеллектуальный браузер получает разные части сайта несколькими подключениями одновременно для ускорения просмотра веб-страниц. Но если у нас есть максимальное количество соединений, браузеры не смогут получить некоторые части, и веб-сайт будет показан частично, а некоторые части / изображения / рамки не будут показаны.
Итак, можем ли мы ограничить максимальное количество постоянных соединений? Я думаю, что эта политика будет работать: Укажите Максимальное количество соединений, которые живы в течение 10 секунд, но Количество одновременных соединений для каждого IP не ограничено
Но как мы можем реализовать эту политику, когда Squid? С каким конфигом?
ОБНОВИТЬ:
Artifex и Том Ньютон предложили использовать подход, ограничивающий пропускную способность, для борьбы с загрузчиками.
Но ограничение пропускной способности в Squid имеет недостаток: оно статично и не может динамически меняться. Таким образом, у человека ограниченная пропускная способность, независимо от того, сколько людей используют Интернет (возможно, никто!)
Кроме того, это решение не может помешать людям скачивать. Они все еще могут загружаться, но с меньшей скоростью.
Но если мы найдем способ разорвать постоянные соединения (или любое соединение, которое живо больше определенного времени), загрузка больших файлов будет практически невозможна (всегда есть какой-то способ!)
2 ответа
Это не решит проблему так, как вы хотите. Но по-другому, ограничивая каждый хост определенной полосой пропускания (не для запроса, а для каждого хоста)
пример взят из http://wiki.squid-cache.org/Features/DelayPools
acl only128kusers src 192.168.1.0/24
delay_pools 1
delay_class 1 3
delay_access 1 allow only128kusers
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000
это указывает, что у всех клиентов есть 512 кбит, но один ip может использовать только 128 кбит.
обратите внимание, что значения для delay_parameters выше приведены в байтах, а не в битах.
Вы пробовали: reply_body_max_size?
Из документов это звучит так же, как вы просили:
Эта опция указывает максимальный размер тела ответа. Его можно использовать для предотвращения загрузки пользователями очень больших файлов, таких как MP3 и фильмы.
Поэтому попробуйте добавить следующее в squid.conf:
reply_body_max_size 50 MB