SQUID

Squid — это популярный HTTP-прокси с открытым исходным кодом. Установка:

Но лучше создать ещё пользователей:

Параллельно можно запустить proxy Socks5 сервер Dante

Настройка плагина (дополнения) к браузеру

Удаление Squid:

Пример файла настройки:

# для анонимности польователей:
forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all


# список внутренних IP-сетей, которым разрешен доступ в интернет
acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
acl localnet src fc00::/7       	# RFC 4193 local private network range
acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines

# Порт SSL для подключений по HTTPS-протоколу
acl SSL_ports port 443

# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP
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

# Правила. все правила в squid обрабатываются последовательно, до первого
# вхождения, поэтому если мы разместим более общее правило перед более
# частным, то оно работать не будет. То же самое справедливо и для
# перекрывающихся правил — сработает самое первое.

# Запретить доступ к портам, отсутствующим в списке выше
http_access deny !Safe_ports

# Запретить метод CONNECT не на SSL-порт
# http_access deny CONNECT !SSL_ports

# Разрешить только локальное управление кэшем
http_access allow localhost manager
http_access deny manager

# Запретить доступ к локальным ресурсам сервера через прокси,
# чтобы исключить внешний доступ к приложениям, принимающим
# подключения по внутренним адресам (127.0.0.1 и др.).
# http_access deny to_localhost

include /etc/squid/conf.d/*

# Белый список размещаем перез запрещающим, например:
# разблокируем страничку Вконтакте новостного портала Утро.ру:
# (в RegExp точка должна быть экранирована обратным слешом)
# acl whitelist url_regex -i vk\.com\/na_utro_ru
# http_access deny whitelist

# правило запрета загрузки файлов
# acl blockexentions urlpath_regex -i .mp4 .mp3 .zip .pdf
# http_access deny blockexentions

# правило фильтрации по ключевым словам в имени (-i нечувствителен к регистру)
# my\.mail\.ru - часть ресурса заблокируем
# http\:\/\/(www\.)?auto\.ru или \.auto\.ru - заблокировать сайт auto.ru
# acl blockkeyword url_regex -i sex porno
# http_access deny blockkeyword

# правило фильтрация по имени домена (можно в файле прописать)
acl block dstdomain .instagram.com .facebook.com .x.com
http_access deny block

# или правило фильтрация для определённых ip:
# acl url_filtred src 10.0.0.100-10.0.0.199
# acl block dstdomain .instagram.com .facebook.com
# http_access deny block url_filtred

# фильтровать интернет для всех, кроме определенной группы:
# acl url_no_filtred src 10.0.0.127 10.0.0.100
# http_access deny blacklist !url_no_filtred

# правило для авторизации
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated

# выше добавляем правила, ниже не добавляем
http_access allow localhost

# Последнее правило, блокирует все, что не было разрешено выше
http_access deny all

# Порт подключения
http_port 3128

# Путь сохранения дампов аварийного завершения
coredump_dir /var/spool/squid

# Время жизни объектов в минутах для протоколов FTP и GOPHER
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
# Нулевое время жизни для динамического контента
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
# Время жизни по умолчанию
refresh_pattern .		0	20%	4320

# Не использовать IPv6, если доступен IPv4-адрес. По умолчанию, приоритет отдается протоколу IPv6, что может привести к ошибкам соединения, если IPv6 недоступен
dns_v4_first on