Ник Пост Дата
dartraiden(Alexander Gavrilov)

Если ваш роутер не позволяет развернуть OPKG на внешний накопитель или на внутреннюю память, то этот способ не для вас. Обязательно нужен OPKG!

Что это?

Модификация трафика с помощью утилит, разработанных в рамках проекта zapret, таким образом, что оборудование Роскомнадзора и провайдера не может корректно разобрать ваш трафик и осуществить цензуру.

Для “оригинальных” (родных) роутеров

Если у вас прошивка версии 3.0 или новее, обязательно установите компонент «Модули ядра подсистемы Netfilter» (веб-интерфейс управления роутером → Параметры системы → Показать компоненты). Если вы не видите этот компонент в списке дсступных, то, вероятно, сначала нужно установить компонент “Поддержка IPv6”. Также, обязательно нужо установить компонент «OPKG»

Если у вас прошивка версии 2.08 или старее, то перед установкой компонентов нужно обновиться, потому что модули Netfilter появились лишь в версии 2.09.

Для “неоригинальных” (пиратских) роутеров

На неоригинальных роутерах компоненты устанавливать невозможно. Доступны лишь те компоненты, которые сборщик прошивки в неё включил. Узнавайте, установил ли он компоненты OPKG, IPv6 и модули Netfilter. Если нет, то вы в пролёте.

nfqws

Автоматическая установка (теоретически, кроме YouTube может разблокировать доступ к прочим заблокированным сайтам).

В ядре KeeneticOS есть баг, приводящий к утечке памяти при использовании nfqws. Предположительно, баг будет исправлен в прошивке 4.2 beta 3.

tpws

tpws имеет смысл пробовать, только если не устраивает работа nfqws

Автоматическая установка (теоретически, кроме YouTube может разблокировать доступ к прочим заблокированным сайтам). В отличие от описанной ниже ручной установки поддерживает работу на нескольких интерфейсах, что позволяет, например, настроить обход замедления и блокировок для клиентов, подключённых к VPN-серверу роутера.

Если проблемы с доступом к YouTube сохраняются на подключённых к роутеру устройствах Android, заблокируйте на роутере трафик QUIC

Межсетевой экран → Домашняя сеть → Добавить правило
Включить правило: Включено
Описание: Блокировать QUIC
Действие: Запретить
Протокол: UDP
Номер порта назначения: Равен 443
Остальные параметры оставляем без изменений

Если нужно заблокировать QUIC в других сегментах (например#, в гостевой сети), то создайте там аналогичное правило.

Если в системном журнале возникают ошибки, связанные с iptables

Установите компонент «Модули ядра подсистемы Netfilter» (веб-интерфейс управления роутером → Параметры системы → Показать компоненты).

Если в системном журнале возникают ошибки, связанные с ip6tables и ваш провайдер не поддерживает IPv6
Игнорируйте их или отключите поддержку IPv6 в файле /opt/etc/nfqws/nfqws.conf (или /opt/etc/tpws/tpws.conf):

IPV6_ENABLED=0
Устаревшее: Ручная установка (менее продвинутый вариант, оставлен здесь по историческим причинам)
  1. Обязательно устанавливаем компонент «Модули ядра подсистемы Netfilter» (веб-интерфейс управления роутером → Параметры системы → Показать компоненты).

  2. Разворачиваем Entware на внутреннем или внешнем накопителе. При разворачивании запоминаем, как назывался архив, который поместили на роутер (mips, mipsel, aarch64).

Доходим в инструкции до команды opkg update, выполняем её и ставим необходимые пакеты:

opkg install ipset curl gzip grep iptables nano
  1. Скачиваем утилиту tpws: вспоминаем, как назывался архив при разворачивании Entware, в зависимости от этого выполняем команду.
  • mips:
curl https://raw.githubusercontent.com/bol-van/zapret/master/binaries/mips32r1-msb/tpws -o /opt/usr/bin/tpws
  • mipsel:
curl https://raw.githubusercontent.com/bol-van/zapret/master/binaries/mips32r1-lsb/tpws -o /opt/usr/bin/tpws
  • aarch64:
curl https://raw.githubusercontent.com/bol-van/zapret/master/binaries/aarch64/tpws -o /opt/usr/bin/tpws

Делаем бинарник tpws исполняемым:

chmod +x /opt/usr/bin/tpws
  1. Создаём скрипт инициализацции:
nano /opt/etc/init.d/S51tpws

Открывается редактор текста, туда вставляем:

#!/bin/sh

SCRIPT=/opt/usr/bin/tpws
PIDFILE=/opt/var/run/tpws.pid
ARGS="--daemon --bind-addr 192.168.1.1 --port 999 --disorder --tlsrec=sni --split-pos=2 --hostlist=/opt/etc/zapret-hosts-user.txt --pidfile $PIDFILE"

start() { 
  if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
    echo 'Service TPWS is already running' >&2
    return 1
  fi
  $SCRIPT $ARGS
  iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j REDIRECT --to-port 999
  echo 'Started TPWS service'
}

stop() {
  iptables -t nat -D PREROUTING -i br0 -p tcp --dport 443 -j REDIRECT --to-port 999
  if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
    echo 'Service TPWS is not running' >&2
    return 1
  fi
  echo 'Stopping TPWS service...'
  kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE"
}

status() {
  if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
    echo 'Service TPWS is running'
  else
    echo 'Service TPWS is stopped'
  fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
esac

Сохраняем (Ctrl+X, в ответ на вопрос о сохранении нажимаем Y, в ответ на вопрос об имени файла нажимаем Enter).

Делаем скрипт исполняемым:

chmod +x /opt/etc/init.d/S51tpws
  1. Учим Keenetic не забывать правила. Создаём скрипт:
nano /opt/etc/ndm/netfilter.d/100-tpws.sh

Открывается редактор текста, туда вставляем:

#!/bin/sh

if [ ! -f /opt/var/run/tpws.pid ] || ! kill -0 $(cat /opt/var/run/tpws.pid); then
    exit
fi

[ "$type" == "ip6tables" ] && exit
[ "$table" != "nat" ] && exit

if [ -z "$(iptables-save 2>/dev/null | grep 999)" ]; then
    iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j REDIRECT --to-port 999
fi

Сохраняем (Ctrl+X, в ответ на вопрос о сохранении нажимаем Y, в ответ на вопрос об имени файла нажимаем Enter).

192.168.1.1 — адрес вашего роутера в локальной сети. Если он у вас другой, то соответственно скорректируйте в скрипте.

Делаем скрипт исполняемым

chmod +x /opt/etc/ndm/netfilter.d/100-tpws.sh
  1. Добавляем в /opt/etc/zapret-hosts-user.txt домен googlevideo.com:
echo googlevideo.com > /opt/etc/zapret-hosts-user.txt
  1. Запускаем TPWS:
/opt/etc/init.d/S51tpws start

Если вы хоите всё удалить и вернуть как было, то в веб-интерфейсе роутера в разделе настроек OPKG выставьте «Накопитель: не выбран», а также удалите правила, созданные на шаге 8.

Что можно улучшить (TODO):

  • (сделано) При остановке init-скрипта убивать правила файерволла, даже если TPWS не запущен (мало ли, вдруг его кто-то раньше укокошил)
  • (сделано) В 100-tpws.sh переместить проверку на запущенность TPWS в начало скрипта (если он не запущен, то нет смысла делать прочие проверки)
  • (сделано) Убрать правила для 80 порта (ютуб не работает по HTTP)
  • (сделано) Добавить ограничение по домену (чтобы применять дурение только к ютубу)
  • (сделано) Добавить правила для блокировки QUIC
  • (сделано) Потестировать не только ручной, но и автоматический запуск при запуске роутера
  • (сделано) Возможно, собрать пакет, чтобы всё ставилось одной командой из Entware
2024-08-04T00:12:36.122Z
ValdikSS

182 posts were split to a new topic: Обсуждение: Обход замедления YouTube и блокировок на прошивке Keenetic с помощью nfqws / tpws (zapret)

2024-08-17T08:59:07.014Z
ValdikSS2024-08-06T11:02:15.025Z
ValdikSS2024-08-17T08:59:58.428Z