Перейти к содержанию

Временный доступ к UI через socat

Эта инструкция предназначена для разовой проверки интерфейса с другой машины в доверенной тестовой сети. Приложение продолжает слушать 127.0.0.1:8080, а socat временно перенаправляет TCP-соединения с выбранного сетевого адреса сервера.

socat в приведённом примере не шифрует HTTP: пароль и сессионные cookie передаются по сети открытым текстом. Используйте тестовую учётную запись и изолированную сеть. Для доступа через недоверенную сеть используйте SSH-туннель или настроенный HTTPS reverse proxy.

Подготовка

На сервере с установленным Sambryx проверьте, что UI отвечает локально:

curl --fail --silent --show-error --output /dev/null http://127.0.0.1:8080/ui/

Установите socat:

sudo apt update
sudo apt install socat

Определите IPv4-адрес сетевого интерфейса сервера и адрес тестового компьютера. В примере сервер имеет адрес 192.168.1.10, клиент — 192.168.1.20. Замените оба значения своими адресами. Если между машинами есть NAT, учитывайте адрес клиента, который фактически видит сервер.

Запуск проброса

В отдельном терминале на сервере:

SERVER_LAN_IP=192.168.1.10
TEST_CLIENT_IP=192.168.1.20

sudo socat -d -d \
  "TCP4-LISTEN:80,bind=${SERVER_LAN_IP},range=${TEST_CLIENT_IP}/32,reuseaddr,fork" \
  TCP4:127.0.0.1:8080

Команда работает в foreground. bind ограничивает адрес прослушивания, range допускает только указанный IPv4-адрес клиента, fork позволяет браузеру открывать несколько соединений. Не заменяйте эти ограничения прослушиванием всех интерфейсов для обычной проверки.

На тестовом компьютере откройте:

http://192.168.1.10/ui/

Путь /ui/ записывается строчными буквами. Пробрасывается весь HTTP-порт приложения, включая /api, поэтому функции входа и управления используют тот же адрес.

Если порт 80 занят, выберите свободный порт, например 8081, заменив TCP4-LISTEN:80 на TCP4-LISTEN:8081. Тогда URL будет http://192.168.1.10:8081/ui/.

Правила firewall на сервере и маршрутизация должны уже разрешать нужное соединение. Эта инструкция не требует отключения firewall, изменения SERVER_ADDRESS, создания systemd-службы или автозапуска socat.

Проверка и остановка

Во втором терминале сервера проверьте слушающий сокет:

sudo ss -ltnp 'sport = :80'

После теста нажмите Ctrl+C в терминале с socat и повторите проверку сокета. Убедитесь, что процесс больше не слушает выбранный адрес и порт. Уже открытые соединения могут обслуживаться дочерними процессами: закройте тестовые вкладки; если процессы остались, завершите только PID этой проверки, указанные в диагностике socat. Не используйте общий killall socat, если на сервере есть другие пробросы.

С тестового компьютера новое соединение к тестовому порту больше не должно устанавливаться. Sambryx при этом остаётся доступен локально на 127.0.0.1:8080.

Ограничение учёта IP

Приложение видит соединения от socat как локальные — обычно от 127.0.0.1. Лимит попыток входа по IP будет общим для таких соединений. socat не добавляет доверенную информацию о реальном клиенте и не заменяет полноценную настройку reverse proxy.

Описание параметров: руководство socat.