Основное направление и ключевые изменения я подсказал. Вы просите детальный ответ с пошаговой инструкцией. Я не смогу, к сожалению, вам его дать, т.к. для этого нужно всё смоделировать у себя и вам описать (это требует времени, возможности и желания).
Роскомнадзор опять публично буянит и по распоряжению сверху, грозится заблокировать сайт BBC (обиделись). Но вы знаете, что делать, в час X, если этот сайт вам нужен:
1). Добавили в unblock.txt сайт bbc.com.
2). Ввели unblock_update.sh.
Если вы перехватываете DNS-запросы из локальной сети, то добавление правил будет тоже с доработкой (лучше сделать отдельным скриптом).
При поднятии интерфейса (нужно сделать скрипт на событие) выполнить команды ($IFNAME — имя интерфейса), которые завернут все пакеты с меткой в нужный интерфейс:
echo 0 > /proc/sys/net/ipv4/conf/$IFNAME/rp_filter
ip route flush table 1
ip rule del table 1
ip rule add fwmark 1 table 1 priority 1000
ip route add default dev $IFNAME table 1
При подключении к VPN обязательно запретить роутить весь трафик через него и запретить получение маршрутов (route-noexec для OpenVPN).
Все ресурсы из unblock.txt будут маршрутизироваться через VPN. Остальные через основной канал. В unblock.txt можно добавить адреса DNS-серверов, чтобы DNS-трафик шёл через VPN, тогда можно не использовать dnscrypt (если провайдер фильтрует DNS-трафик).
Во-первых, этот метод не предназначен для того, чтобы взять список из тысяч доменов (например, весь список из реестра заблокированных ресурсов) и разблокировать его. Суть и назначение этого метода в другом. Используйте другой метод для вашей задачи, например, изначальный вариант от Zolg (который используется только dnsmasq и формирует список всех заблокированных ресурсов из реестра; например тут в конце статьи можно прочесть реализацию для Keenetic) или бесплатный OpenVPN АнтиЗапрет.
Во-вторых, с чего вы взяли что unblock_ipset завершил свою работу, разблокировка могла сработать через dnsmasq, а скрипт резолвинга доменов продолжает работать. Хоть он должен делать всё в фоне, но мало ли.
В-третьих, были случаи когда на Keenetic у dropbear в Entware слетает порт. Измените кофигурационный файл dropbear через SMB.
Всё верно. Они перестанут работать (не будут резолвиться на стороне клиентов), как и реклама, которая на них ссылается.
Тут нужно быть аккуратным, потому что список рубит лишнее, и что-то нужное может перестать работать. Например, у меня kinozal.tv отвалился с таким подходом.
В 10-м шаге инструкции (уже после того, как вы проделаете все действия по инструкции и у вас всё работает, как нужно) добавьте в конфигурационный файл dnsmasq.conf строку:
Т.е. это выльется в реальности в кучку скриптов и никаких «буквально настроить мышкой» там нет. В итоге, мы имеем, что человеку, у которого уже есть маршрутизатор Keenetic или с прошивкой Padavan, на свой маршрутизатор надо поставить OpenWrt, арендовать сервер с ежемесячной оплатой, настроить его, настроить маршрутизатора с OpwenWrt (по инструкции, которой по сути нет, при этом действий будет не меньше и не проще, чем описанное в статья, и не охватывает существенные частные случаи, т.к. из ваших же данных вы оперируете только IP, а не доменами, например нет внесения IP во множество при резолвинге). Вывод — ваши слова не соответствуют действительности, и OpenWrt никакой выгоды не несёт для конкретной реализации, описанной в статье (затрата большего количества усилий, времени, денег, и при этом получите результат по эффективности хуже или, как максимум, не лучше). Какое бы крутое ядро с upstream там не было, это не играет никакой роли для конкретной задачи. Скрипач не нужен.
Если не учитывать, что это банальный ввод в заблуждение, аналогично, можно сказать, что обход блокировок делается в два клика не любом маршрутизаторе вообще — покупаете быстрый VPN-сервер и добавляете его в настройки маршрутизатора и гоните весь трафик через него — готово.
А что вы будете делать с сайтами, которые меняют свой IP (и вы их заведомо не знаете)?
Инструкция заточена под IPv4 (под IPv6 требуется доработка). У rutracker есть адрес IPv6 2a02:4680:22::214. Если обратиться к нему, то запрос пойдёт мимо обхода блокировок и будет заблокирован провайдером (если провайдер умеет блокировать IPv6).
Тема прошивки Padavan очень обширная, ещё есть особенности на разных устройствах, ещё есть особенности ранних версий. Все это напрямую не относится к самой статье. Тема Keenetic тоже обширная, и тоже в своё время была поддержка Entware-ng (и остаётся без переустановки). В общем, достаточно знать, что на свежих прошивках обоих типов устройств всё отрабатывается по инструкции идеально. Кто захочет, найдёт упоминание тут в комментариях.
Самая свежая версия от 05.11.2018 (commit 32a93db). Установка стандартная — запускаете PROMETHEUS, обновляете исходный код, собираете прошивку и устанавливаете её. Буквально несколько кликов и минуту времени (не считая несколько десятков минут, зависящие от мощности вашего компьютера, которые будут потрачены на компиляцию прошивки). Всё очень просто.
Затем форматируете (чтобы избавиться от старой версии Entware-ng) раздел/диск/внутреннюю память под Entware для установки свежей версии.
Случайно нажал «Отклонить» на комментарии человека (автоматом воспринял кнопку, как «Ответить»). Прошу прощения у него.
У него всё заработло на Padavan, но был вопрос относительно dnscrypt-proxy2 — его нет в Entware. В чём дело?
У вас используется старая версия Entware-ng, в которой пакеты и их список уже не обновляются. И пакета dnscrypt-proxy2 там нет (только первая версия). Вам нужно обновить прошивку до последней (Entware-ng было переключено на Entware в прошивке от 10.05.2018, commit 8ec3a10) и заново настроить Entware, удалив предыдущую установку Entware-ng. Пакет dnscrypt-proxy2 появится.
Не проще.
1). Добавили в unblock.txt сайт bbc.com.
2). Ввели unblock_update.sh.
Если вы перехватываете DNS-запросы из локальной сети, то добавление правил будет тоже с доработкой (лучше сделать отдельным скриптом).
При поднятии интерфейса (нужно сделать скрипт на событие) выполнить команды ($IFNAME — имя интерфейса), которые завернут все пакеты с меткой в нужный интерфейс:
Вот тут есть небольшой пример.
При подключении к VPN обязательно запретить роутить весь трафик через него и запретить получение маршрутов (route-noexec для OpenVPN).
Все ресурсы из unblock.txt будут маршрутизироваться через VPN. Остальные через основной канал. В unblock.txt можно добавить адреса DNS-серверов, чтобы DNS-трафик шёл через VPN, тогда можно не использовать dnscrypt (если провайдер фильтрует DNS-трафик).
Во-вторых, с чего вы взяли что unblock_ipset завершил свою работу, разблокировка могла сработать через dnsmasq, а скрипт резолвинга доменов продолжает работать. Хоть он должен делать всё в фоне, но мало ли.
В-третьих, были случаи когда на Keenetic у dropbear в Entware слетает порт. Измените кофигурационный файл dropbear через SMB.
Тут нужно быть аккуратным, потому что список рубит лишнее, и что-то нужное может перестать работать. Например, у меня kinozal.tv отвалился с таким подходом.
В 10-м шаге инструкции (уже после того, как вы проделаете все действия по инструкции и у вас всё работает, как нужно) добавьте в конфигурационный файл dnsmasq.conf строку:
Создайте скрипт adblock_update.sh:
Вставьте (Shift+Insert) содержимое:
Дайте права на исполнение:
Запустите скрипт adblock_update.sh (вы можете запускать его при необходимости обновления списка доменов с рекламой):
Чтобы отключить блокировку рекламных доменов, удалите строку conf-file=/opt/etc/adblock.dnsmasq из dnsmasq.conf.
Перезапустите dnsmasq.
На Padavan:
На Keenetic:
dnsmasq начнёт использовать только dnscrypt для резолвинга.
А что вы будете делать с сайтами, которые меняют свой IP (и вы их заведомо не знаете)?
По второму вопросу не подскажу.
Затем форматируете (чтобы избавиться от старой версии Entware-ng) раздел/диск/внутреннюю память под Entware для установки свежей версии.
У него всё заработло на Padavan, но был вопрос относительно dnscrypt-proxy2 — его нет в Entware. В чём дело?
У вас используется старая версия Entware-ng, в которой пакеты и их список уже не обновляются. И пакета dnscrypt-proxy2 там нет (только первая версия). Вам нужно обновить прошивку до последней (Entware-ng было переключено на Entware в прошивке от 10.05.2018, commit 8ec3a10) и заново настроить Entware, удалив предыдущую установку Entware-ng. Пакет dnscrypt-proxy2 появится.