5.0 KiB
5.0 KiB
🔄 rProxy
Менеджер обратного прокси для роутеров Keenetic
Публикация локальных сервисов в интернет через VPS с nginx в качестве reverse proxy.
[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. Настройка VPS
rproxy setup
Скрипт запросит:
- IP-адрес VPS — адрес вашего сервера
- SSH порт — порт SSH (по умолчанию 22)
- SSH пользователь — логин (по умолчанию root)
- Метод авторизации — SSH-ключ или пароль
При выборе SSH-ключа скрипт автоматически сгенерирует ключ и скопирует его на VPS. Также будет автоматически установлен и настроен nginx.
3. Публикация сервиса
С доменом (порт 80):
rproxy add nas 192.168.1.100:5000 --domain nas.example.com
Без домена (произвольный порт):
rproxy add camera 192.168.1.50:8080 --port 9090
С автоподбором порта:
rproxy add homeassistant 192.168.1.10:8123
📋 Команды
| Команда | Описание |
|---|---|
rproxy setup |
Настроить подключение к VPS |
rproxy add <имя> <хост:порт> [опции] |
Добавить сервис |
rproxy remove <имя> |
Удалить сервис |
rproxy start [имя] |
Запустить туннель(и) |
rproxy stop [имя] |
Остановить туннель(и) |
rproxy restart [имя] |
Перезапустить туннель(и) |
rproxy status |
Статус всех сервисов |
rproxy list |
Краткий список |
rproxy enable <имя> |
Включить автозапуск |
rproxy disable <имя> |
Выключить автозапуск |
rproxy logs <имя> |
Логи nginx на VPS |
Опции для add
| Опция | Описание |
|---|---|
--domain, -d |
Привязать к домену (nginx слушает порт 80) |
--port, -p |
Указать внешний порт (без домена) |
🏗 Архитектура
На роутере (Keenetic + Entware)
- autossh — устанавливает устойчивые reverse 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
└── services/
├── nas.conf # Конфиг сервиса "nas"
├── camera.conf # Конфиг сервиса "camera"
└── ...
🔒 Безопасность
- SSH-ключ хранится в
/opt/etc/rproxy/id_rsa(права 600) - Пароль VPS хранится в
/opt/etc/rproxy/rproxy.conf(права 600) - Все соединения зашифрованы через SSH
Рекомендация: используйте авторизацию по SSH-ключу для лучшей безопасности.
🔧 Решение проблем
Туннель не подключается
# Проверьте статус
rproxy status
# Перезапустите туннель
rproxy restart <имя>
# Проверьте SSH-подключение вручную
ssh -i /opt/etc/rproxy/id_rsa -p 22 root@<VPS_IP>
Сервис не доступен по домену
- Убедитесь, что DNS-запись домена указывает на IP VPS
- Проверьте логи:
rproxy logs <имя> - Проверьте nginx на VPS:
ssh root@VPS 'nginx -t'
Автозапуск не работает
# Проверьте init-скрипт
ls -la /opt/etc/init.d/S98rproxy
# Проверьте, что сервис enabled
rproxy list
📦 Требования
Роутер
- Keenetic с установленным Entware
- Пакеты:
openssh-client,autossh,curl,sshpass
VPS
- Linux (Debian/Ubuntu/CentOS)
- nginx (устанавливается автоматически при
setup) - SSH-доступ
📝 Лицензия
MIT