у меня есть Кальмар прокси-сервер, который контролирует весь интернет-трафик в моей сети.
Мне нужен способ запретить пользователям загружать большие файлы (скажем,> 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? С каким конфигом?
артифекс и Том Ньютон предложили использовать подход с ограничением полосы пропускания для борьбы с загрузчиками.
Но ограничение пропускной способности в Squid имеет недостаток: оно статично и не может изменяться динамически. Таким образом, у человека ограниченная полоса пропускания, независимо от того, сколько людей используют Интернет (а может, никто!)
Кроме того, это решение не может помешать людям скачивать файлы. Они все еще могут загружаться, но с меньшей скоростью.
Но если мы найдем способ прервать постоянные соединения (или любое соединение, которое существует более определенного времени), загрузка больших файлов будет почти невозможно (всегда есть выход!)
Это не решит проблему так, как вы хотите. Но по-другому, ограничивая каждый хост определенной полосой пропускания (не на запрос, а на хост)
пример взят из 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