Monit の HTTPS コレクター通信をローカル SOCKS リレー経由でルーティングする
loopback リスナーが TCP 接続を SOCKS4 経由で送る間、Monit の URL にはコレクターのホスト名を残します。
ローカルの TCP リレーは、自身が TLS の終端にならずに Monit の HTTPS レポートを SOCKS 経由で運べます。ルーティングは 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/collector1 行目は hosts ファイルのエントリ、2 行目が Monit の設定です。実際のコレクター資格情報を、必要な URL エンコードとともに使ってください。hosts ファイルの対応付けは、同じマシンでその名前を使う他のアプリケーションにも影響します。
HTTPS ハンドシェイクは依然としてコレクターのものなので、そのホスト名を維持し、意図した証明書検証ポリシーも保ってください。URL を localhost に変えると、Monit が検証を求める識別子が変わります。
リレーは、loopback に再マップされた名前を引くのではなく、意図的にコレクターの実 IP を使います。コレクターのアドレスが変わったらその IP を更新してください。リスナーはレポート経路の一部として利用可能に保ちます。fork は受け付けたリレー接続を個別に処理します。