Стабильный релиз прокси-сервера Squid 4
Как сообщает opennet.ru после трех лет разработки представлен стабильный релиз прокси-сервера Squid 4.1, готовый для промышленного использования (выпуски 4.0.x имели статус бета-версий). После придания ветке 4.x статуса стабильной, в ней отныне будут производиться только исправления уязвимостей и проблем со стабильностью, также допускается внесение небольших оптимизаций. Разработка новых возможностей будет производиться в новой экспериментальной ветке 5.0. Пользователям прошлой стабильной ветки 3.5 рекомендуется спланировать переход на ветку 4.1.
Основные новшества Squid 4:
- В соответствии с требованиями RFC 6176 прекращено использование устаревшей версии протокола SSLv2 при согласовании защищенных соединений. Поддержка SSLv3 пока сохранена, но объявлена устаревшей и рекомендована для отключения (tls-options=NO_SSLv3);
- Реализована возможность установки безопасных соединений с сервисами, используя протокол ICAP поверх TLS. Шифрованный вариант ICAP доступен через URL icaps:// и сетевой порт 11344;
- Добавлена директива url_lfs_rewrite для перенаправления всех запросов к файлам, которые присутствуют в заданном каталоге, через локальный HTTP-сервер;
- Добавлена директива on_unsupported_protocol при помощи котороой можно организовать проброс через прокси трафика, отличного от HTTP;
- Реализована опция "queue-size=N" для настройки максимального размера очереди к обработчикам (helper);
- В директиве external_acl_type добавлена возможность использования кодов форматирования вывода для лога (logformat);
- Добавлена экспериментальная поддержка сборки с библиотекой GnuTLS вместо OpenSSL (при сборке с GnuTLS пока не поддерживаются режим SSL-Bump и генерация сертификатов);
- Переименованы обработчики, связанные с TLS/SSL (вместо ssl_ теперь используется префикс tls_);
- На смену аутентификатору basic_msnt_multi_domain_auth, зависящему от Samba, пришел basic_smb_lm_auth;
- Добавлена директива url_rewrite_timeout;
- Транзакции в логе теперь отражаются с точностью до долей миллисекунд;
- Добавлена опция "ext_kerberos_ldap_group_acl -n" для отключения автоматического применения SASL/GSSAPI;
- В обработчике security_file_certgen появился режим хранения сертификата только в оперативной памяти;
- Добавлена поддержка HTTP-заголовка "Expect: 100-continue";
- Изменен механизм параллельного запуска обработчиков. Из-за возможности организации DoS-атак вместо применения массивов для инициирования запуска параллельных каналов теперь следует использовать очереди запросов со специальным 64-разрядным идентификатором;
- Значение по умолчанию в ACL localnet (внутренние блоки IP-адресов, такие как 192.168.0.0) приведено в соответствие с RFC 6890;
- Добавлены настройки request_start_timeout и pconn_lifetime для задания таймаутов для постоянно поддерживаемых соединений;
- В web-интерфейс cachemgr добавлен блок статистики для срабатываний шаблонов refresh_pattern в контексте отдельных правил;
- Кодовая база переведена на использование стандарта C++11;
- Переработан код HTTP-парсера;
- Улучшена поддержка распараллеливания на многопроцессорных и многоядерных системах. Задействованы атомарные операции C++11. Обеспечено корректное автоопределение модулей ввода/вывода IpcIo и Mmapped, что позволило расширить спектр систем, на которых по умолчанию применяется хранилище кэша Rock;
- Функции обработки сигналов вынесены из основного фонового процесса в управляющий процесс, PID которого теперь записывается в файл squid.pid. Данное изменение позволило обеспечить интеграцию с внешними системами управления фоновыми процессами, такими как Upstart и systemd;
- В исполняемом файле squid добавлена поддержка длинных параметров командной строки (--foo). Например, добавлен параметр "--foreground" для запуска основного процесса без перехода в фоновый режим (например, удобно применять вместе с опцией "-z" чтобы дождаться завершения инициализации кэша, а не возвращать управление сразу);
- Прекращена поддержка директивы cache_peer_domain, обработчика basic_msnt_multi_domain_auth, опций refresh_pattern ignore-auth и ignore-must-revalidate, а также встроенного парсера ESI (Edge Side Includes), вместо которого следует использовать парсеры из библиотек libxml2 или libexpat.