Как Orange Pi вернула мне Ютуб

от автора

Обложка статьи

Обложка статьи

Привет, Хабр!

В связи с последними событиями вокруг видео хостинга YouTube, ситуация вынуждает искать технические решения для восстановления доступа к сервису. В этой статье я хочу поделиться своим техническим опытом по восстановлению доступа к сервису с помощью дешевого одноплатника Orange Pi Zero 2 от компании Xunlong Software.

Получается так, что в ходе моих разработок в моем арсенале остаются «ненужные» железки, одной из этих железок оказалась плата Orange Pi Zero 2, ниже представлен внешний вид устройства и технические характеристики:

Внешний вид Orange Pi Zero 2

Внешний вид Orange Pi Zero 2

Hardware specification

CPU

Allwinner H616 64-bit high-performance Quad-core Cortex-A53 processor

GPU

• Mali G31 MP2• Supports OpenGL ES 1.0/2.0/3.2、OpenCL 2.0

Video decoding

• H.265 Main10@L5.1 decoder up to 4K@60fps or 6K@30fps• VP9 Profile 2 decoder up to 4K@60fps• AVS2 JiZhun 10bit decoder up to 4K@60fps• H.264 BP/MP/HP@L4.2 decoder up to 4K@30fps

Video encoding

• H.264 BP/MP/HP encoder up to 4K@25fps or 1080p@60fps• JPEG snapshot performance of 1080p@60fps

Memory(SDRAM)

512MB/1GB DDR3 (Shared with GPU)

Onboard Storage

• TF card slot• 2MB SPI Flash

Onboard Network

Support 1000M/100M/10M Ethernet

Onboard WiFi+BT

• 859 Chip• Support IEEE 802.11 a/b/g/n/ac• Support BT5.0

Video Outputs

• Micro HDMI 2.0a up to 4K@60fps• TV CVBS output, Support PAL/NTSC(Via 13pin interface board)

Audio output

• Micro HDMI• 3.5mm audio port (Via 13pin interface board)

Power Source

Type-C interface 5V3A input

USB 2.0 Ports

3*USB 2.0 HOST(Two of them are via 13pin interface board)

Low-level peripherals

• 26pin header with I2C, SPI, UART and multiple GPIO ports• 13pin header with 2*USB Host, IR pin, Tv-out、AUDIO (no MIC) and 3 GPIO ports

Debug serial port

UART-TX、UART-RX and GND

LED

Power led & Status led

IR receiver

Support IR remote control (via 13pin interface board)

Supported OS

Android10、Ubuntu、Debian

Appearance specification introduction

Dimension

53mm×60mm

Weight

30g

Так как мои устройства, которые используют видеосервис YouTube, подключены через беспроводное соединение и исходя из спецификации платы, вырисовывается следующая концепция:

Проводной сетевой интерфейс (Ethernet) мы будем использовать для (внешнего) подключения к сети интернет, в моем случае к сетевому роутеру, а на беспроводном модуле одноплатника мы реализуем Wi-Fi Хотспот для подключения наших устройств, и вся «магия» будет выполняться с помощью установленного на одноплатник ПО.

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

В качестве операционной системы используется Debian 12 без графической оболочки, скачать образ системы можно на официальном сайте Orange Pi.

Wi-Fi хотспот в данном решении реализован с помощью пакета hostapd, перед дальнейшими действиями, рекомендуется обновить пакеты с помощью команды

sudo apt-get update sudo apt upgrade

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

sudo apt-get install hostapd

Редактируем файл конфигурации /etc/default/hostapd.conf.

sudo nano /etc/default/hostapd.conf

В файле конфигурации раскомментируем следующую строку

DAEMON_CONF="/etc/hostapd/hostapd.conf"

И на всякий случай остановим сервис hostapd

service hostapd stop

Отредактируем файл конфигурации нашего Wi-Fi хотспота:

sudo nano /etc/hostapd/hostapd.conf

Приведем файл к следующему содержанию

interface=wlan0 driver=nl80211 country_code=RU ssid=INTERNETFORYOUTUBE     #Wi-Fi AP SSID hw_mode=a channel=36 ieee80211n=1 ieee80211ac=1 vht_capab=[VHT80][SHORT-GI-80] wpa=2 wpa_passphrase=YOUTUBE12345  #PASSWORD  wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP auth_algs=1 macaddr_acl=0

В данной конфигурации реализована Wi-Fi точка доступа 5 ГГц, стандарт 802.11n, 802.11ac, частотный канал 36, wlan0 — беспроводной сетевой интерфейс, определяется с помощью команды:

ip a

Далее нам необходимо сконфигурировать беспроводной интерфейс, отредактировав следующий файл с помощью команды:

sudo nano /etc/network/interfaces

Содержимое файла нужно привести к следующему

source /etc/network/interfaces.d/* # Network is managed by Network manager auto lo iface lo inet loopback auto wlan0 iface wlan0 inet static address 192.168.50.1 netmask 255.255.255.0 gateway 192.168.50.1

В данной файле мы прописали статическую конфигурацию адреса для беспроводного интерфейса.

Теперь, для корректной работы нашего хотспота, необходимо настроить автоматическую раздачу адресов для клиентов. Для этого реализуем DHCP сервис с помощью dnsmasq.

Установка dnsmasq:

sudo apt-get install dnsmasq

И, на всякий случай, остановим сервис

service dnsmasq stop

Конфигурируем dnsmasq

sudo nano /etc/dnsmasq.conf

И приводим файл конфигурации к следующему содержимому

interface=wlan0                                 # Use interface wlan0 listen-address=192.168.50.1                     # Explicitly specify the address to> bind-interfaces                                 # Bind to the interface to make sur> server=8.8.8.8                                  # Forward DNS requests to Google DNS domain-needed                                   # Don't forward short names bogus-priv                                      # Never forward addresses dhcp-range=192.168.50.50,192.168.50.150,12h     # IP range DHCP

В своей магии мы будем использовать локальный прокси сервер Socks 5, и для возможности его использования, мы воспользуемся пакетом 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; }

Теперь нам необходимо завернуть весь трафик от клиентов хотспота в наш будущий socks 5 прокси. Реализуем данную задачу с помощью iptables:

sudo iptables -t nat -N REDSOCKS sudo iptables -t nat -A REDSOCKS -d 192.168.50.0/24 -j RETURN        # Исключаем локальную сеть sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345 sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -j REDSOCKS

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

Сохранение текущих правил 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

Теперь немного магии, чтобы у нас все заработало, будем использовать «ciadpi»

Создаем сервис ciadpi не под root пользователем, например 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] User=orangepi Group=orangepi ExecStart=/home/orangepi/byedpi/ciadpi --disorder 1 --auto=torst --tlsrec 1+s  [Install] WantedBy=multi-user.target

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

systemctl enable byedpi_orange_pi

Перезагружаем систему и проверяем работу

sudo shutdown -r now

Подведем итоги

В данной статье я постарался доходчиво описать свой технический опыт восстановления доступа к YouTube с помощью отладочной платы Orange Pi zero 2.

Если статья вам понравилась, то поддержите её стрелочкой вверх. Если есть что добавить или хотите поделиться подобным опытом, то добро пожаловать в комментарии! Всем добра и здоровья, и спасибо за внимание!

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


ссылка на оригинал статьи https://habr.com/ru/articles/835602/