Я создаю новый прокси-сервер с Squid & SquidClamAV.
У меня проблемы с загрузкой больших файлов. Я установил в squidclamav.conf максимальный размер 52428800 байт, что должно предотвратить сканирование файлов размером более 50 МБ.
Загрузка всего до 2 ГБ через прокси-сервер работает нормально, но файлы большего размера вызывают следующую ошибку: Ошибка протокола ICAP - система вернула: (32) Сломанный канал
В журнале сервера c-icap я получаю следующее: Пт 2 дек 10:19:36 2011, генерал, Баг в сервисе. Сообщите, пожалуйста, сервивному автору !!!!
При загрузке файла размером менее 2 ГБ в браузере мгновенно открывается окно загрузки. Как и ожидалось.
Когда вы начинаете загружать что-либо более 2 ГБ, требуется некоторое время, прежде чем появится ошибка. После / var / tmp я вижу, что он фактически начинает загрузку файла размером до 50 МБ (максимальный размер установлен в squidclamav.conf!), А затем останавливается и выдает ошибку.
Я не понимаю, почему это происходит с файлами, размер которых превышает максимальный размер в squidclamav.
Сервер представляет собой 32-битную машину с CentOS 6. C-icap скомпилирован из исходников (v0.1.7), squid из CentOS, clamd + squidclamav из repoforge.org. Ниже я добавил соответствующие файлы конфигурации.
/etc/squid/squid.conf:
...
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache \
bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache \
bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
/etc/squidclamav.conf:
maxsize 52428800
redirect http://localproxy/detecteio.php
clamd_local /var/run/clamav/clamd.sock
timeout 1
logredir 0
dnslookup 1
/etc/c-icap.conf:
PidFile /var/run/c-icap/c-icap.pid
CommandsSocket /var/run/c-icap/c-icap.ctl
Timeout 300
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 3
MaxServers 10
MinSpareThreads 10
MaxSpareThreads 20
ThreadsPerChild 10
MaxRequestsPerChild 0
Port 1344
ServerAdmin root@localhost
ServerName localproxy.domain.local
TmpDir /var/tmp
MaxMemObject 131072
DebugLevel 1
ModulesDir /usr/local/lib/c_icap
ServicesDir /usr/local/lib/c_icap
TemplateDir /usr/local/share/c_icap/templates/
TemplateDefaultLanguage en
LoadMagicFile /usr/local/etc/c-icap.magic
RemoteProxyUsers off
RemoteProxyUserHeader X-Authenticated-User
RemoteProxyUserHeaderEncoded on
ServerLog /var/log/c-icap_server.log
AccessLog /var/log/c-icap_access.log
Service squidclamav squidclamav.so
Service echo srv_echo.so
/etc/clamd.conf:
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
MaxThreads 50
ReadTimeout 300
User clamav
AllowSupplementaryGroups yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanMail yes
ScanArchive yes
ArchiveBlockEncrypted no
Как правило, 32-битные системы не могут работать с файлами размером более 2 ГБ, однако ограничение загрузки до 50 МБ предполагает, что ClamAV виноват.
Пара предложений;
1) Убедитесь, что Squid был скомпилирован с помощью '--with-large-files'
2) Протестируйте загрузку локально на коробке с помощью curl или wget (исключает проблемы с браузером / сетью)
3) Попробуйте увеличить директиву maxsize в /etc/squidclamav.conf, чтобы узнать, можете ли вы загружать файлы большего размера.
4) Отключите сканирование файлов и проведите повторную проверку.
Исходя из предоставленной конфигурации, похоже, что эта проблема не из-за squid, поскольку настроенный предел составляет 50 МБ, который является пределом для предотвращения сканирования файлов большего размера, но это не имеет ничего общего с размером загружаемого файла. Не могли бы вы подтвердить имя и версию веб-браузера, используемого для загрузки, поскольку некоторые версии Internet Explorer позволяют загружать файлы меньшего размера, чем определенный. Например, такое поведение может возникнуть, если вы попытаетесь загрузить файл размером более 2 ГБ в IE6 или более 4 ГБ в Internet Explorer 7, в этом случае вы можете переключиться на Firefox или любой другой веб-браузер. Примечание. Это ограничение на загрузку было снято в IE8. Следовательно, вы не должны испытывать такое поведение в IE8. Вы можете обратиться по этой ссылке для получения дополнительной информации http://support.microsoft.com/kb/298618 Надеюсь, эта информация будет вам полезна
Прокси-сервер был перестроен на 64-битный Centos 6. Использовалась та же конфигурация, но проблема исчезла.