Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
network:squid [2023/12/13 09:43] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1network:squid [2025/11/05 23:09] (текущий) mirocow
Строка 1: Строка 1:
 +{{tag>squid proxy rokomnadzor blocklist}}
  
 +====== Squid ======
 +
 +  * [[https://gist.github.com/search?p=3&q=squid.conf&utf8=%E2%9C%93|Примеры настроек]]
 +  * [[http://break-people.ru/cmsmade/index.php?page=articles_squid_practice|Советы]]
 +
 +===== Параметры =====
 +
 +  * src: IP-адрес источника (клиент) 
 +  * dst: IP-адрес назначения (сервер) 
 +  * myip: локальный IP-адрес клиентского соединения 
 +  * srcdomain: имя домена источника (клиент) 
 +  * dstdomain: имя домена назначения (сервер) 
 +  * srcdom_regex: шаблон регулярного выражения источника (клиент) 
 +  * dstdom_regex: шаблон регулярного выражения назначения (сервер) 
 +  * time: время дня и день недели 
 +  * url_regex: шаблон регулярного выражения для URL 
 +  * urlpath_regex: шаблон регулярного выражения для части URL, исключая протокол и имя хоста 
 +  * port: номер порта назначения (сервер) 
 +  * myport: номер локального порта, куда подключается клиент 
 +  * proto: тип протокола передачи (http, ftp, etc) 
 +  * method: метод HTTP-запроса (get, post, etc) 
 +  * browser: шаблон регулярного выражения, совпадающего с заголовком user-agent из запроса 
 +  * ident: строка совпадения с именем пользователя 
 +  * ident_regex: шаблон регулярного выражения имени пользователя 
 +  * src_as: номер Автономной Системы источника (клиент) 
 +  * dst_as: номер Автономной Системы назначения (сервер) 
 +  * proxy_auth: аутентификация пользователя через внешний процесс 
 +  * proxy_auth_regex: регулярное выражение аутентификации пользователя через внешний процесс 
 +  * snmp_community: строка SNMP-сообщества 
 +  * maxconn: ограничение максимального кол-ва соединений с одного клиентского IP-адреса 
 +  * req_mime_type: шаблон регулярного выражения для заголовка content-type запроса 
 +  * arp: Ethernet (MAC)-адрес 
 +
 +===== Darknet (onion) + i2p + hosts =====
 +
 +==== Обход запрета роскомнадзора ====
 +
 +nano /etc/squid/getblocklist.sh
 +<code bash>
 +#!/bin/bash
 +# git clone https://github.com/zapret-info/z-i.git
 +curl -s -X GET -L https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv > /etc/squid/blocklist.csv
 +URL_LIST=`cat /etc/squid/blocklist.csv | csvtool -t ';' col 2 - | sed -e '/^[0-9\.]*$/d' -e '/^[0-9\.a-z-]*$/!d' | \
 +sed -e 's/^.*\.\([a-z0-9\-]\{2,63\}\.[a-z0-9\-]\{2,63\}\)$/\1/' | sort | uniq 2>/dev/null`;
 +cat /dev/null > /etc/squid/eais.list 2>/dev/null;
 +for URL in $URL_LIST; do
 +        echo $URL | sed -e 's/\./\\\./g' -e 's/^/^http(s)?:\\\/\\\/([a-zA-Z0-9]+\\.)?/g' -e 's/$/.*$/g' >> /etc/squid/eais.list 2>/dev/null;
 +done;
 +/usr/sbin/squid3 -k reconfigure
 +</code>
 +
 +==== cron ====
 +
 +crontab -e
 +<code bash>
 +1 2 * * * /bin/bash /etc/squid/getblocklist.sh
 +</code>
 +==== squid.conf ====
 +
 +nano /etc/squid/squid.conf
 +<code bash>
 +########################################################
 +# ОСНОВНЫЕ НАСТРОЙКИ SQUID
 +########################################################
 +
 +# Отключение проверки имён хостов
 +check_hostnames off
 +
 +# Определение локальных сетей (RFC 1918 и др.)
 +acl localnet src 0.0.0.1-0.255.255.255     # "this" network (LAN)
 +acl localnet src 10.0.0.0/                   # RFC 1918 private
 +acl localnet src 100.64.0.0/10               # RFC 6598 CGN
 +acl localnet src 169.254.0.0/16               # RFC 3927 link-local
 +acl localnet src 172.16.0.0/12               # RFC 1918 private
 +acl localnet src 192.168.0.0/16              # RFC 1918 private
 +acl localnet src fc00::/                     # RFC 4193 private
 +acl localnet src fe80::/10                     # RFC 4291 link-local
 +
 +# ACL для блокируемых/специальных ресурсов
 +acl russia_block_list url_regex "/etc/squid/eais.list"
 +acl onion_list url_regex -i .*://.*\.onion\/.*
 +
 +# ACL для разделения HTTP/HTTPS .i2p
 +acl i2p_http url_regex -i ^http://.*\.i2p(/.*)?$
 +acl i2p_https url_regex -i ^https://.*\.i2p(/.*)?$
 +
 +########################################################
 +# НАСТРОЙКА PEER-СЕРВЕРОВ (UPSTREAM PROXIES)
 +########################################################
 +
 +# HTTP .i2p → порт 4444
 +cache_peer 192.168.1.131 parent 4444 4444 no-digest \
 +    protocol=http \
 +    name=i2p_http_peer \
 +    connect-timeout=15 \
 +    request-timeout=60 \
 +    dead-peer-timeout=30 \
 +    round-robin
 +
 +# HTTPS .i2p → порт 4445
 +cache_peer 192.168.1.131 parent 4445 4445 no-digest \
 +    protocol=https \
 +    name=i2p_https_peer \
 +    connect-timeout=15 \
 +    request-timeout=60 \
 +    dead-peer-timeout=30 \
 +    round-robin
 +
 +# privoxy peer (порт 8118)
 +cache_peer 192.168.1.131 parent 8118 8118 no-digest \
 +    protocol=http \
 +    name=privoxy_peer \
 +    connect-timeout=15 \
 +    request-timeout=60 \
 +    dead-peer-timeout=30 \
 +    round-robin
 +
 +########################################################
 +# ПРАВИЛА ДОСТУПА К PEER-СЕРВЕРАМ
 +########################################################
 +
 +cache_peer_access i2p_http_peer allow i2p_http
 +cache_peer_access i2p_https_peer allow i2p_https
 +cache_peer_access privoxy_peer allow onion_list
 +cache_peer_access privoxy_peer allow russia_block_list
 +
 +########################################################
 +# ПРАВИЛА НАПРАВЛЕНИЯ ЗАПРОСОВ
 +########################################################
 +
 +# never_direct: всегда использовать peer для указанных ACL
 +never_direct allow i2p_http
 +never_direct allow i2p_https
 +never_direct allow onion_list
 +never_direct allow russia_block_list
 +never_direct deny localnet
 +
 +# always_direct: никогда не использовать peer для указанных ACL
 +always_direct deny i2p_http
 +always_direct deny i2p_https
 +always_direct deny onion_list
 +always_direct deny russia_block_list
 +always_direct allow localnet
 +
 +########################################################
 +# HTTP-ДОСТУП И БЕЗОПАСНОСТЬ
 +########################################################
 +
 +# Разрешить доступ из локальных сетей
 +http_access allow localnet
 +
 +# Файл hosts для разрешения имён
 +hosts_file /etc/squid/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
 +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
 +
 +# Запретить доступ к небезопасным портам
 +http_access deny !Safe_ports
 +
 +# Запретить CONNECT к небезопасным SSL-портам
 +http_access deny CONNECT !SSL_ports
 +
 +# Доступ для менеджера (только локально)
 +http_access allow localhost manager
 +http_access deny manager
 +
 +# Включить дополнительные конфиги
 +include /etc/squid/conf.d/*
 +
 +# Разрешить локальный доступ
 +http_access allow localhost
 +
 +# Запретить всё остальное
 +http_access deny all
 +
 +########################################################
 +# ПОРТ И ДИРЕКТОРИИ
 +########################################################
 +
 +# Основной HTTP-порт прокси
 +http_port 3128
 +
 +# Директория для coredump
 +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 .                     20%     4320
 +
 +########################################################
 +# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ (ОПЦИОНАЛЬНО)
 +########################################################
 +
 +# Уровень отладки (раскомментировать при необходимости)
 +# debug_options ALL,1 33,2
 +
 +# Логирование доступа (стандартный формат)
 +access_log /var/log/squid/access.log
 +
 +# Логирование кэша
 +cache_log /var/log/squid/cache.log
 +
 +# Размер кэша (пример: 10 ГБ)
 +# cache_dir ufs /var/spool/squid 10240 16 256
 +
 +# Максимальный размер объекта в кэше (например, 100 МБ)
 +# maximum_object_size 102400 KB
 +
 +# DNS-серверы (если требуется)
 +# dns_nameservers 8.8.8.8 1.1.1.1
 +# dns_timeout 15 seconds
 +</code>
 +
 +  - cache_peer_access - какие(чьи) запросы к доменам, порождают соединение, проходящее через соседский прокси
 +  - never_direct - какие(чьи) запросы, НИКОГДА НЕ БУДУТ идти напрямую в Интернет
 +  - always_direct - какие(чьи) запросы, будут ВСЕГДА идти напрямую в Интернет
 +
 +===== Удаление комментариев =====
 +
 +<code bash>
 +$ cat /etc/squid/squid.conf | grep "^[^#;]"
 +</code>
 +===== Перенаправление на другой сайт =====
 +
 +<code>
 +acl redirect url_regex czx.to
 +http_access deny redirect
 +deny_info http://video.czx.to redirect
 +</code>