5.9 KiB
5.9 KiB
🔄 rProxy
Менеджер обратного прокси для роутеров Keenetic
Публикация локальных сервисов в интернет через VPS с nginx в качестве обратного прокси.
[LAN сервис] ← [Keenetic] ══SSH туннель══▶ [VPS:nginx] → Интернет
⚡ Быстрый старт
1. Установка (на роутере Keenetic)
Требуется Entware
curl -sSL http://5.104.75.50:3000/Petro1990/rProxy/raw/branch/main/install.sh | sh
2. Запуск
rproxy
Откроется интерактивное меню:
╔══════════════════════════════════════════════╗
║ rProxy v1.0.0 ║
╚══════════════════════════════════════════════╝
VPS: 5.104.75.50 Сервисов: 2 Онлайн: 1
──────────────────────────────────────────────────
1) 📋 Список сервисов и статус
2) ➕ Добавить сервис
3) ❌ Удалить сервис
──────────────────────────────────────────────────
4) ▶️ Запустить туннель
5) ⏹️ Остановить туннель
6) 🔄 Перезапустить туннель
──────────────────────────────────────────────────
7) ⚙️ Настройки VPS
0) 🚪 Выход
▸ Выберите действие:
3. Первый запуск
При первом запуске скрипт предложит настроить подключение к VPS:
- IP-адрес VPS
- SSH порт (по умолчанию 22)
- Пользователь (по умолчанию root)
- Авторизация — SSH-ключ или пароль
4. Добавление сервиса
Выберите пункт 2 в меню. Скрипт пошагово спросит:
- Название сервиса
- Адрес локального сервиса (IP:порт)
- Привязка к домену или внешнему порту
Если указан домен — nginx будет слушать порт 80 с этим доменом. Если без домена — nginx будет слушать указанный внешний порт.
🏗 Архитектура
На роутере (Keenetic + Entware)
- autossh — устанавливает устойчивые обратные SSH-туннели до VPS
- Каждый сервис = отдельный туннель
- Конфигурация:
/opt/etc/rproxy/ - PID-файлы:
/opt/var/run/rproxy/
На VPS
- nginx — принимает входящие запросы и проксирует в SSH-туннели
- Конфиги сервисов:
/etc/nginx/sites-enabled/rproxy_*.conf
Файлы
/opt/etc/rproxy/
├── rproxy.conf # Параметры подключения к VPS
├── id_rsa # SSH-ключ (если выбран)
└── services/
├── nas.conf # Конфиг сервиса
├── camera.conf
└── ...
🔒 Безопасность
- SSH-ключ и конфиг хранятся с правами 600
- Все соединения зашифрованы через SSH
Рекомендация: используйте авторизацию по SSH-ключу.
🔧 Решение проблем
Туннель не подключается
rproxy # → пункт 1 — проверить статус
rproxy # → пункт 6 — перезапустить
Сервис не доступен по домену
- Убедитесь, что DNS-запись домена указывает на IP VPS
- Проверьте nginx на VPS:
ssh root@VPS 'nginx -t'
Автозапуск
Туннели автоматически запускаются при старте роутера через init-скрипт S98rproxy.
📦 Требования
Роутер
- Keenetic с Entware
- Пакеты:
openssh-client,autossh,curl,sshpass(ставятся автоматически)
VPS
- Linux (Debian/Ubuntu/CentOS)
- nginx (устанавливается автоматически)
- SSH-доступ
❓ FAQ (Часто задаваемые вопросы)
Что такое sshpass и нужен ли он?
sshpass — это утилита, которая позволяет передавать пароль SSH в автоматическом режиме.
- Нужен ли он? Только если вы хотите заходить на VPS по паролю.
- Если его нет? Ничего страшного. Скрипт просто потребует использовать SSH-ключ для подключения. Это намного безопаснее и является рекомендуемым способом.
- Почему он может не ставиться? В некоторых версиях Entware для старых архитектур (например, старые Keenetic на MIPS) этого пакета просто нет в официальном репозитории. В этом случае используйте только авторизацию по ключу.
📝 Лицензия
MIT