Un relè TCP locale può trasportare i rapporti HTTPS di Monit attraverso SOCKS senza diventare esso stesso l'endpoint TLS. L'instradamento deve conservare il nome del collector per HTTPS e al tempo stesso fornire al relè il suo indirizzo di destinazione reale.

Supponiamo che il collector sia collector.example all'indirizzo 203.0.113.40:443. In una configurazione esistente basata su socat, il relè ha questa forma:

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

Qui 127.0.0.1:9900 accetta la connessione locale di Monit. socks.example:1080 è il server SOCKS4, a cui viene chiesto di collegarsi all'indirizzo reale del collector sulla porta 443. Sostituite tutti gli indirizzi di documentazione con i valori della distribuzione.

Risolvete localmente il nome del collector verso quel listener e mantenete il nome in monitrc:

127.0.0.1 collector.example

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

La prima riga è una voce del file hosts; la seconda è la configurazione di Monit. Usate le credenziali reali del collector con la codifica URL richiesta. La mappatura nel file hosts influenza anche altre applicazioni che usano quel nome sulla macchina.

L'handshake HTTPS appartiene ancora al collector, quindi conservatene il nome host e la politica di verifica del certificato prevista. Cambiando l'URL in localhost cambia l'identità che Monit chiede di verificare.

Il relè usa deliberatamente l'IP reale del collector invece di risolvere il nome rimappato su loopback. Aggiornate quell'IP quando l'indirizzo del collector cambia. Mantenete il listener disponibile come parte del percorso dei rapporti; fork dà una gestione separata alle connessioni di relè accettate.

Articoli correlati