
Привет, Хабр!
В связи с последними событиями вокруг видео хостинга 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 && apt-get upgradeУстановка и настройка hostapd
sudo apt-get install hostapdРедактируем файл конфигурации /etc/default/hostapd
sudo nano /etc/default/hostapdВ файле конфигурации раскомментируем следующую строку
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
dhcp-option=6,192.168.50.1,8.8.4.4 # Alternative DNS servers for clientsВ своей магии мы будем использовать локальный прокси сервер 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.
Если статья вам понравилась, то поддержите её стрелочкой вверх. Если есть что добавить или хотите поделиться подобным опытом, то добро пожаловать в комментарии! Всем добра, здоровья и спасибо за внимание!
Обратите внимание, что данная статья не популяризует и не склоняет пользователя к обходу блокировок. Здесь лишь описан частный технический случай, который является труднореализуемым со стороны обычного обывателя.
