Clash
Clash - это прокси-сервер написанный на Go, который использует правила для проксирования запросов. Основная область применения - это выборочный обход блокировок, вместо заворачивания всего трафика в прокси. Плюс такого подхода в том, что если правительство начинает целенаправленно бороться с впн/прокси (Китай, Туркменистан), то клиент постоянно подключенный к одному айпи, который находится за пределами страны вызывает подозрения, а айпи банится. Для РФ это не особо актуально, но раз смог Туркменистан, то возможно сможет и РКН. Так же, часть сайтов сознательно отгородились от РФ (Dell, Oracle, Microsoft, Spotify и т.д.). Главные плюсы Clash - это невероятная гибкость, так как можно писать правила основанные на доменах, суффиксах, вайлдкардах, пространствах айпи, можно редактировать запросы скриптами, перенаправлять запросы с помощью политик. При этом само написание правил понятно любому человеку. Так же есть встроенный днс-сервер и поддержка DoH/DoT.
Clash имеет несколько версий, а именно:
- Clash
- Опенсорс, отсутствует часть функций, таких как Rule Providers, Скрипты, Поддержка TUN
- Билд с закрытым исходным кодом, который компилируется на макбуке автора. Те же фичи, что и в опенсорс версии, плюс поддержка
скриптов
,tun
,rule providers
.
- Clash.Meta Core
- Опенсорс, поддержка дополнительных протоколов (например Hysteria) и еще несколько своих уникальных фич
Так как смысла в использовании оригинальной версии не много, то рекомендую Clash.Meta Core, к тому же практически все клиенты для ШINDOШС его поддерживают, например Clash Verge и clashN.
Сам конфиг минималистичен, это файл в формате yaml
(как и все, что касается конфигов и правил Clash). Условно весь конфиг можно разбить на 3 блока. А именно:
- Базовые настройки (порт для прокси, днс, tun-режим)
- Список прокси с их данными, группы прокси
- Правила для проксификации
В качестве примера, я буду использовать свой конфиг:
Основные настройки
Настройки прокси
Группы прокси
все прокси можно объединять в группы, как для удобства так и для более гибкого проксирования
Rule Providers
Rule Providers это файлы в yaml
формате, в которых указаны домены/суффиксы/пространства айпи адресов для проксификации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | rule-providers:
antifilter:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/cornoctopus/vault/main/antifilter.yaml"
path: ./ruleset/antifilter.yaml
nhentai:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/cornoctopus/vault/main/nhentai.yaml"
path: ./ruleset/nhentai.yaml
oracle:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/cornoctopus/vault/main/oracle.yaml"
path: ./ruleset/oracle.yaml
vk:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/VK/VK.yaml"
interval: 86400
path: ./ruleset/vk.yaml
protonmail:
behavior: classical
type: http
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Protonmail/Protonmail.yaml"
interval: 86400
path: ./ruleset/protonmail.yaml
intel:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Intel/Intel.yaml"
interval: 86400
path: ./ruleset/intel.yaml
microsoft:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml"
interval: 86400
path: ./ruleset/microsoft.yaml
xbox:
behavior: classical
type: http
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Xbox/Xbox.yaml"
interval: 86400
path: ./ruleset/xbox.yaml
advertising:
behavior: classical
type: http
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Advertising/Advertising.yaml"
interval: 86400
path: ./ruleset/advertising.yaml
advertising_domain:
behavior: domain
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Advertising/Advertising_Domain.yaml"
interval: 86400
path: ./ruleset/advertising_domain.yaml
privacy:
behavior: classical
type: http
url: "https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Privacy/Privacy.yaml"
interval: 86400
path: ./ruleset/privacy.yaml
privacy_domain:
behavior: domain
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Privacy/Privacy_Domain.yaml"
interval: 86400
path: ./ruleset/privacy_domain.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
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
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
deezer:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Deezer/Deezer.yaml"
interval: 86400
path: ./ruleset/deezer.yaml
spotify:
behavior: classical
type: http
url: "https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/Spotify/Spotify.yaml"
interval: 86400
path: ./ruleset/spotify.yaml
tidal:
behavior: classical
type: http
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/TIDAL/TIDAL.yaml"
interval: 86400
path: ./ruleset/tidal.yaml
antifilter_ip:
behavior: ipcidr
type: http
url: "https://raw.githubusercontent.com/cornoctopus/vault/main/antifilter_ip.yaml"
interval: 86400
path: ./ruleset/antifilter_ip
|
То, как именно Clash должен обрабатывать списки ресурсов из файлов rule providers
Теоретически в данном конфиге не нужно менять ничего, кроме:
- DNS
- Данных прокси
- Логично, что отредактировав прокси, нужно отредактировать и блок
proxy groups
- Блоки Rule Providers/Rules. Если убираете провайдера twitter, то соответственно его нужно убрать и из блока rules
Мониторить состояние Clash можно в:
- Терминале
- Клиентах, например Clash Verge и clashN
- Веб-интерфейсе, например для Clash и для Clash.Meta. Для этого нужно будет либо запустить дашборд в докере, либо собрать его из исходников (сам дашборд написан на js). После чего добавить в конфиг:
Более подробно о настройке Clash можно найти здесь, для Clash.Meta здесь.
Дополнительные правила для огромного количества сайтов от Blackmatrix7 здесь и мои правила в основном для РКН, antifilter содержит доменные имена, а аntifilter_ip - IP CIDR.
Правила созданы на основе community-списка от antifilter.download.
В качестве бэкенда используется Xray-core
Клиенты для Clash
Windows
Mac
- Clash Verge
- ClashX
не работает с Meta