Ускоряем кэш серверы YouTube. Не VPN

d4d38ce0c8f292be75240a4cce50e170.png

Недавно попалась статья на Хабре — «Решаем проблему устаревания кэширующих серверов. Смотрим на телевизоре. Не VPN» от автора @CyberexTech проделал все шаги по ней, но с моим провайдером YouTube не заработал. Соответственно решил опробовать другие решения, одно из которых в итоге сработало, настроил его также через Raspberry Pi. В этой статье делюсь опытом настройки на случай, если решение от @CyberexTech у вас не сработало.

Предисловие

Попробовал различные решения byedpi, zapret и youtubeUnblock. В итоге у моего провайдера сработало только последнее. Мотивация примерно такая же, как и у всех, хотелось настроить работу YouTube на телевизоре, чтобы моя бабуля могла смотреть ролики про зверушек.

Ясно, что на компьютере можно локально установить сервис, но как быть с телевизором. В прошивку телевизора с таким запросом не полезешь, значит нужно либо менять/добавлять роутер на ОС OpenWrt и плясать с бубном, чтобы его настроить, либо добавить в сеть ещё одно звено, которое будет «портить» транзитный tcp трафик, благодаря чему возобновляется работа кэширующих серверов YouTube.

В моём случае я выбрал добавить ещё одно звено, тем более через него можно пропускать трафик не только с телевизора, но и с ПК и с телефона тоже, в общем с любого устройства, подключенного в домашнюю локальную сеть.

Для тестирования настоятельно рекомендую использовать VirtualBox, т.к. сразу может не получиться пробиться к кэширующим серверам YouTube. Для подобного сервиса вероятно подойдёт любой одноплатник независимо от его мощности, например RaspberryPi или OrangePi, фактически любое устройство с Linux на борту, т.к. этот сервис просто не потребляет много ресурсов.

Установка и настройка необходимого ПО

1. Разрешить ipv4 port forward трафик

Первым делом необходимо зайти в файл /etc/sysctl.conf и раскоментировать там строчку net.ipv4.ip_forward=1, чтобы разрешить транзитный трафик через одноплатник.

vim /etc/sysctl.conf

Найти и раскомментировать

net.ipv4.ip_forward=1

Выполнить команду, чтобы применить настройки

sysctl -p

Теперь одноплатник будет проксировать интернет трафик, если подключиться к нему в качестве основного шлюза.

2. Установить зависимости

Необходимые пакеты для сборки и c/c++ компилятор

apt install gcc make autoconf automake pkg-config libtool

Заголовки ядра линукса

apt install linux-headers-$(uname -r)

Пакеты iptables и git

apt install iptables git

3. Развёртывание и настройка сервиса

Клонируем репозиторий и заходим в папку с ним

git clone https://github.com/Waujito/youtubeUnblock.git
cd youtubeUnblock

В папке сервиса нам нужно найти и поменять содержимое файла youtubeUnblock.service, т.к. сервис изначально настроен на обработку («порчу») tcp трафика на локальном ПК, то, чтобы он работал с транзитным трафиком, необходимо добавить новые правила iptables в ExecStartPre и ExecStop сервиса.

Полный изменённый код для файла youtubeUnblock.service:

[Unit]
Description=youtubeUnblock

[Service]
StandardError=journal
StandardOutput=journal
StandardInput=null
ExecStartPre=/bin/bash -c 'iptables -t mangle -A POSTROUTING -p tcp --dport 443 -j NFQUEUE --queue-num 537 --queue-bypass && iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass'
ExecStart=$(PREFIX)/bin/youtubeUnblock
ExecStop=/bin/bash -c 'iptables -t mangle -D POSTROUTING -p tcp --dport 443 -j NFQUEUE --queue-num 537 --queue-bypass && iptables -t mangle -D OUTPUT -p tcp -m tcp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass'

[Install]
WantedBy=multi-user.target

4. Компиляция и установка сервиса

Компилируем и устанавливаем сервис

make
make install

Добавляем сервис в автозагрузку

systemctl enable youtubeUnblock.service

Запускаем сервис

systemctl start youtubeUnblock.service

После этого можно смело перезагружать одноплатник, сервис поднимется на нём автоматически.

Теперь, когда сервис настроен и развёрнут на одноплатнике, всё, что нужно это настроить основной шлюз на телевизоре/ПК/телефоне

В качестве завершения просто повторю конец из статьи @CyberexTech, надеюсь он не будет против :)

Настройка телевизора (на примере Web OS LG)

Для настройки использования нашего «кэширующего» сервера на смарт телевизоре LG, нам необходимо вручную прописать сетевую конфигурацию, как это сделать — показано ниже на картинке

Конфигурация сетевого подключения. Взято с форума LG.

Конфигурация сетевого подключения. Взято с форума LG.

В нашем случае, необходимо прописать в качестве шлюза IP адрес одноплатника, а в качестве DNS использовать адреса 8.8.8.8 и 8.8.4.4. И, само собой, IP адрес нашего «кэширующего» сервера (он же одноплатный компьютер) должен быть статическим — это легко делается с помощью роутера (привязка IP к MAC) или средствами самого одноплатника.

Итоги

Итак, с помощью недорого одноплатника, нам удалось справиться с устареванием кэширующих серверов видеохостинга, теперь мы можем и дальше наслаждаться образовательным и развлекательным контентом,

Обратите внимание, что данная статья не популяризует и не склоняет пользователя к обходу блокировок. Здесь лишь описан частный технический случай, который является труднореализуемым со стороны обычного обывателя. Также автор статьи не несет ответственность за содержание сторонних репозиториев и возможные риски в последствии их использования.

Спасибо за внимание.

Habrahabr.ru прочитано 2269 раз