В последнее время для потребителей контента YouTube настали тяжелые времена. Даже самые мелкие местечковые провайдеры уже внедрили то самое замедление видео. В некоторых случаях (как у меня) - это даже не замедление, а просто ограничение функционала. Видео попросту не грузятся.
Оставим в стороне сам факт блокировки - он небезоснователен. Но количество полезной информации, которой было накоплено на сайте за годы его, по сути, монопольного владения данной нишей - колоссальное. Поэтому, как бы там не было, приходится данную блокировку обходить.
Для этого есть несколько путей:
-
самый обычный VPN и его вариации - при имеющимся на него запрете он, как показывает практика, работает даже в виде стандартного OpenVPN решения (у меня именно так)
-
различные вариации anti-DPI решений - в виде софта, ставящегося на конечные устройства, прокси серверов (которые тоже нужно настраивать на конечных устройствах)
Но я человек ленивый. Дома достаточно много девайсов, на настройку которых не хочется тратить время. Поэтому будем выполнять обход прозрачно - на уровне роутера.
Для самых простых сценариев есть решения для роутеров на базе OpenWRT и подобного, но у меня возможности установить это нет, т.к. аппаратная часть Wi-Fi роутера не позволяет это делать. Но у меня есть домашный сервер с гипервизором на котором крутится умный дом, но так же рядом был когда-то поднят промежуточный роутер на pfSense 2.7. Для чего он мне понадобился? Да все для тех же вещей - обход блокировок через перенаправление траффика в VPN туннель на свой
Решение
Итак, пользоваться будем решением под названием zapret от bol-van (https://github.com/bol-van/zapret), которые представляет собой tcp proxy, обфусцирующую информацию, по которой DPI определяют необходимость своего вмешательства.
Нас интересует настройка для FreeBSD на котором основан pfSense. Но для начала и удобства нужно выполнить несколько действий.
-
Разрешаем подключение по ssh (в консоли виртуальной машины гипервизора выбираем пункт 14
-
Дальше уже можно подключиться к роутеру удобным SSH клиентом, что и делаем
-
Разрешаем репозитории FreeBSD, которые отключены по умолчанию
edit /usr/local/etc/pkg/repos/FreeBSD.conf edit /usr/local/etc/pkg/repos/pfSense.conf
Меняем в содержимом FreeBSD: { enabled: no } на FreeBSD: { enabled: yes }
-
Подтягиваем список пакетов
pkg update
-
Устанавливаем нужные
pkg install git nano
-
Клонируем репозиторий
mkdir /opt cd /opt git clone https://github.com/bol-van/zapret.git
-
Копируем только tpws
cp zapret/binaries/freebsd-x64/tpws /usr/local/sbin chmod +x /usr/local/sbin/tpws
-
Подготавливаем конфигурацию
nano /usr/local/etc/rc.d/zapret chmod +x /usr/local/etc/rc.d/zapret
#!/bin/sh kldload ipfw kldload ipdivert pfctl -d ; pfctl -e pfctl -a zapret -f /etc/zapret.anchor pkill ^tpws$ tpws --daemon --port=988 --enable-pf --bind-addr=127.0.0.1 --bind-linklocal=force --split-http-req=method --split-pos=2
-
Готовим якорь (em1 - заменить на свой LAN интерфейс)
nano /etc/zapret.anchor
rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988
-
Редактируем файлы pfSense (увы, без этого никак) - ищем и вставляем собержимое над сторокой вида $natrules .= "# TFTP proxyn";
nano /etc/inc/filter.inc
$natrules .= "# ZAPRET redirectionn"; $natrules .= "rdr-anchor "zapret"n";
-
Перезагружаемся
Если вы все сделали правильно, то в 99% случаев YouTube снова заработает на полной скорости на всех устройствах, которые будут находится в вашей LAN сети без установки на них какого-либо софта.
На некоторых провайдерах данный трюк может не пройти - там придется играться с настройками tcp proxy (tpws) - обратитесь к документации (очень подробной на самом деле).
Удачи!
Автор: Neuronix