Список сайтов которые используют/не используют Encrypted Client Hello(ECH)
- mirdukkkkk переписал с нуля скрипт и добавил параллелизм, а также CI уже на самом гитхабе, так что теперь мой дженкинс может спать спокойно.
После того как Cloudflare включил ECH часть сайтов стала доступна без проксирования. Это получается из-за того, что ТСПУ видит домен cloudflare вместо настоящего домена сайта и, таким образом, ТСПУ не может отработать и пустить трафик. Для работы нужно использовать любой DoH/DoT DNS, желательно не из России, так как они могут попросту вырезать айпи.
Идея взята у Ori с ntc.party.
Скрипт перебирает домены из Re:filter и с помощью dig
отбирает домены без ech. После этого sing-box создает rule-set, который можно использовать для обхода.
- V2fly/Xray DAT https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/ech.dat
- Sing-box ECH Rule-set https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_ech.srs
- Sing-box NoECH Rule-set https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_noech.srs
- AmneziaVPN NoECH JSON https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/amnezia.json
- DNSMasq+NFTables https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_noech_dnsmasq.lst
Нажмите сюда, чтоб раскрыть
Закинуть DAT файл в /usr/share/xray и в конфиге routing
прописать:
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"outboundTag": "proxy",
"domain": [
"ext:ech.dat:domains_noech"
]
},
{
"type": "field",
"outboundTag": "freedom",
"domain": [
"ext:ech.dat:domains_ech"
]
}
]
}
Нажмите сюда, чтоб раскрыть
Скрипт генерирует готовый rule-set, поэтому достаточно его импортировать в ваш конфиг
rule-set для доменов без ech
{
"route": {
"rule_set": [
{
"download_detour": "bypass",
"format": "binary",
"tag": "no_ech",
"type": "remote",
"url": "https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_noech.srs"
}
],
}
}
rule-set для доменов с ech
{
"route": {
"rule_set": [
{
"download_detour": "bypass",
"format": "binary",
"tag": "ech",
"type": "remote",
"url": "https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_ech.srs"
}
],
}
}
Нажмите сюда, чтоб раскрыть
Скрипт генерирует список для AmneziaVPN, который скачать можно здесь. Для этого в разделе "Раздельное туннелирование" нужно выбрать в выпадающем списке "Только адреса из списка должны открываться через VPN" и импортировать список. Самому приложению станет плохо. Очень плохо. После перезапуска приложение будет нормально работать. Все это настроено было у друга и лично не проверял.
Нажмите сюда, чтоб раскрыть
В данном способе сайты маршрутизируются по схеме от itdog, для настройки потребуется поменять родной скрипт getdomains. Он расположен в /etc/init.d/getdomains
.
#!/bin/sh /etc/rc.common
START=99
start () {
# DOMAINS=https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-dnsmasq-nfset.lst
count=0
while true; do
if curl -m 3 github.com; then
wget -qO /tmp/dnsmasq.d/domains.lst https://github.com/Akiyamov/singbox-ech-list/releases/latest/download/domains_noech_dnsmasq.lst
#curl -f $DOMAINS --output /tmp/dnsmasq.d/domains.lst
break
else
echo "GitHub is not available. Check the internet availability [$count]"
count=$((count+1))
fi
done
if dnsmasq --conf-file=/tmp/dnsmasq.d/domains.lst --test 2>&1 | grep -q "syntax check OK"; then
/etc/init.d/dnsmasq restart
fi
}
Нужно поставить следующие пакеты:
- wget
- jq
- parallel
- bind-tools
После этого можно запускать скрипт.