Перейти до вмісту

Налаштування проксі SOCKS5 на роутерах OpenWrt/DD-WRT

Инструменты
Налаштування проксі SOCKS5 на роутерах OpenWrt/DD-WRT

Налаштування SOCKS5 proxy на рівні роутера за допомогою прошивок OpenWrt або DD-WRT дозволяє централізувати керування приватністю вашої мережі, спрямовуючи трафік усіх підключених пристроїв через єдиний зашифрований тунель. Така конфігурація усуває необхідність встановлення програмного забезпечення на кожен окремий пристрій і дозволяє такому обладнанню, як Smart TV, ігрові консолі та пристрої IoT, користуватися перевагами високошвидкісних резидентських або дата-центр IP-пулів GProxy. Використовуючи такі інструменти, як redsocks або shadowsocks-libev, ви можете перетворити стандартне SOCKS5-з’єднання на прозорий проксі (transparent proxy), який безперешкодно обробляє TCP та UDP трафік у вашій локальній мережі (LAN).

Архітектура проксіювання SOCKS5 на рівні роутера

Стандартні SOCKS5 проксі працюють на прикладному рівні, що означає, що кожен браузер або додаток потрібно налаштовувати вручну, вказуючи IP та порт проксі. При перенесенні цієї логіки на роутер під керуванням OpenWrt або DD-WRT, архітектура змінюється на модель «прозорого проксі». У цьому сценарії роутер перехоплює вихідні пакети на мережевому рівні, перенаправляє їх на локальний клієнт (наприклад, redsocks), який потім огортає дані в SOCKS5-заголовок і передає їх на сервери GProxy.

Цей підхід пропонує три основні переваги для досвідчених користувачів:

  • Універсальна сумісність: Пристрої, які нативно не підтримують налаштування проксі (наприклад, PlayStation 5, Apple TV або розумні холодильники), автоматично спрямовуються через сервер GProxy.
  • Централізована автентифікація: Замість керування обліковими даними на двадцяти різних пристроях, ви керуєте одним з’єднанням на роутері.
  • Обхід лімітів на з’єднання: Багато сервісів обмежують кількість одночасних сесій на один IP; маршрутизація через резидентський проксі GProxy на роутері забезпечує стабільну точку виходу для всього дому або офісу.

Для високопродуктивної маршрутизації зазвичай надають перевагу OpenWrt порівняно з DD-WRT через менеджер пакетів opkg, який дозволяє встановлювати специфічні бінарні файли, такі як redsocks2 або v2ray-core. DD-WRT, хоч і є більш зручним для початківців, часто потребує ручного впровадження скриптів у конфігурацію автозавантаження для досягнення тих самих результатів.

Конфігурація SOCKS5 проксі на роутерах OpenWrt/DD-WRT

Налаштування OpenWrt: Використання Redsocks для прозорого проксіювання

OpenWrt не має вбудованого перемикача «SOCKS5 у прозорий проксі» у веб-інтерфейсі LuCI. Щоб заповнити цю прогалину, використовується redsocks — галузева стандартна утиліта. Вона прослуховує локальний порт і перенаправляє будь-який отриманий трафік на обраний вами SOCKS5 сервер.

Крок 1: Встановлення необхідних пакетів

Підключіться до роутера через SSH та оновіть списки пакетів. Вам знадобляться redsocks та iptables-mod-nat-extra (або еквіваленти nftables, якщо ви використовуєте OpenWrt 22.03 або новішу версію).

# Це представлення команд оболонки для OpenWrt
opkg update
opkg install redsocks iptables-mod-nat-extra ip-full

Крок 2: Конфігурація Redsocks

Конфігураційний файл знаходиться за шляхом /etc/redsocks.conf. Ви повинні визначити локальний порт прослуховування та дані віддаленого сервера GProxy. Нижче наведено фрагмент конфігурації, готовий до використання:

# Приклад /etc/redsocks.conf для GProxy
base {
    log_debug = off;
    log_info = on;
    log = "syslog:daemon";
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345; // Порт, на якому роутер перехоплює трафік
    ip = 45.152.x.x;    // IP вашого сервера GProxy
    port = 1080;        // Порт SOCKS5 GProxy
    type = socks5;
    
    // Автентифікація GProxy
    login = "your_username";
    password = "your_password";
}

Після редагування файлу увімкніть та запустіть сервіс: /etc/init.d/redsocks enable && /etc/init.d/redsocks start.

Крок 3: Спрямування трафіку через Iptables

Простого запуску redsocks недостатньо; ви повинні наказати ядру роутера надсилати трафік на local_port, визначений вище. Це робиться шляхом створення нового ланцюжка в таблиці NAT. Важливо виключити власну IP-адресу сервера GProxy з цього перенаправлення, щоб уникнути нескінченної петлі маршрутизації.

# Створення нового ланцюжка
iptables -t nat -N REDSOCKS

# Не перенаправляти трафік, призначений для самого проксі-сервера
iptables -t nat -A REDSOCKS -d 45.152.x.x -j RETURN

# Не перенаправляти трафік локальної мережі (LAN)
iptables -t nat -A REDSOCKS -d 192.168.1.0/24 -j RETURN

# Перенаправляти весь інший TCP трафік на порт redsocks
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

# Застосувати ланцюжок до етапу PREROUTING
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS

Налаштування DD-WRT: Реалізація на основі скриптів

У DD-WRT відсутня модульність opkg, притаманна OpenWrt, але більшість сучасних збірок містять ss-redir (частина Shadowsocks-libev) або можуть запускати статичні бінарні файли redsocks. Налаштування зазвичай виконується через вкладку Administration > Commands у веб-інтерфейсі.

Для DD-WRT найбільш стабільним методом є використання скрипта автозавантаження, який завантажує попередньо скомпільований бінарний файл redsocks у директорію /tmp (оскільки /usr у багатьох збірках доступний лише для читання). Однак, якщо ваша збірка DD-WRT містить клієнт «Socks5» на вкладці Services, ви можете просто ввести свої облікові дані GProxy там. Зауважте, що вбудованому клієнту часто бракує гнучкого контролю над тим, які саме пристрої проксіюються.

Щоб забезпечити постійне з’єднання на DD-WRT, використовуйте наступну логіку у вашому Startup Script:

  1. Перевірка наявності інтернет-з’єднання.
  2. Завантаження конфігураційного файлу з безпечного локального джерела або його генерація за допомогою команд echo.
  3. Запуск бінарного файлу з прапорцем -c, що вказує на ваш конфіг.
  4. Виконання правил iptables, подібних до тих, що використовувалися в OpenWrt.
Конфігурація SOCKS5 проксі на роутерах OpenWrt/DD-WRT

Порівняння протоколів проксі для інтеграції в роутер

При виборі протоколу для розгортання на рівні роутера основними показниками є продуктивність та сумісність. Хоча GProxy підтримує кілька форматів, SOCKS5 зазвичай є кращим для роутерів завдяки здатності обробляти як TCP, так і UDP (через UDP Associate), що критично важливо для ігор та VoIP.

Функція SOCKS5 (GProxy) HTTP/HTTPS Proxy OpenVPN / WireGuard
Рівень OSI Рівень 5 (Сеансовий) Рівень 7 (Прикладний) Рівень 3 (Мережевий)
Шифрування Опціонально/SSH тунель TLS (HTTPS) Повне шифрування тунелю
Навантаження на роутер Низьке Дуже низьке Високе (навантажує CPU)
Підтримка UDP Так (Повна) Ні Так
Складність налаштування Середня Легка Висока

Для користувачів із обладнанням початкового рівня (наприклад, роутери з процесорами MIPS 600 МГц), SOCKS5 значно ефективніший за OpenVPN. OpenVPN потребує важкого шифрування/дешифрування AES для кожного пакета, що може знизити швидкість з’єднання зі 100 Мбіт/с до 15 Мбіт/с на старому обладнанні. Реалізація SOCKS5 від GProxy дозволяє досягти високої пропускної здатності без перевантаження процесора роутера.

Просунута маршрутизація на основі політик (PBR)

У багатьох випадках ви не хочете, щоб 100% вашого трафіку проходило через проксі. Наприклад, ви можете забажати, щоб робочий ноутбук та Smart TV використовували резидентські IP-адреси GProxy у США, тоді як ігровий ПК зберігав пряме з’єднання з низькою затримкою до локальних серверів.

Впровадження PBR на OpenWrt

Пакет pbr (Policy Based Routing) в OpenWrt є найдосконалішим способом вирішення цього завдання. Він дозволяє створювати правила на основі вихідного IP пристрою у вашій мережі.

  1. Встановіть пакет: opkg install pbr luci-app-pbr.
  2. У веб-інтерфейсі LuCI перейдіть до Network > Routing Policy.
  3. Створіть інтерфейс «Proxy», який вказує на локальний порт redsocks.
  4. Додайте правило: Source IP: 192.168.1.50 (ваш Smart TV) -> Interface: Proxy.
  5. Усі інші пристрої за замовчуванням використовуватимуть стандартний шлюз WAN.

Такий детальний контроль гарантує, що завдання, які потребують великої пропускної здатності та не потребують проксі (наприклад, оновлення ОС або локальне резервне копіювання), не витрачатимуть ваш тарифний план резидентських даних GProxy даремно.

Запобігання витоку DNS

Поширеною проблемою в конфігураціях SOCKS5 на роутерах є «витік DNS» (DNS Leak). Навіть якщо ваші пакети даних проходять через GProxy, роутер все одно може надсилати DNS-запити на сервери вашого провайдера за замовчуванням. Це розкриває вашу історію переглядів і може перешкоджати обходу гео-блокувань.

Щоб виправити це в OpenWrt, слід налаштувати dnsmasq для пересилання запитів через проксі. Найефективніший спосіб — використовувати dns-over-https (DoH) або dnscrypt-proxy. Після їх встановлення ви можете спрямувати їхній трафік через той самий ланцюжок iptables REDSOCKS. Альтернативно, якщо ваш SOCKS5 клієнт це підтримує, увімкніть віддалене розв’язання DNS (remote DNS resolution), щоб сервер GProxy виконував пошук від вашого імені.

# Приклад скрипта Python для перевірки статусу проксі з мережевого клієнта
import requests

def check_proxy_status():
    proxy_url = "http://192.168.1.1:12345" # Порт прозорого проксі вашого роутера
    try:
        # Тестування через сервіс відображення IP
        response = requests.get("https://api.ipify.org?format=json", timeout=5)
        print(f"Поточний вихідний IP: {response.json()['ip']}")
    except Exception as e:
        print(f"Помилка підключення через проксі роутера: {e}")

if __name__ == "__main__":
    check_proxy_status()

Основні висновки

Налаштування SOCKS5 на роутері — це ідеальне рішення за принципом «налаштував і забув» для забезпечення приватності всієї мережі. Використовуючи OpenWrt або DD-WRT, ви отримуєте контроль, який не може надати споживче програмне забезпечення.

  • Redsocks є незамінним: він виступає необхідним містком для перетворення стандартного SOCKS5-з’єднання GProxy на прозорий проксі для всієї системи.
  • Керування Iptables: завжди переконуйтеся, що ви виключили IP-адресу проксі-сервера з ваших правил маршрутизації, щоб запобігти петлям, які можуть вивести з ладу мережевий стек роутера.
  • Апаратне забезпечення має значення: якщо ви плануєте маршрутизувати трафік понад 50 Мбіт/с, переконайтеся, що ваш роутер має принаймні двоядерний процесор, щоб впоратися з перенаправленням пакетів та навантаженням від redsocks.

Практична порада №1: Завжди використовуйте IP Whitelisting у панелі керування GProxy, якщо ваш провайдер надає статичну IP-адресу. Це усуває необхідність автентифікації за логіном/паролем у конфігураційних файлах роутера, що трохи пришвидшує встановлення з’єднання.

Практична порада №2: Одразу після налаштування перевірте систему на витоки за допомогою таких інструментів, як browserleaks.com/dns. Якщо ви бачите назву свого провайдера, це означає, що ваш DNS не проходить через SOCKS5-тунель, і вам потрібно відкоригувати налаштування dnsmasq.

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.