Локальный TCP-релей может передавать HTTPS-отчёты Monit через SOCKS, не становясь сам конечной точкой TLS. Маршрутизация должна сохранять имя сборщика для HTTPS и одновременно сообщать релею его настоящий адрес назначения.

Предположим, сборщик — collector.example по адресу 203.0.113.40:443. В существующей схеме на базе socat релей выглядит так:

socat TCP4-LISTEN:9900,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4:socks.example:203.0.113.40:443,socksport=1080

Здесь 127.0.0.1:9900 принимает локальное соединение Monit. socks.example:1080 — это сервер SOCKS4, которому поручено подключиться к настоящему адресу сборщика на порту 443. Замените все документационные адреса значениями развёртывания.

Разрешите имя сборщика локально на этот слушатель и сохраните имя в monitrc:

127.0.0.1 collector.example

set mmonit https://monit:[email protected]:9900/collector

Первая строка — запись в файле hosts; вторая — конфигурация Monit. Используйте настоящие учётные данные сборщика с требуемым URL-кодированием. Сопоставление в файле hosts влияет и на другие приложения, использующие это имя на машине.

Рукопожатие HTTPS по-прежнему принадлежит сборщику, поэтому сохраните его имя хоста и предусмотренную политику проверки сертификата. Если изменить URL на localhost, изменится идентичность, которую Monit просит проверить.

Релей намеренно использует настоящий IP сборщика, а не ищет имя, переназначенное на loopback. Обновляйте этот IP при изменении адреса сборщика. Держите слушатель доступным как часть пути отчётов; fork даёт принятым соединениям релея отдельную обработку.

Похожие статьи