Привет, Хабр!
В связи с последними событиями вокруг видео хостинга YouTube, ситуация вынуждает искать технические решения для восстановления доступа к сервису. В этой статье я хочу поделиться своим техническим опытом по восстановлению доступа к сервису с помощью дешевого одноплатника Orange Pi Zero 2 от компании Xunlong Software.
Получается так, что в ходе моих разработок в моем арсенале остаются «ненужные» железки, одной из этих железок оказалась плата 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/
Добавить комментарий