Гибкое проксирование трафика (встречаем Clash for Windows)

Спасибо @Mistuha, за комментарий, когда искал решение описанной задачи плюнул на Clash for Windows, слету показалось сложным, но все-таки подробнее изучил решение, в отличии от ProxyCap умеет работать с V2Ray и в TUN режиме. Пожалуй сам остановлюсь на нем, поскольку предложенная альтернатива — NekoBox (под Windows — NekoRay) последний раз обновлялась с почти год назад (если кому интересно все же могу выкатить пост по нему). Заметил на гите бетку NekoRay, если пощупаю выкачу пост, снова спасибо @Mistuha :)

Нам понадобятся

  • Прокси (Shadowsocks, VMess, с этими протоколами CWF умеет работать, проверено)

  • Clash for Windows (CFW)

  • Программы и домены, трафик которых будем вертеть — Google Chrome, Firefox...

О протоколах

Shadowsocks:

  • Лучше использовать, если вам нужна простота и скорость.

  • Подходит для большинства пользователей, которые не хотят углубляться в детали.

VMess (V2Ray):

  • Лучше использовать, если вам важна высокая безопасность и расширенные функции.

  • Подходит для сложных сетей и пользователей, которые требуют гибкости в настройках.

  • Лучше защищает трафик и предлагает дополнительные возможности, такие как мультиплексирование.

Если вы новичок, Shadowsocks может быть удобнее. Для более опытных пользователей с повышенными требованиями к безопасности стоит рассмотреть VMess.

Не имеет значения где раздобудете прокси, у меня к примеру имеется виртуальный сервер с 3X-UI на борту, где я и создал подключение с протоколом Shadowsocks (тут пример моей конфигурации) и VMess (для данного протокола ниже).

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Конфигурация подключения в 3X-UI

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Добавление пользователя к подключению в 3X-UI

Примеры файлов конфигураций (.yaml) скармливаемый в Clash for Windows

Для Shadowsocks

proxies:

- name: "My Shadowsocks Proxy"

type: ss

server: *.*.*.*

port: 55223

cipher: chacha20-ietf-poly1305

password: BnGHogsywi0ZpTgSnjca2ELit5XhMnG/l9pTCiHjHTI=

udp: true

proxy-groups:

- name: "Proxy"

type: select

proxies:

- "My Shadowsocks Proxy"

- DIRECT

rules:

- DOMAIN-SUFFIX,google.com,Proxy

- DOMAIN-SUFFIX,www.myip.com,Proxy

- DOMAIN-KEYWORD,myip,Proxy

- DOMAIN-KEYWORD,2ip,Proxy

- PROCESS-NAME,firefox.exe,Proxy

- PROCESS-NAME,Guilded.exe,Proxy

# - GEOIP,RU,DIRECT

# - GEOIP,US,DIRECT

- MATCH,DIRECT

Для VMess (V2Ray)

proxies:

- name: "My V2Ray Proxy"

type: vmess

server: *.*.*.*

port: 27789

uuid: 1f829011-0a5f-4e1c-a797-57aa709ec672

alterId: 0

cipher: auto

tls: false

network: tcp

ws-opts:

path: "/"

headers:

Host: ""

proxy-groups:

- name: "Proxy"

type: select

proxies:

- "My V2Ray Proxy"

- DIRECT

rules:

- DOMAIN-SUFFIX,google.com,Proxy

- DOMAIN-SUFFIX,www.myip.com,Proxy

- DOMAIN-KEYWORD,myip,Proxy

- DOMAIN-KEYWORD,2ip,Proxy

- PROCESS-NAME,firefox.exe,Proxy

- PROCESS-NAME,Guilded.exe,Proxy

# - GEOIP,RU,DIRECT

# - GEOIP,US,DIRECT

- MATCH,DIRECT

Описание параметров конфигурации

Вот полное описание параметров конфигурации Clash for Windows, которое объединяет оба ваших конфига (для Shadowsocks и V2Ray):

Раздел proxies

  • proxies: Главный раздел для определения всех прокси-серверов, доступных в конфигурации.

    • name: Имя для идентификации прокси-сервера. Например, "My Shadowsocks Proxy" или "My V2Ray Proxy".

    • type: Тип прокси-сервера. Возможные значения:

      • ss: для Shadowsocks.

      • vmess: для V2Ray.

    • server: IP-адрес или доменное имя прокси-сервера. Например, 102.130.133.251.

    • port: Порт, на котором прокси-сервер принимает соединения. Например, 55223 для Shadowsocks и 27789 для V2Ray.

    • cipher: Алгоритм шифрования, используемый для защиты данных. Например, chacha20-ietf-poly1305 для Shadowsocks и auto для V2Ray, который выбирает наиболее подходящий метод.

    • password: Пароль для аутентификации на прокси-сервере. Применяется только для Shadowsocks.

    • uuid: Уникальный идентификатор пользователя (UUID) для аутентификации в V2Ray. Например, 1f829011-0a5f-4e1c-a797-57aa709ec672.

    • alterId: Значение, определяющее дополнительную идентификацию (обычно используется в V2Ray). Для V2Ray может быть 0.

    • tls: Логическое значение (true/false), указывающее, используется ли шифрование TLS для V2Ray. Например, false.

    • network: Протокол передачи данных для V2Ray, например, tcp для использования TCP-протокола.

    • ws-opts: Настройки для WebSocket (если используется). Включает:

      • path: Путь для WebSocket-соединения, например, "/".

      • headers: Дополнительные заголовки, такие как Host, которые могут быть необходимы для маршрутизации трафика.

Раздел proxy-groups

  • proxy-groups: Раздел для определения групп прокси-серверов, доступных для выбора в интерфейсе Clash.

    • name: Название группы прокси-серверов. Например, "Proxy".

    • type: Тип группы, например:

      • select: Позволяет пользователю вручную выбирать прокси из списка.

      • url-test: Автоматически выбирает лучший прокси по времени отклика (не используется в ваших конфигурациях).

    • proxies: Список названий прокси-серверов, входящих в эту группу. Например, список может содержать "My Shadowsocks Proxy" и "My V2Ray Proxy".

Раздел rules

  • rules: Этот раздел определяет правила маршрутизации, которые управляют тем, какой трафик будет проксироваться и каким образом.

    • DOMAIN-SUFFIX: Прокси для всех запросов к доменам с указанным суффиксом.

    • DOMAIN-KEYWORD: Прокси для всех запросов к доменам, содержащим указанное ключевое слово.

    • PROCESS-NAME: Прокси для трафика, исходящего от конкретного процесса.

    • GEOIP: Правило для маршрутизации трафика на основе географического положения IP-адресов.

    • MATCH: Правило по умолчанию, которое применяется, если ни одно из предыдущих правил не сработало.

Заключение

Эти параметры помогают настроить и очень гибко управлять проксированием трафика, обеспечивая возможность выбора между несколькими прокси-серверами и контролируя, как и какой трафик проходит через них.

Подробное описание моих правил (для общего понимания)

DOMAIN-SUFFIX,google.com,Proxy

Это правило указывает проксировать все запросы к доменам, оканчивающимся на google.com через группу прокси Proxy. Например, любые страницы, такие как www.google.com, mail.google.com, drive.google.com будут направлены через прокси.

DOMAIN-SUFFIX,www.myip.com,Proxy

Аналогично первому правилу, все запросы к www.myip.com будут проходить через прокси Proxy. Это используется для того, чтобы тестировать IP-адрес через сайт www.myip.com.

DOMAIN-KEYWORD,myip,Proxy

Это правило указывает, что любые домены, содержащие ключевое слово myip в любом месте, будут проксироваться через Proxy. Например, такие домены как myip.com, checkmyip.net и т. д. будут направлены через прокси.

DOMAIN-KEYWORD,2ip,Proxy

Здесь указано, что все домены, содержащие слово 2ip, также будут проксироваться через Proxy. Это может включать сайты вроде 2ip.ru, которые используют этот поддомен для проверки IP-адресов.

PROCESS-NAME,firefox.exe,Proxy

Это правило указывает, что все трафики, исходящие от процесса firefox.exe, должны быть направлены через прокси Proxy. Это означает, что при использовании браузера Firefox весь интернет-трафик будет проходить через прокси.

PROCESS-NAME,Guilded.exe,Proxy

Здесь указано, что весь трафик приложения Guilded.exe (клиент для геймеров, аналог Discord) будет направлен через прокси Proxy.

Закомментированные строки не действуют (так как перед ними стоит символ #), но их можно легко активировать, убрав комментарий. Сейчас они отключены, и вот их назначение:

GEOIP,RU,DIRECT

Это правило отключено, но если бы оно было активным, оно направляло бы весь трафик с геолокацией Россия (RU) напрямую (не через прокси), минуя прокси-сервер. Оно могло бы быть полезным, если вы не хотите проксировать запросы к российским сайтам.

GEOIP,US,DIRECT

Это правило, если активировать, перенаправляло бы трафик для всех IP-адресов, относящихся к США (US) напрямую, также минуя прокси. Это может быть полезно, если не требуется проксировать сайты с американскими IP.

MATCH,DIRECT

Правило MATCH является универсальным, оно действует как правило "по умолчанию". Если ни одно из вышеуказанных правил не сработало, то оно применяет это правило и направляет все оставшиеся запросы напрямую (DIRECT).

Резюме для приложений:

  • Firefox и Guilded: Все их трафики полностью идут через прокси.

  • Chrome: Нет явного правила для chrome.exe, следовательно, его трафик будет направляться напрямую, если он не попадает под доменные правила.

  • Сайты с доменами google.com, myip.com, 2ip.ru: Эти домены всегда будут проксироваться, независимо от браузера или процесса.

  • Сайты с американскими и российскими IP-адресами: Сейчас их трафик идет через прокси, так как правила для GEOIP,RU и GEOIP,US закомментированы.

Перейдем к Clash for Windows

Основная настройка софта производится на вкладке General

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Для работы в режиме TUN обязательно необходимо установить Service Mode

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Файлы конфигурации можно добавить с помощью Drag and Drop (перетащив в окно программы). Далее выбираем конфигурацию, согласно которой необходимо работать (выбранная отмечена зеленым)

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

На вкладке Proxies можно выбрать способ проксирования, в данном случае согласно правилам, описанным в файлах конфигурации

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Connections отражает текущие соединения

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Программа работает следующим образом: имеются два подключения DIRECT (поднимается по умолчанию для всего трафика) и PROXY (добавляется вручную), весь трафик идет через нее. Согласно способу проксированию, при необходимости правилам, определенный трафик уходит через PROXY. В режиме DIRECT на вкладке Proxies весь трафик будет проходить через локальный прокси, но не будет направляться на внешний прокси-сервер, соответственно правила игнорируются.

Итог

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Firefox (проксирование всего трафика программы)

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Google Chrome (проксирование доменов и по ключевым словам, согласно правилам)

Гибкое проксирование трафика (встречаем Clash for Windows) Windows, Инструкция, Программа, Discord, Прокси, Tcp, Udp, Сети, Длиннопост, Google Chrome, Firefox, 2ip

Guilded (проксирование всего трафика программы)