Всем привет! Прошлая статья про прозрачное проксирование HTTPS с помощью Squid'a была вполне успешной. Приходило по почте множество отзывов об успешной установке данной системы. Но также и поступали письма с просьбами о помощи. Проблемы были вполне решаемыми. Но не так давно обратилась ко мне одна коллега с просьбой о помощи в установке этой системы на х64 архитектуре (Debian). Тут мы озадачились. Во-первых, оказалось, что прошлая статья непригодна для этого по причине отсутствия нужных исходников в репозитории Debian (там теперь 3.5.10). Найти нужные в первой статье Debian'овские исходники не удалось, а checkinstall выдавал странные ошибки. Во-вторых, хотелось более универсального решения, которое бы без проблем работало и на х64, и на х86, и (по-возможности) на других дистрибутивах. Решение было найдено. Получилось небольшое дополнение к предыдущей статье + некоторые уточнения. Данная инструкция позволяет скомпилировать как х86, так и х64 версии Squid'a и создать соответствующие пакеты. Инструкция будет разбита на несколько пунктов и подпунктов. Если интересно, идем под кат:
Идем по-порядку.
1)
а) Для начала, подготовимся к сборке пакетов:
Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не загадить себе Хоум.
б) Далее скачаем Libressl:
в) А теперь собираем:
2) Теперь можно установить Libressl:
После установки необходимо настроить использование LibreSSL по-умолчанию:
Проверим, получилось ли поставить Libressl:
Если выхлоп консоли похожий, то все получилось. Идем дальше.
3) На очереди Libecap.
а) Необходимо отредактировать sources.list, включив туда исходники из ветки testing (это необходимо, так как нам нужно компилировать новый libecap, который в свою очередь необходим для сборки Squid):
Обновим кеш пакетов:
А теперь скачаем из Testing нужные исходники:
Далее соберем libecap:
б) Удалим старье, и установим новье:
4) Подобрались к компиляции самого Squid'a.
а) Качаемпоследний самый работающий снэпшот Squid'a:
Распакуем:
б) Качаем патч для bio.cc, и патчим:
5) А этот этап один из самых ответственных. Необходимо сконфигурировать Squid с нужными опциями. В предыдущей статье использовался файл debian/rules, но компилировать Squid в этой инструкции мы будем с помощью make, и создавать пакеты будем с помощью checkinstall. Поэтому опций будет побольше. И вот какие:
Будьте предельно внимательны. Нас больше интересуют, как и в предыдущей статье, три опции: --enable-ssl, --enable-ssl-crtd, --with-openssl. Остальные опции можете изменять в соответствие с вашими предпочтениями (если хотите их менять, обязательно прочитайте документацию по конфигурированию).
6) Теперь мы добрались до компилирования.
а) Компилируем.
б) Неоднозначный этап. Необходимо создать директории /usr/share/squid/ и /usr/share/squid/icons, иначе следующий этап не выполнится из-за отсутствия этих папок (почему checkinstall их сам не создает, я не разбирался, к сожалению):
в) А теперь создаем установочные пакеты:
7) Мы подходим к финалу. Устанавливаем Squid:
8) Пробуем запустить squid:
И видим большую ФИГУ! Надо же… Пробуем по-старинке:
И тоже видим большую ФИГУ. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Не беда. Создадим сами нужный сервис systemd:
Со следующим содержимым:
Включим созданный сервис
9) Да, вы правы, это еще не все. Так как мы компилировали полностью оригинальные исходники (за исключением патча на bio.cc), конфигурационные файлы у нас установились вида squid.conf.default, mime.conf.default и т.п. Конечно же, Squid о них и не слышал. Переименуем их в Squid'очитаемый вид:
10) И это еще не все=) Необходимо вручную создать папку для логов Squid'a и назначить ей соответствующие права:
11) И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!
Если выхлоп консоли выглядит похоже, а точнее в нем нет ошибок и обязательно присутствует строка «Active: active (running)», то вы успешно установили себе Squid с поддержкой прозрачного проксирования HTTPS! Поздравляю!
Если не хочется ничего компилировать, то можете скачать архив с готовыми deb пакетами (x64 версия!). Если будете устанавливать из готовых пакетов, то вам нужны будут шаги: 2, 3(б), 7, 8, 9, 10, 11.
Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.
Конфигурационный файл Squid'a с нужными директивами, описание работы и т.п. читайте в предыдущей статье!
UPD 11.12.15: По просьбе пользователя nikitasius проверил Cloudflare. Товарищ nikitasius писал в комментариях:
UPD 14.12.15: спешу поделиться с коллегами отличной новостью! Я нашел способ заставить работать новые версии Squid'а без особых танцев с бубном! Необходимо, чтобы у клиентов и в настройках Squid'а были одинаковые DNS! В моем случае, на шлюзе с Кальмаром крутится Bind. Назначил клиентам именно его, и Кальмару директивой:
. После чего все успешно заработало. Проверено на Squid 4.0.3, собрана БЕЗ Libressl!
UPD 16.12.15: Пакеты для Centos!
UPD 25.04.16: Просьба для тех, кто тестировал х64 сборку написать, все ли работает. Есть сообщения о глюках, в частности сильная нагрузка на ЦП после истечении некоторого времени и последующий сегфолт. Сам проверить пока-что не могу
UPD 04.05.18: написал новую статью, где решается проблема глюков новых версий Squid + в логах красивые доменные имена вместо ip адресов + обход блокировок РКН.
Идем по-порядку.
1)
а) Для начала, подготовимся к сборке пакетов:
Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не загадить себе Хоум.
б) Далее скачаем Libressl:
в) А теперь собираем:
2) Теперь можно установить Libressl:
После установки необходимо настроить использование LibreSSL по-умолчанию:
Проверим, получилось ли поставить Libressl:
Если выхлоп консоли похожий, то все получилось. Идем дальше.
3) На очереди Libecap.
а) Необходимо отредактировать sources.list, включив туда исходники из ветки testing (это необходимо, так как нам нужно компилировать новый libecap, который в свою очередь необходим для сборки Squid):
Обновим кеш пакетов:
А теперь скачаем из Testing нужные исходники:
Далее соберем libecap:
б) Удалим старье, и установим новье:
4) Подобрались к компиляции самого Squid'a.
а) Качаем
Распакуем:
б) Качаем патч для bio.cc, и патчим:
5) А этот этап один из самых ответственных. Необходимо сконфигурировать Squid с нужными опциями. В предыдущей статье использовался файл debian/rules, но компилировать Squid в этой инструкции мы будем с помощью make, и создавать пакеты будем с помощью checkinstall. Поэтому опций будет побольше. И вот какие:
Будьте предельно внимательны. Нас больше интересуют, как и в предыдущей статье, три опции: --enable-ssl, --enable-ssl-crtd, --with-openssl. Остальные опции можете изменять в соответствие с вашими предпочтениями (если хотите их менять, обязательно прочитайте документацию по конфигурированию).
6) Теперь мы добрались до компилирования.
а) Компилируем.
б) Неоднозначный этап. Необходимо создать директории /usr/share/squid/ и /usr/share/squid/icons, иначе следующий этап не выполнится из-за отсутствия этих папок (почему checkinstall их сам не создает, я не разбирался, к сожалению):
в) А теперь создаем установочные пакеты:
7) Мы подходим к финалу. Устанавливаем Squid:
Заголовок спойлера
8) Пробуем запустить squid:
И видим большую ФИГУ! Надо же… Пробуем по-старинке:
И тоже видим большую ФИГУ. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Не беда. Создадим сами нужный сервис systemd:
Со следующим содержимым:
Заголовок спойлера
Включим созданный сервис
9) Да, вы правы, это еще не все. Так как мы компилировали полностью оригинальные исходники (за исключением патча на bio.cc), конфигурационные файлы у нас установились вида squid.conf.default, mime.conf.default и т.п. Конечно же, Squid о них и не слышал. Переименуем их в Squid'очитаемый вид:
10) И это еще не все=) Необходимо вручную создать папку для логов Squid'a и назначить ей соответствующие права:
11) И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!
Если выхлоп консоли выглядит похоже, а точнее в нем нет ошибок и обязательно присутствует строка «Active: active (running)», то вы успешно установили себе Squid с поддержкой прозрачного проксирования HTTPS! Поздравляю!
Если не хочется ничего компилировать, то можете скачать архив с готовыми deb пакетами (x64 версия!). Если будете устанавливать из готовых пакетов, то вам нужны будут шаги: 2, 3(б), 7, 8, 9, 10, 11.
Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.
Конфигурационный файл Squid'a с нужными директивами, описание работы и т.п. читайте в предыдущей статье!
Спасибо Татьяне Илларионовой и разработчикам Squid'a за помощь в создании данного рецепта!
UPD 11.12.15: По просьбе пользователя nikitasius проверил Cloudflare. Товарищ nikitasius писал в комментариях:
Видимо для сайтов, которые за Cloudflare такая система корректно работать не будет…Так вот, проверил. Добавил один из его доменов из Cloudflare в черный список блокировки HTTPS, на него браузер не заходит, но на другие домены, которые прописаны в сертификате, браузер спокойно заходит. Так что, проверка Cloudflare пройдена
У них как правило пачка доменов в сертификатах.
В случае, если example.com находится в одном сертификате с freepron.cum, кальмар сработает на freepron, если последний в локальном бане, так?
UPD 14.12.15: спешу поделиться с коллегами отличной новостью! Я нашел способ заставить работать новые версии Squid'а без особых танцев с бубном! Необходимо, чтобы у клиентов и в настройках Squid'а были одинаковые DNS! В моем случае, на шлюзе с Кальмаром крутится Bind. Назначил клиентам именно его, и Кальмару директивой:
. После чего все успешно заработало. Проверено на Squid 4.0.3, собрана БЕЗ Libressl!
UPD 16.12.15: Пакеты для Centos!
UPD 25.04.16: Просьба для тех, кто тестировал х64 сборку написать, все ли работает. Есть сообщения о глюках, в частности сильная нагрузка на ЦП после истечении некоторого времени и последующий сегфолт. Сам проверить пока-что не могу
UPD 04.05.18: написал новую статью, где решается проблема глюков новых версий Squid + в логах красивые доменные имена вместо ip адресов + обход блокировок РКН.
Комментариев нет:
Отправить комментарий