imported>Vix |
imported>Vix |
Строка 1: |
Строка 1: |
| Данная инструкция позволяет скомпилировать как х86, так и х64 версии Squid'a и создать соответствующие пакеты. Инструкция будет разбита на несколько пунктов и подпунктов. Если интересно, идем под кат:<br>
| | '''Установка и настройка''' |
| '''1.''' Подготовка.<br> | |
| '''1.1''' Для начала, подготовимся к сборке пакетов:
| |
| apt-get install git fakeroot checkinstall build-essential devscripts patch
| |
| apt-cache policy squid3
| |
| apt-get build-dep squid3
| |
| apt-get build-dep libecap2
| |
| apt-get install libssl-dev libgnutls28-dev
| |
|
| |
|
| Не забудьте перейти в ту папку, где вы будете собирать исходники, чтобы не загадить себе Хоум.
| | Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt: |
| | |
| '''1.2''' Далее скачаем Libressl:
| |
| wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.1.6.tar.gz
| |
| tar -xzvf libressl-2.1.6.tar.gz
| |
| cd libressl-2.1.6
| |
| | |
| '''1.3''' А теперь собираем:
| |
| ./configure
| |
| make
| |
| checkinstall --pkgname libressl --pkgversion 2.1.6
| |
| | |
| '''2.''' Теперь можно установить Libressl:
| |
| dpkg -i libressl_2.1.6-1_amd64.deb
| |
| ldconfig
| |
| | |
| | |
| '''2.1''' После установки необходимо настроить использование LibreSSL по-умолчанию:
| |
| mv /usr/bin/openssl /usr/bin/openssl-1
| |
| update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
| |
| update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
| |
| update-alternatives --config openssl
| |
| | |
| '''*''' Проверим, получилось ли поставить Libressl:
| |
| openssl version
| |
| LibreSSL 2.1.6
| |
| | |
| Если выхлоп консоли похожий, то все получилось. Идем дальше.
| |
| | |
| '''3.''' На очереди Libecap.<br>
| |
| '''3.1''' Необходимо отредактировать sources.list, включив туда исходники из ветки testing (это необходимо, так как нам нужно компилировать новый libecap, который в свою очередь необходим для сборки Squid):
| |
| deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
| |
| | |
| '''3.2''' Обновим кеш пакетов:
| |
| apt-get update | | apt-get update |
|
| |
|
| '''3.3''' А теперь скачаем из Testing нужные исходники:
| | Для установки выполните команду: |
| apt-get source libecap3/testing | | apt-get install exim4 |
|
| |
|
| '''3.4''' Далее соберем libecap:
| | Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy: |
| cd libecap-1.0.1/
| | apt-get install exim4-daemon-heavy |
| dpkg-buildpackage -us -uc -nc -d | |
|
| |
|
| '''3.5''' Удалим старье, и установим новье:
| | Чтобы перейти к настройке, выполните команду: |
| apt-get purge libecap2 | | dpkg-reconfigure exim4-config |
| libecap3_1.0.1-2_amd64.deb
| |
| libecap3-dev_1.0.1-2_amd64.deb
| |
|
| |
|
| '''4.''' Подобрались к компиляции самого Squid'a.<br>
| | Нажмите Ok для начала настройки. |
| '''4.1''' Качаем последний самый работающий снэпшот Squid'a:
| | '''РЕШЕНИЕ ПРОБЛЕМ''' |
| wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.8.tar.gz
| | <hr> |
| | | * '''defer (-53): retry time not reached for any host''' |
| '''4.2''' Распакуем:
| | Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время. |
| tar -xf squid-3.5.8.tar.gz
| |
| cd squid-3.5.8
| |
| | |
| '''4.3''' Качаем патч для bio.cc, и патчим:
| |
| wget -O bug-4330-put_cipher_by_char-t1.patch http://bugs.squid-cache.org/attachment.cgi?id=3216
| |
| patch -p0 -i bug-4330-put_cipher_by_char-t1.patch
| |
| » patching file src/ssl/bio.cc
| |
| | |
| '''5.''' А этот этап один из самых ответственных. Необходимо сконфигурировать Squid с нужными опциями. В предыдущей статье использовался файл debian/rules, но компилировать Squid в этой инструкции мы будем с помощью make, и создавать пакеты будем с помощью checkinstall. Поэтому опций будет побольше. И вот какие: | |
| ./configure --build=x86_64-linux-gnu \
| |
| --prefix=/usr \
| |
| --includedir=${prefix}/include \
| |
| --mandir=${prefix}/share/man \
| |
| --infodir=${prefix}/share/info \
| |
| --sysconfdir=/etc \
| |
| --localstatedir=/var \
| |
| --libexecdir=${prefix}/lib/squid \
| |
| --srcdir=. \
| |
| --disable-maintainer-mode \
| |
| --disable-dependency-tracking \
| |
| --disable-silent-rules \
| |
| --datadir=/usr/share/squid \
| |
| --sysconfdir=/etc/squid \
| |
| --mandir=/usr/share/man \
| |
| --enable-inline \
| |
| --disable-arch-native \
| |
| --enable-async-io=8 \
| |
| --enable-storeio=ufs,aufs,diskd,rock \
| |
| --enable-removal-policies=lru,heap \
| |
| --enable-delay-pools \
| |
| --enable-cache-digests \
| |
| --enable-icap-client \
| |
| --enable-follow-x-forwarded-for \
| |
| --enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \
| |
| --enable-auth-digest=file,LDAP \
| |
| --enable-auth-negotiate=kerberos,wrapper \
| |
| --enable-auth-ntlm=fake,smb_lm \
| |
| --enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group \
| |
| --enable-url-rewrite-helpers=fake \
| |
| --enable-eui \
| |
| --enable-esi \
| |
| --enable-icmp \
| |
| --enable-zph-qos \
| |
| --enable-ecap \
| |
| --disable-translation \
| |
| --with-swapdir=/var/spool/squid \
| |
| --with-logdir=/var/log/squid \
| |
| --with-pidfile=/var/run/squid.pid \
| |
| --with-filedescriptors=65536 \
| |
| --with-large-files \
| |
| --with-default-user=proxy \
| |
| --enable-ssl \
| |
| --enable-ssl-crtd \
| |
| --with-openssl \
| |
| --enable-linux-netfilter \
| |
| 'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' \
| |
| 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' \
| |
| 'CPPFLAGS=-D_FORTIFY_SOURCE=2' \
| |
| 'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'
| |
| | |
| '''*''' Будьте предельно внимательны. Нас больше интересуют, как и в предыдущей статье, три опции: --enable-ssl, --enable-ssl-crtd, --with-openssl. Остальные опции можете изменять в соответствие с вашими предпочтениями (если хотите их менять, обязательно прочитайте документацию по конфигурированию).
| |
| | |
| '''6.''' Теперь мы добрались до компилирования.
| |
| '''6.1''' Компилируем.
| |
| make
| |
| | |
| '''6.2''' Неоднозначный этап. Необходимо создать директории /usr/share/squid/ и /usr/share/squid/icons, иначе следующий этап не выполнится из-за отсутствия этих папок (почему checkinstall их сам не создает, я не разбирался, к сожалению):
| |
| mkdir -p /usr/share/squid/icons
| |
| | |
| '''6.3''' А теперь создаем установочные пакеты: | |
| checkinstall --pkgname squid --pkgversion 3.5.8
| |
| | |
| '''7.''' Мы подходим к финалу. Устанавливаем Squid:
| |
| dpkg -i squid_3.5.8-1_amd64.deb
| |
| | |
| '''8.''' Пробуем запустить squid:
| |
| systemctl start squid
| |
| | |
| '''*''' И видим большую ФИГУ! Надо же… Пробуем по-старинке:
| |
| service squid start
| |
| | |
| '''*''' И тоже видим большую ФИГУ. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Не беда. <br>
| |
| '''8.1''' Создадим сами нужный сервис systemd:
| |
| touch /etc/systemd/system/squid.service
| |
| nano /etc/systemd/system/squid.service
| |
| | |
| '''*''' Со следующим содержимым:
| |
| | |
| ## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
| |
| ##
| |
| ## Squid software is distributed under GPLv2+ license and includes
| |
| ## contributions from numerous individuals and organizations.
| |
| ## Please see the COPYING and CONTRIBUTORS files for details.
| |
| ##
| |
|
| |
| [Unit]
| |
| Description=Squid Web Proxy Server
| |
| After=network.target
| |
|
| |
| [Service]
| |
| Type=simple
| |
| ExecStart=/usr/sbin/squid -sYC -N
| |
| ExecReload=/bin/kill -HUP $MAINPID
| |
| KillMode=process
| |
|
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
|
| |
| '''8.2''' Включим созданный сервис
| |
| systemctl enable squid
| |
|
| |
|
| '''9.''' Да, вы правы, это еще не все. Так как мы компилировали полностью оригинальные исходники (за исключением патча на bio.cc), конфигурационные файлы у нас установились вида squid.conf.default, mime.conf.default и т.п. Конечно же, Squid о них и не слышал. Переименуем их в Squid'очитаемый вид: | | '''решение:''' |
| cp /etc/squid/squid.conf.default /etc/squid/squid.conf
| |
| cp /etc/squid/mime.conf.default /etc/squid/mime.conf
| |
| cp /etc/squid/cachemgr.conf.default /etc/squid/cachemgr.conf
| |
| cp /etc/squid/errorpage.css.default /etc/squid/errorpage.css
| |
|
| |
|
| '''10.''' И это еще не все=) Необходимо вручную создать папку для логов Squid'a и назначить ей соответствующие права:
| | cd /var/spool/exim/db |
| mkdir /var/log/squid | | rm -f retry retry.lockfile |
| chown proxy /var/log/squid | | rm -f wait-remote_smtp wait-remote_smtp.lockfile |
| | service exim restart |
|
| |
|
| '''11.''' И вот он — финальный этап. Запуск Squid'a и проверка статуса сервиса!
| | В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf |
| systemctl start squid
| | в раздел |
|
| |
|
| systemctl status -l squid | | begin retry |
| ● squid.service - Squid Web Proxy Server | | * rcpt_451 F,1h,15m |
| Loaded: loaded (/etc/systemd/system/squid.service; enabled) | | * refused F,1h,2m |
| Active: active (running) since Пт 2015-12-04 23:32:04 YEKT; 2min 41s ago
| | * timeout_connect F,2h,2m; F,6h,1h; F,4d,6h |
| Main PID: 590 (squid)
| | * * F,2h,2m; G,16h,1h,1.5; F,4d,6h |
| CGroup: /system.slice/squid.service
| |
| ├─590 /usr/sbin/squid -sYC -N
| |
| └─591 (logfile-daemon) /var/log/squid/access.log
| |
| | |
| дек 04 23:32:04 squidX64 squid[590]: Max Swap size: 0 KB
| |
| дек 04 23:32:04 squidX64 squid[590]: Using Least Load store dir selection
| |
| дек 04 23:32:04 squidX64 squid[590]: Current Directory is /
| |
| дек 04 23:32:04 squidX64 squid[590]: Finished loading MIME types and icons.
| |
| дек 04 23:32:04 squidX64 squid[590]: HTCP Disabled.
| |
| дек 04 23:32:04 squidX64 squid[590]: Pinger socket opened on FD 16
| |
| дек 04 23:32:04 squidX64 squid[590]: Squid plugin modules loaded: 0
| |
| дек 04 23:32:04 squidX64 squid[590]: Adaptation support is off.
| |
| дек 04 23:32:04 squidX64 squid[590]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 14 flags=9
| |
| дек 04 23:32:05 squidX64 squid[590]: storeLateRelease: released 0 objects
| |
|
| |
| '''*''' Если выхлоп консоли выглядит похоже, а точнее в нем нет ошибок и обязательно присутствует строка «Active: active (running)», то вы успешно установили себе Squid с поддержкой прозрачного проксирования HTTPS! Поздравляю!
| |
|
| |
|
| '''*''' Если не хочется ничего компилировать, то можете скачать архив с готовыми deb пакетами (x64 версия!). Если будете устанавливать из готовых пакетов, то вам нужны будут шаги: 2, 3(б), 7, 8, 9, 10, 11.
| | также обратите внимание на запуск с какой опцией он стартует: -q5m |
| | * [https://www.linuxshop.ru/forum/f7/t31431--resheno-remote-smtp-defer-53-retry-time-not-reached-for-any-host-exchange-exim.html взято тут] |
|
| |
|
| '''*''' Также хочу отметить, что checkinstall позволяет создавать пакеты rpm, и вы можете этим воспользоваться. Единственное, нужно все пакеты собирать с помощью checkinstall, но я думаю, проблем с этим не будет, так как основное и самое сложное уже собрано именно checkinstall'ом.
| | * Для решения проблемы с ssl в exim4.conf.template изменить: |
| | ... |
| | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = * |
|
| |
|
| * Пример рабочего /etc/squid/squid.conf
| | на |
| acl localnet src 192.168.5.0/24 # RFC1918 possible internal network | | ... |
| | | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !* |
| acl SSL_ports port 443
| |
| acl Safe_ports port 80 # http
| |
| acl Safe_ports port 21 # ftp
| |
| acl Safe_ports port 443 # https
| |
| acl Safe_ports port 70 # gopher
| |
| acl Safe_ports port 210 # wais
| |
| acl Safe_ports port 1025-65535 # unregistered ports
| |
| acl Safe_ports port 280 # http-mgmt
| |
| acl Safe_ports port 488 # gss-http
| |
| acl Safe_ports port 591 # filemaker
| |
| acl Safe_ports port 777 # multiling http
| |
| acl CONNECT method CONNECT
| |
|
| |
| dns_nameservers 127.0.0.1
| |
| http_access deny !Safe_ports
| |
|
| |
| http_access deny CONNECT !SSL_ports
| |
|
| |
| http_access allow localhost manager
| |
| http_access deny manager
| |
|
| |
| http_access allow localnet
| |
| http_access allow localhost
| |
| http_access deny all
| |
|
| |
| #прозрачный порт указывается опцией intercept
| |
| http_port 192.168.5.1:3128 intercept
| |
| http_port 192.168.5.1:3130
| |
| https_port 192.168.5.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
| |
|
| |
|
| |
| always_direct allow all
| |
| sslproxy_cert_error allow all
| |
| sslproxy_flags DONT_VERIFY_PEER
| |
|
| |
| #укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
| |
| #acl blocked ssl::server_name "/etc/squid/blacklist_https.conf"
| |
| acl step1 at_step SslBump1
| |
| ssl_bump peek step1
| |
|
| |
| #терминируем соединение, если клиент заходит на запрещенный ресурс
| |
| #ssl_bump terminate blocked deny_users
| |
| #ssl_bump bump all
| |
| ssl_bump splice all
| |
|
| |
| sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
| |
|
| |
| coredump_dir /var/spool/squid
| |
| refresh_pattern ^ftp: 1440 20% 10080
| |
| refresh_pattern ^gopher: 1440 0% 1440
| |
| refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
| |
| refresh_pattern . 0 20% 4320
| |
| cache_dir aufs /var/spool/squid 512 49 256
| |
| maximum_object_size 61440 KB
| |
| minimum_object_size 3 KB
| |
|
| |
| cache_swap_low 90
| |
| cache_swap_high 95
| |
| maximum_object_size_in_memory 256 KB
| |
| memory_replacement_policy lru
| |
| logfile_rotate 4
| |
|
| |
|
| * не забываем создать ssl сертификат для squid: | | * Если нужно жестко указать порт smtp, то: |
| | | ... |
| | dc_smarthost='mail.myhost.ru::25' |
| | ... |
|
| |
|
| '''ИСТОЧНИКИ:''' | | '''ИСТОЧНИКИ:''' |
| <hr> | | <hr> |
| * [https://habr.com/ru/post/272733/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (х86, х64 — универсальная инструкция)] | | * [https://qna.habr.com/q/146009 Exim и внешний SMTP сервер, как заставить ходить почту?] |
| * [https://habr.com/ru/post/267851/ «Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)] | | * [https://1cloud.ru/help/linux/nastrojka-exim4 Настройка EXIM4 для отправки почтовых сообщений в Linux] |
| | * [https://serverspace.by/support/help/nastroika-exim-4-na-ubuntu/ Ubuntu. Настройка Exim4] |