Как настроить reverse proxy (проброс портов) для TrueConf Server
Мессенджер TrueConf Server предоставляет чаты и видеосвязь в пределах корпоративной сети. Если требуется, чтобы сервер был доступен снаружи сети (в интернете), то часто в целях безопасности веб-сервисы скрывают за обратным прокси.
Обратный прокси (reverse proxy) – это специальный узел (сервис) в структуре сети, позволяющий настроить перенаправление трафика от клиентских устройств к веб-серверам компании так, чтобы снаружи сети не было видно реальных адресов этих серверов. То есть в нашем случае веб-служба TrueConf Server будет закрыта от прямого доступа извне. В качестве прокси будем использовать NGINX.
Техническая поддержка Труконф не рекомендует пропускать через NGINX медиатрафик, хоть это технически возможно. Мы не можем гарантировать корректную работу NGINX при работе с большим объёмом медиатрафика. Весь трафик по порту 4307 проприетарного протокола TrueConf шифруется алгоритмом AES-256 и потому достаточно файрвола.
В нашем примере прокси-машина будет управляться ОС Debian 11, на которой установлены следующие версии ПО:
- NGINX – 1.22.0, официальный сайт для скачивания
- TrueConf Server – 5.5.2, свежие версии можно скачать с сайта Труконф
- firewalld – 0.9.3, стандартный файрвол для Linux, установим из репозиториев.
Если вы используете TrueConf Server на Windows, то там можно также установить NGINX и тогда общая логика настроек будет такая же.
Настройка прокси-сервера
Сначала настроим NGINX в качестве прокси для веб-службы TrueConf Server. В нашей конфигурации он будет проксировать трафик, приходящий на стандартные HTTP и HTTPS порты: 80 и 443 соответственно. Если вы используете другие порты (как их поменять, смотрите в документации сервера), то укажите их в соответствующих строках в настройках ниже.
Настройка выполняется путём прописывания директив в конфигурационном файле. По умолчанию он называется nginx.conf и располагается в одном из следующих каталогов:
/etc/nginx;/usr/local/nginx/conf;/usr/local/etc/nginx.
Директивы должны быть расположены внутри блока server { … }. Состоит настройка из следующих шагов:
- Задайте порты, которые будут прослушиваться – 80 и 443.
1234listen 80 default_server;listen [::]:80 default_server;listen 443 ssl default_server;listen [::]:443 ssl default_server;
- Укажите пути к файлу SSL-сертификата и его ключа, чтобы настроить HTTPS-соединение у NGINX (Если у вас нет сертификата, вы можете сгенерировать его самостоятельно при помощи библиотеки OpenSSL). Обратите внимание, что это не отменяет настройки HTTPS на стороне TrueConf Server: чтобы работали планировщик, вход в личный кабинет, расширенное управление конференцией всё равно требуется активировать HTTPS на стороне сервера.
HTTPS нужен для работы TrueConf Server API. Без него вы не сможете получить токен OAuth2, необходимый для работы API.
12ssl_certificate /etc/example/certificate.crt;ssl_certificate_key /etc/example/cert-key.key; - Пропишите блок
locationс конфигурацией для проксирования.1234567location / {proxy_pass https://192.168.10.1:443;proxy_ssl_verify off;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr;}В директиве
proxy_passукажите внутренний адрес TrueConf Server в вашей локальной сети, доступный хосту с NGINX. Благодаря этой директиве трафик, приходящий на ранее заданные порты, будет перенаправляться на указанный адрес. Помимо проксирования в этом блоке настраивается передача HTTP-заголовков и отключение верификации SSL-сертификата. - Если предполагается использовать подключение по WebRTC (через браузер), то с новой строки после предыдущего блока пропишите ещё один блок location с конфигурацией для проксирования WebSocket-запросов на порт 4307 и укажите адрес вашего TrueConf Server. Этот порт может помимо протокола TrueConf использоваться для передачи сигнального (то есть управляющего) трафика между сервером видеосвязи и браузерным клиентским приложением. Это позволит не нагружать веб-сервер обработкой лишнего трафика.
1234567location /websocket/ {proxy_pass http://192.168.10.1:4307/websocket/;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header Host $host;}
WebSocket-запросы должны проксироваться только через HTTP. В противном случае подключиться к конференции будет невозможно.
Конфигурация прокси-сервера Nginx завершена. Чтобы внесённые изменения вступили в силу, необходимо его перезапустить. Для этого в терминале под суперпользователем выполните команду:
1sudo nginx -s reload
Настройка файервола
Помимо рассмотренных протоколов HTTP, HTTPS и WebSocket для всех возможностей видеосвязи Труконф могут использоваться протоколы, использующие другие порты, например:
- 4307 – основной и единственный необходимый TCP-порт для передачи медиаданных между TrueConf Server и TrueConf-клиентом;
- 554 – TCP-порт для работы по RTSP-протоколу;
- 1720 – TCP-порт для установки соединения с H.323-устройствами;
- 52000–52499 – TCP-порты для согласования параметров соединения по протоколу H.323;
- 5060 – порт TCP или UDP для инициализации соединения по протоколу SIP;
- 50000–51999 – UDP-порты для передачи медиапотоков по протоколам SIP/H.323.
В списке для примера приведены некоторые из необходимых портов. Подробнее про список используемых в TrueConf Server портов можно почитать в соответствующей инструкции.
В этом случае перенаправления HTTP/HTTPS-трафика через веб-сервер NGINX будет недостаточно. Настроить трансляцию остальных портов можно с помощью фаервола. Для примера воспользуемся пакетом firewalld:
Для выполнения перечисленных далее команд используйте программу sudo, или предварительно перейдите в режим суперпользователя, выполнив в терминале команду su - и введя root-пароль.
- Сначала необходимо его установить:
1sudo apt install firewalld
- Затем разрешите обращение к NGINX командами:
12sudo firewall-cmd --permanent --zone="public" --add-service=httpfirewall-cmd --permanent --zone="public" --add-service=https
Расшифровка используемых параметров:
--permanent– позволяет добавить настройку на постоянной основе, сохранив её после перезапуска ОС или файeрвола;--zone="public"– устанавливает, к какой зоне будет применяться настройка;--add-service– добавляет сервис к указанной зоне.
- Выполните команды для проброса TCP и UDP портов. Они могут настраивать проброс как одного порта, так и целого диапазона. Мы для примера покажем по одной команде каждого типа: одна будет пробрасывать 554 порт (для RTSP), вторая будет пробрасывать диапазон портов 50000-51999 (для SIP/H.323):
123sudo firewall-cmd --permanent --zone="public" --add-forward-port=port=554:proto=tcp:toport=554:toaddr=192.168.10.1sudo firewall-cmd --permanent --zone="public" --add-forward-port=port=50000-51999:proto=udp:toport=50000-51999:toaddr=192.168.10.1Аналогичными командами выполните проброс остальных необходимых портов.
Расшифровка используемых параметров:
--add-forward-port– позволяет пробросить порт с одной машины на другую;port– задаёт пробрасываемый порт/диапазон портов;proto– задаёт протокол передачи данных через порт;toport– задаёт целевой порт;toaddr– задаёт адрес машины, на которую пробрасываем исходный порт.
- Выполните команды, которые настроят подмену адреса проксируемой машины (с установленным TrueConf Server) на адрес прокси-сервера. Тем самым мы перенаправим входящий и исходящий трафик через прокси, скрыв реальный IP сервера видеосвязи. Список портов для протоколов TCP и UDP настраивается по отдельности, например:
123sudo firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -p tcp -m multiport --dports 4307,554,1720,5060,52000:52499 -j SNAT --to-source 192.168.10.2sudo firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -p udp -m multiport --dports 5060,50000:51999 -j SNAT --to-source 192.168.10.2
Расшифровка используемых параметров:
--direct– включает direct-синтаксис, позволяющий сделать более тонкую настройку (по сути это синтаксис пакета iptables);--add-rule– позволяет добавить правило iptables;ipv4– указываем, что настройка производится для трафика IPv4;nat– включаем таблицу NAT;POSTROUTING– включаем цепочкуPOSTROUTING;0– приоритет задаваемого правила (0 — наивысший);POSTROUTING– задаёт адрес машины, на которую пробрасываем исходный порт.-p tcp– задаём сетевой протокол TCP;-p upd– задаём сетевой протокол UDP;-m multiport– включаем использование правилом нескольких портов;--dports– список портов, на которых правило будет действовать;-j SNAT– задаём действие, которое будет выполняться, если пакет подходит под описанное правило;--to-source 192.168.10.2– указываем IP-адрес, на который будем подменять исходный (в нашем случае это IP-адрес прокси).
Проверка настроек
После того как настройка произведена, перезапустите firewalld, чтобы сохранить изменения:
|
1 |
sudo firewall-cmd --reload |
Затем проверьте, применились ли настройки. Для этого необходимо в терминале выполнить точно такую же команду, как для проброса порта, только заменив --add-forward-port на -–query-forward-port. Например, чтобы проверить, проброшен ли 554 порт, выполните следующую команду:
|
1 |
sudo firewall-cmd --permanent --zone="public" --query-forward-port=port=554:proto=udp:toport=554:toaddr=192.168.10.1 |
Если в консоль вывелось слово no – это значит, что порт не проброшен. Причиной этому может быть то, что вы не прописали ключ --permanent в соответствующей команде. Выполните команду в терминале снова, удостоверившись, что этот ключ присутствует.
Если же в консоль вывелось слово yes – значит настройка проброса порта на машину с TrueConf Server успешно выполнена.






