Files
allow-domains/README.md
itdoginfo 81486d267d Update
2024-07-17 11:08:19 +03:00

123 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Поможем провайдерам в эпоху дефицита сетевого оборудования, заблокируем самостоятельно ресурсы на своих роутерах и, таким образом, снизим нагрузку на их оборудование!
Зарубежные сервисы пусть знают, что их ресурсы никому не нужны и мы сами у себя их блокируем!
# Списки заблокированных ресурсов
Списки доступны в нескольких форматах:
- RAW - это список доменов и субдоменов
- Dnsmasq-ipset - список для Dnsmasq в формате ipset (OpenWrt <= 21.02)
- Dnsmasq-nfset - список для Dnsmasq в формате nftables set (OpenWrt >=22.03). Для работы c доменами в 22.03 требуется [установить](https://t.me/itdoginfo/12) dnsmasq-full из snapshot версии.
Конфигурация для Dnsmasq добавляет все зарезолвенные IP-адреса в set `vpn-domain`. И можно оперировать этим списком. Заблокировать, конечно же, все эти IP к чертям.
## Россия
Есть два списка, один для людей, находящихся в России, второй для людей заграницей.
- Ресурсы, которые блокирует провайдеры по наводке РКН, и зарубежные ресурсы, которые сами блокируют российские подсети. (inside)
- Списки российских ресурсов, которые доступны только для российских подсетей. Для людей за границей, которым нужен доступ к российским сервисам. Использовать вместе с VPN расположенным в России. (outside)
Находятся в каталоге **Russia**.
Inside:
- [RAW](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-raw.lst)
- [Dnsmasq nfset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-dnsmasq-nfset.lst)
- [Dnsmasq ipset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-dnsmasq-ipset.lst)
- [ClashX](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-clashx.lst)
- [KVAS](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-kvas.lst)
Outside:
- [RAW](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/outside-raw.lst)
- [Dnsmasq nfset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/outside-dnsmasq-nfset.lst)
- [Dnsmasq ipset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/outside-dnsmasq-ipset.lst)
- [ClashX](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/outside-clashx.lst)
- [KVAS](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/outside-kvas.lst)
### Почему нет некоторых популярных доменов?
#### Картинки YouTube
Ресурс **yt3.ggpht.com** резолвится в IP-адреса балансировщиков Google. Меняется страна, появляется реклама.
Ресурс **play.google.com** есть только в списках без wildcard.
## Украина
Список заблокированных ресурсов в Украине. Списки берутся с ресурсов https://uablacklist.net/ и https://zaborona.help/.
Преобразуются в формат Dnsmasq. При этом удаляются домены с кириллическими буквами.
Находятся в каталоге **Ukraine**.
- [Dnsmasq nfset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Ukraine/inside-dnsmasq-nfset.lst)
- [Dnsmasq ipset](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Ukraine/inside-dnsmasq-ipset.lst)
- [ClashX](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Ukraine/inside-clashx.lst)
- [KVAS](https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Ukraine/inside-kvas.lst)
# Как добавить домены в списки?
Приветствуется добавление новых доменов и удаление неактуальных.
Есть несколько вариантов:
1. Для каждого списка создана тема в Discussion. Пишите туда отдельные домены или прям список доменов сервиса
- [Россия inside](https://github.com/itdoginfo/allow-domains/discussions/1)
- [Россия outside](https://github.com/itdoginfo/allow-domains/discussions/2)
2. Сделать PR. Списки находятся в `src`. Если у ресурса больше двух доменов, сгруппируйте их отдельным списком и вставьте заголовок ресурса с помощью `#`. Ориентируйтесь на то, как уже сделаны другие
3. Напишите в [чат](https://t.me/itdogchat)
# Как заблокировать на своём роутере?
Пример блокировки по списку доменов на роутере с OpenWrt 23.05.
Нужен dnsmasq-full. Загружаем конфиг в tmp/dnsmasq.d. Создаём ipset, все пакеты к ip-адресам из этого ipset будут дропаться.
```
cd /tmp/ && opkg download dnsmasq-full
opkg remove dnsmasq && opkg install dnsmasq-full --cache /tmp/
cp /etc/config/dhcp /etc/config/dhcp-old && mv /etc/config/dhcp-opkg /etc/config/dhcp
cd /tmp/dnsmasq.d && wget https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-dnsmasq-nfset.lst -O domains.conf
uci add firewall ipset
uci set firewall.@ipset[-1].name='vpn_domains'
uci set firewall.@ipset[-1].match='dst_net'
uci add firewall rule
uci set firewall.@rule[-1]=rule
uci set firewall.@rule[-1].name='block_domains'
uci set firewall.@rule[-1].src='lan'
uci set firewall.@rule[-1].dest='*'
uci set firewall.@rule[-1].proto='all'
uci set firewall.@rule[-1].ipset='vpn_domains'
uci set firewall.@rule[-1].family='ipv4'
uci set firewall.@rule[-1].target='DROP'
uci commit
service firewall restart && service dnsmasq restart
```
# Как устроено?
Список **Russia inside** формируются из списка https://community.antifilter.download/ и списка `src/Russia-domains-inside.lst`. Они объединяются, удаляются повторы и сортируются по алфавиту.
Список **Russia outside** формируется из списка `src/Russia-domains-outside.lst`. Также происходит сортировка по алфавиту.
Dnmasq работает по wildcard. Это означает, что при добавлении домена `domain.com`, в списки IP-адресов будут добавляться также все поддомены `subdomain.domain.com`. Поэтому Dnsmasq списки состоят только из доменов второго уровня. Повторы удаляются, удаляются субдомены с `google.com` и происходит сортировка.
Списки обновляются при каждом коммите в репозитории с помощью GitHub Actions. Также скрипт `convert.py` запускается каждые 8 часов, чтобы синхронизировать списки со сторонними сервисами.
При формировании Dnsmasq списков происходит тестирование конфигов с помощью [Dnsmasq action](https://github.com/marketplace/actions/dnsmasq-configuration-check).
# Можно ли добавить другие форматы и страны?
Да, это приветствуется. Для этого создайте issue или напишите в чат.
## Для добавления новой страны необходимо указать
- Название страны
- Список заблокированных ресурсов. Нет ограничений на количество, их может быть хоть 5, хоть 100. Можно будет пополнять со временем
- Есть ли ресурсы, которые уже собирают такие списки
## Для добавления нового формата необходимо указать
- Название формата и пример форматирования доменов в этом формате
- Как этот формат можно использовать, с примером (Программа, конфигурация)
- Можно ли как-то тестировать список, если да, то как. Это нужно, чтобы пользователи всегда имели рабочий конфиг
Также вы можете создать PR с уже необходимыми правками. В этом случае опишите это всё в его Description.
---
[Telegram-канал с обновлениями](https://t.me/itdoginfo)