В последнее время для потребителей контента YouTube настали тяжелые времена. Даже самые мелкие местечковые провайдеры уже внедрили то самое замедление видео. В некоторых случаях (как у меня) - это даже не замедление, а просто ограничение функционала. Видео попросту не грузятся.
Оставим в стороне сам факт блокировки - он небезоснователен. Но количество полезной информации, которой было накоплено на сайте за годы его, по сути, монопольного владения данной нишей - колоссальное. Поэтому, как бы там не было, приходится данную блокировку обходить.
Для этого есть несколько путей:
самый обычный VPN и его вариации - при имеющимся на него запрете он, как показывает практика, работает даже в виде стандартного OpenVPN решения (у меня именно так)
различные вариации anti-DPI решений - в виде софта, ставящегося на конечные устройства, прокси серверов (которые тоже нужно настраивать на конечных устройствах)
Но я человек ленивый. Дома достаточно много девайсов, на настройку которых не хочется тратить время. Поэтому будем выполнять обход прозрачно - на уровне роутера.
Для самых простых сценариев есть решения для роутеров на базе OpenWRT и подобного, но у меня возможности установить это нет, т.к. аппаратная часть Wi-Fi роутера не позволяет это делать. Но у меня есть домашный сервер с гипервизором на котором крутится умный дом, но так же рядом был когда-то поднят промежуточный роутер на pfSense 2.7. Для чего он мне понадобился? Да все для тех же вещей - обход блокировок через перенаправление траффика в VPN туннель на свой VPS где то в Европах, более функциональные сервисы DHCP, DNS relay и т.п., VPN сервер для подключения снаружи во внутреннюю сеть, site-to-site VPN для объединения в общую сеть дачи и гаража. Вообщем, функционала много и если у вас похожая конфигурация - покажу простой пример настройки обхода ограничения скорости для YouTube на pfSense (или любом другом unix-like роутере).
Решение
Итак, пользоваться будем решением под названием 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 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 proxy\n";
nano /etc/inc/filter.inc
$natrules .= "# ZAPRET redirection\n"; $natrules .= "rdr-anchor \"zapret\"\n";
Перезагружаемся
Если вы все сделали правильно, то в 99% случаев YouTube снова заработает на полной скорости на всех устройствах, которые будут находится в вашей LAN сети без установки на них какого-либо софта.
На некоторых провайдерах данный трюк может не пройти - там придется играться с настройками tcp proxy (tpws) - обратитесь к документации (очень подробной на самом деле).
Удачи!