Раскочегариваем YouTube без установки софта на конечные устройства

в 17:55, , рубрики: freebsd, pfsense, YouTube

В последнее время для потребителей контента 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. Но для начала и удобства нужно выполнить несколько действий.

  1. Разрешаем подключение по ssh (в консоли виртуальной машины гипервизора выбираем пункт 14

    Раскочегариваем YouTube без установки софта на конечные устройства - 1
  2. Дальше уже можно подключиться к роутеру удобным SSH клиентом, что и делаем

  3. Разрешаем репозитории FreeBSD, которые отключены по умолчанию

    edit /usr/local/etc/pkg/repos/FreeBSD.conf
    edit /usr/local/etc/pkg/repos/pfSense.conf

    Меняем в содержимом FreeBSD: { enabled: no } на FreeBSD: { enabled: yes }

  4. Подтягиваем список пакетов

    pkg update
  5. Устанавливаем нужные

    pkg install git nano
  6. Клонируем репозиторий

    mkdir /opt
    cd /opt
    git clone https://github.com/bol-van/zapret.git
  7. Копируем только tpws

    cp zapret/binaries/freebsd-x64/tpws /usr/local/sbin
    chmod +x /usr/local/sbin/tpws
  8. Подготавливаем конфигурацию

    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

  9. Готовим якорь (em1 - заменить на свой LAN интерфейс)

    nano /etc/zapret.anchor
    rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988

  10. Редактируем файлы pfSense (увы, без этого никак) - ищем и вставляем собержимое над сторокой вида $natrules .= "# TFTP proxyn";

    nano /etc/inc/filter.inc
    $natrules .= "# ZAPRET redirectionn";
    $natrules .= "rdr-anchor "zapret"n";

  11. Перезагружаемся

Если вы все сделали правильно, то в 99% случаев YouTube снова заработает на полной скорости на всех устройствах, которые будут находится в вашей LAN сети без установки на них какого-либо софта.
На некоторых провайдерах данный трюк может не пройти - там придется играться с настройками tcp proxy (tpws) - обратитесь к документации (очень подробной на самом деле).

Удачи!

Автор: Neuronix

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js