ZeroChaos
![Clash - выборочный обход блокировок (2) Clash - выборочный обход блокировок (2)](https://i0.wp.com/zerolab.net/content/images/2022/04/logo-1.png)
В предыдущей публикации вы уже познакомились со списками с правилами в формате Clash. Теперь хотел бы более подробно ознакомить вас с Clash и привести пример конфигурации. Данный инструмент для построения туннелей на основе правил практически не упоминается в русскоязычном сегменте сети Интернет. При этом Clash очень активно используется в Китае. Поддерживает протоколы VMess/Shadowsocks/Trojan/Snell и SOCKS 5.
Приложение мультиплатформенное, ядро написано на Go. При этом под macOS, Windows и Android есть версии с удобным GUI.
Clash Core & Premium core: https://github.com/Dreamacro/clash
ClashX for macOS: https://github.com/yichengchen/clashX
ClashX Pro for macOS (Premium core – бесплатно навсегда, но с закрытым исходным кодом): https://install.appcenter.ms/users/clashx/apps/clashx-pro/distribution_groups/public
Clash for Windows: https://github.com/Fndroid/clash_for_windows_pkg/releases
Clash for Android: https://play.google.com/store/apps/details?id=com.github.kr328.clash
Нам интересна версия с premium core, поддерживающая Rule Providers, именно эти правила будут подтягиваться с clash-antifilter-lists. Под Windows и Android premium core идет по умолчанию. Под macOS версии разделены.
![Clash - выборочный обход блокировок (3) Clash - выборочный обход блокировок (3)](https://i0.wp.com/zerolab.net/content/images/2022/04/01-clash-2.jpg)
Открываем каталог с конфигурацией: Config
– Open config folder
. Создаем свою конфигурацию в формате yaml. Под Windows: Profiles
– Import
.
Пример конфигуарации zerolab.yaml
:
# (HTTP and SOCKS5 in one port)mixed-port: 7890# RESTful API for clash# external-controller: 127.0.0.1:9090allow-lan: falsemode: rulelog-level: errorproxies: # Shadowsocks # The supported ciphers (encryption methods): # aes-128-gcm aes-192-gcm aes-256-gcm # aes-128-cfb aes-192-cfb aes-256-cfb # aes-128-ctr aes-192-ctr aes-256-ctr # rc4-md5 chacha20-ietf xchacha20 # chacha20-ietf-poly1305 xchacha20-ietf-poly1305 - name: "NL-shadowsocks" type: ss server: server_address port: 28305 cipher: chacha20-ietf-poly1305 password: "password" # udp: true # vmess # cipher support auto/aes-128-gcm/chacha20-poly1305/none - name: "UK-sitename.net" type: vmess server: sitename.net port: 443 uuid: 01a961d0-fed4-48ff-83e9-4f31b2a878ab alterId: 0 cipher: auto udp: true tls: true # skip-cert-verify: true servername: sitename.net # priority over wss host network: ws ws-opts: path: /secret-path # headers: # Host: sitename.net # socks5 - name: "Tor" type: socks5 server: 192.168.1.3 port: 9150 # username: username # password: password # tls: true # skip-cert-verify: true # udp: trueproxy-groups: # select is used for selecting proxy or proxy group # you can use RESTful API to switch proxy is recommended for use in GUI. - name: PROXY type: select # disable-udp: true proxies: - NL-shadowsocks - UK-sitename.net - Tor# Premium core only (domain, ipcidr or classical)rule-providers: 1st_of_all: behavior: classical type: http url: "http://YOUR_IP:8080/1st_of_all.yaml" interval: 3600 path: ./ruleset/1st_of_all.yaml antifilter: behavior: classical type: http url: "http://YOUR_IP:8080/antifilter.yaml" interval: 43200 path: ./ruleset/antifilter.yaml telegram: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml" interval: 86400 path: ./ruleset/telegram.yaml telegram_resolve: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram_Resolve.yaml" interval: 86400 path: ./ruleset/telegram_resolve.yaml twitter: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml" interval: 86400 path: ./ruleset/twitter.yaml twitter_resolve: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter_Resolve.yaml" interval: 86400 path: ./ruleset/twitter_resolve.yaml instagram: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Instagram/Instagram.yaml" interval: 86400 path: ./ruleset/instagram.yaml facebook: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Facebook/Facebook.yaml" interval: 86400 path: ./ruleset/facebook.yaml facebook_resolve: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Facebook/Facebook_Resolve.yaml" interval: 86400 path: ./ruleset/facebook_resolve.yaml youtube: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.yaml" interval: 86400 path: ./ruleset/youtube.yaml youtube_resolve: behavior: classical type: http url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube_Resolve.yaml" interval: 86400 path: ./ruleset/youtube_resolve.yamlrules: - RULE-SET,1st_of_all,PROXY - RULE-SET,antifilter,PROXY - RULE-SET,telegram,PROXY - RULE-SET,telegram_resolve,PROXY - RULE-SET,twitter,PROXY - RULE-SET,twitter_resolve,PROXY - RULE-SET,instagram,PROXY - RULE-SET,facebook,PROXY - RULE-SET,facebook_resolve,PROXY # - RULE-SET,youtube,PROXY # - RULE-SET,youtube_resolve,PROXY - MATCH,DIRECT
В примере используются как списки из clash-antifilter-lists, так и заботливо собранные китайским пользователем blackmatrix7 на GitHub автообновляемые списки правил для всевозможных популярных сервисов. Пригодится вам, если не будете пользоваться antifilter правилами (в нем тысячи адресов и мобильные устройства могут плохо переваривать такое количество). Это наиболее полные списки, агрегируемые с нескольких источников (если вам известны другие полезные списки, не покрываемые этими, то напишите в комментариях). Пользуйтесь, при необходимости.
Правила можно прописать и напрямую в конфигурацию. Это приемлемо, если у вас небольшое количество ресурсов, доступ к которым необходимо предоставить через прокси. Использование Rule Providers позволяет не трогать основную конфигурацию, это удобно при использовании Clash на нескольких устройствах, а особенно это удобно при централизованном использовании Clash на вашем роутере (об этом поговорим в следующей статье). Интервал автоматического обновления прописывается в каждом правиле (interval
: в секундах), для своих правил его целесообразно выставить в минимальное значение. Так же вручную запросить обновление правил всегда оперативно можно в Dashboard, идущего с приложением.
Выбираем режим работы – Proxy Mode
– Rule
, включаем Set as system proxy
, выбираем через какой прокси пойдет трафик. На этом все, трафик на ресурсы, прописанные в правилах, пойдет через выбранный прокси-сервер.
Без дополнительных вложений прокси можно организовать с помощью tor-bridges-proxy. Docker-контейнер можно поднять одной командой на любом устройстве в вашей локальной сети, подключенном к сети Интернет. Будет поднят Tor и опубликован SOCKS 5 на порту 9150
, остается прописать его в конфигурации для Clash и трафик через SOCKS 5 в вашей локальной сети будет заворачиваться в Tor. У меня это работает на миниатюрном домашнем сервере. Если есть возможность приобрести VPS сервер вне российской юрисдикции, то я бы посоветовал настроить V2Ray (VMess + WebSocket + TLS + nginx + website). Но это тема для отдельной статьи.
clash proxy