habrahabr

Решаем проблему устаревания кэширующих серверов. Смотрим на телевизоре. Не VPN

  • воскресенье, 29 декабря 2024 г. в 00:00:08
https://habr.com/ru/articles/870254/

Не так давно всех потрясла новость об устаревании оборудования популярного видеохостинга, в результате чего сервис перестал нормально работать и началось замедление. Сначала в замедлении сервиса пытались обвинить Роскомнадзор, но до сих пор нет внятных нормативно-правовых актов (поправьте меня в комментариях, если я ошибаюсь), которые бы позволяли данному органу применять методы блокировки в отношении сервиса. Я не верю, что государственный орган может нарушать закон, поэтому будем исправлять проблему самостоятельно и поднимем свой «кэширующий» сервер.

В качестве нашего «кэширующего» сервера будем использовать дешевый одноплатный компьютер MangoPi MQ-Quad (или другой аналогичный), стоимостью не более $29.

Одноплатный компьютер MangoPi MQ-Quad
Одноплатный компьютер MangoPi MQ-Quad

Перед дальнейшими действиями необходимо установить операционную систему не ниже Debian 11 и настроить подключение платы к вашей Wi-Fi сети.

Установка программного обеспечения

Для установки ПО нам необходимо подключиться по SSH к нашему одноплатнику, и для обновления выполним следующую команду:

sudo apt-get update && apt-get upgrade

Для работы нашего «кэширующего» сервера необходимо включить IP-Forwarding.

Редактируем файл /etc/sysctl.conf

sudo nano /etc/sysctl.conf

Найдем и раскомментируем строку

net.ipv4.ip_forward=1

И выполним команду, чтобы применить изменения

sudo sysctl -p

Для работы нашего «кэширующего» сервера понадобится прокси сервер, будем использовать RedSocks.

Установка и настройка redsocks

sudo apt-get install redsocks

Отредактируем конфигурационный файл

sudo nano /etc/redsocks.conf

До следующего содержания:

base {
    log_debug = off;
    log_info = on;
    log = "file:/var/log/redsocks.log";
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 0.0.0.0;
    local_port = 12345;
    ip = 127.0.0.1;   
    port = 1080;    
    type = socks5;
}

Далее нам нужно настроить iptables для правильной работы нашего «кэширующего» сервера

sudo iptables -A FORWARD -i end0 -o end0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o end0 -j MASQUERADE
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A PREROUTING -i end0 -p tcp -j REDSOCKS

Где end0 - это сетевой интерфейс, с помощью которого подключена ваша плата к сети. Узнать имена доступных интерфейсов можно с помощью команд

ip a или ifconfig

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

Сохранение текущих правил iptables в файл iptables.rules. Создаем файл и ограничиваем к нему доступ:

sudo touch /etc/iptables.rules
sudo chmod 640 /etc/iptables.rules

Сохраняем текущие правила iptables в файл

sudo iptables-save | sudo tee /etc/iptables.rules

Автозагрузка сохраненных правил. В /etc/network/if-pre-up.d/ создаём файл iptables, со следующим содержимым:

#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

Делаем созданный сценарий исполнимым

sudo chmod +x  /etc/network/if-pre-up.d/iptables

Создаем основной сервис, без которого наш «кэширующий» сервер не заработает. Создаем под другим пользователем, например orangepi. Входим под пользователем orangepi и клонируем репозиторий:

git clone https://github.com/hufrea/byedpi

Переходим в папку с репозиторием и собираем

сd byedpi
make

Далее необходимо создать сервис для автозагрузки:

nano /etc/systemd/system/byedpi_orange_pi.service

И сохраняем следующее содержимое

[Unit]
Description=dpi port 1080
After=network.target

[Service]
WorkingDirectory=/home/orangepi/byedpi
User=orangepi
Group=orangepi
ExecStart=/home/orangepi/byedpi/ciadpi -d1 -o25+s --auto=torst

[Install]
WantedBy=multi-user.target

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

systemctl enable byedpi_orange_pi

Перезагружаем систему

sudo shutdown -r now

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

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

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

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

Итоги

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

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