В SQUID есть директива tcp_outgoing_mark, позволяющая маркировать исходящие пакеты пакеты и применять соответствующие правила маршрутизации ip rule для этих пакетов.
/etc/squid/redirect.txt (Список доменов)
acl redirect_http dstdomain "/etc/squid/redirect.txt"
acl redirect_https ssl::server_name "/etc/squid/redirect.txt"
tcp_outgoing_mark 5 redirect_http
tcp_outgoing_mark 5 redirect_https
Squid, в данном случае, работает в режиме intercept (прозрачно). Применяется алгоритм peek and splice. Сервисы, использующие ssl_v1.3 не проходять через peek. К таким сервисам относится Telegram и большиство банк-клиентов. Для этих сервисов создаётся файл ssl13.txt с указанием ip и подсетей вида:
91.108.56.0/22
91.108.4.0/22
...
После чего создаём acl вида:
acl ssl13 dst "/etc/squid/ssl13.txt"
домены для альтернативной маршрутизации указываются в файле вида /etc/squid/redirect.txt
.habr.com
.vk.com
.ok.ru
...
Если доступ к указанным ресурсам осуществляется через http, то ресурс обрабатывается через
acl redirect_http dstdomain "/etc/squid/redirect.txt"
Если https, то
acl redirect_https ssl::server_name "/etc/squid/redirect.txt"
При этом домены можно описывать в одном файле.
Далее описыаем директивы peek and splice
ssl_bump peek step1 !ssl13 (не подглядываем в заголовок сертификата для ssl_v1.3)
ssl_bump splice all
На основе подсмотренного в заголовке применяем паркировку исходящего пакета
tcp_outgoing_mark 5 redirect_http
tcp_outgoing_mark 5 redirect_https