Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (1)
  • Какой взять клиент \ протокол VPN, чтобы раздельное тунелирование работало по домену, а не IP?

    @Mishochegg
    В 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
    Ответ написан
    1 комментарий