Если у роутера Keenetic нет USB-порта, то инструкция вам не подойдёт.
(долбите техподдержку Keenetic, чтобы они реализовали возможность развернуть Entware на внутренней памяти при отсутствии USB-порта)
Если у вас прошивка версии 3.0 или новее, обязательно установите компонент «Модули ядра подсистемы Netfilter» (веб-интерфейс управления роутером → Параметры системы → Показать компоненты). Если вы не видите этот компонент в списке дсступных, то, возможно, сначала нужно установить компонент “Поддержка IPv6”.
Если у вас прошивка версии 2.08 или старее, то нужно обновиться, потому что модули Netfilter появились лишь в версии 2.09.
Что это?
Модификация трафика с помощью утилит, разработанных в рамках проекта zapret, таким образом, что оборудование Роскомнадзора и провайдера не может корректно разобрать ваш трафик и осуществить цензуру.
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
Устаревшее: Ручная установка (менее продвинутый вариант, оставлен здесь по историческим причинам)
-
Обязательно устанавливаем компонент «Модули ядра подсистемы Netfilter» (веб-интерфейс управления роутером → Параметры системы → Показать компоненты).
-
Разворачиваем Entware на внутреннем или внешнем накопителе. При разворачивании запоминаем, как назывался архив, который поместили на роутер (mips, mipsel, aarch64).
Доходим в инструкции до команды opkg update
, выполняем её и ставим необходимые пакеты:
opkg install ipset curl gzip grep iptables nano
- Скачиваем утилиту
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
- Создаём скрипт инициализацции:
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
- Учим 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
- Добавляем в /opt/etc/zapret-hosts-user.txt домен
googlevideo.com
:
echo googlevideo.com > /opt/etc/zapret-hosts-user.txt
- Запускаем TPWS:
/opt/etc/init.d/S51tpws start
Если вы хоите всё удалить и вернуть как было, то в веб-интерфейсе роутера в разделе настроек OPKG выставьте «Накопитель: не выбран», а также удалите правила, созданные на шаге 8.
Что можно улучшить (TODO):
- (сделано)
При остановке init-скрипта убивать правила файерволла, даже если TPWS не запущен (мало ли, вдруг его кто-то раньше укокошил) - (сделано)
В100-tpws.sh
переместить проверку на запущенность TPWS в начало скрипта (если он не запущен, то нет смысла делать прочие проверки) - (сделано)
Убрать правила для 80 порта (ютуб не работает по HTTP) - (сделано)
Добавить ограничение по домену (чтобы применять дурение только к ютубу) - (сделано)
Добавить правила для блокировки QUIC - (сделано)
Потестировать не только ручной, но и автоматический запуск при запуске роутера - (сделано)
Возможно, собрать пакет, чтобы всё ставилось одной командой из Entware