Matlab - Accedere al license manager da remoto - tunnel ssh

Ho una licenza floating di matlab con n accessi contemporanei. Il license manager sta su un server aziendale e i vari client dalla rete aziendale si connettono al server che gestisce così le licenze.
Capita spesso però che i client siano dei portatili che vorrebbero usare matlab anche all' esterno della rete aziendale (da casa per esempio), sfruttando le licenze del server.

La soluzione più semplice è quella di installare il license manager su di un server esposto su internet (con ip pubblico in sostanza), oppure di forwardare il traffico verso le giuste porte del license manager tramite un firewall aziendale.

Il problema è che entrambe queste soluzioni consentono a chiunque abbia una copia di matlab con un pc connesso a internet, di sfruttare le licenze del server sapendo semplicemente il nome del server e la porta su cui gira il License Manager Daemon (lmgrd) (abbastanza semplice da capire facendo delle scansioni di rete).

Ho sempre pensato che ci fosse la possibilità di configurare il file di licenza del client in qualche modo per effettuare una autenticazione, con le credenziali del client salvate da qualche parte nel file di licenza, ma così non è*.
Ho anche pensato di sfruttare un proxy per rigirare il traffico e effettuare l'autenticazione sul proxy ma anche questa soluzione, sebbene supportata da matlab, non funziona. Il problema è che è si possibile specificare un proxy su matlab in fase di installazione, ma questo serve solo per effettuare l'attivazione via internet, non per contattare poi quotidianamente il license manager da parte di un client.

L'unica soluzione che ho trovato è quella di effettuare un tunnel via ssh: non è particolarmente comodo per un client ma, per poche utenze, si può pensare di procedere in questo modo.

CASO 1
Metto il license manager su un server (che chiamerò SERVER) esposto su internet e connesso anche alla rete aziendale. Creo una regola con iptables sul server stesso affinchè ci si possa connettere alla porta del lmgrd (la chiamerò LMGRDPORT, tipicamente la 27000) solo dalla rete aziendale. Sul server è presente il demone ssh contattabile da qualunque ip e l'utente ha la possibilità di accedere al server via ssh con un suo utente e con una shell.
La porta del vendor daemon (MLM) è stata fissata sul license manager (opzione DAEMON MLM, altrimenti è casuale a ogni riavvio)  e la chiamerò MLMPORT

A questo punto dal client "casalingo" con installato matlab digito

Questo comando crea 2 tunnel uno per il vendor daemon e l'altro per il license manager daemon.
L'opzione -L di ssh ha questa sintassi:

Non ho messo il bind_local_address-opzionale in quanto voglio che in locale si bindi su localhost (che è l'opzione di default)

Il primo tunnel parte dalla porta 12345 dell'interfaccia localhost del client. Arriva al SERVER tramite il tunnel ssh e da qui esce sull'interfaccia localhost del server sulla porta LMGRDPORT.
Il secondo tunnel parte dalla porta 6789 dell'interfaccia localhost del client. Arriva al SERVER tramite il tunnel ssh e da qui esce sull'interfaccia localhost del server sulla porta MLMPORT.

Le porte locali che ho usato (12345 e 6789) devono essere > 1024 se vogliamo che un utente non privilegiato possa aprire il tunnel.
Le porta LMGRDPORT e MLMPORT devono corrispondere ai servizi in ascolto sull'interfaccia localhost del server.

Fatto questo dal client lancio matlab in questo modo:

(oppure modifico il file network.lic in $MATLAB/etc di conseguenza).

 

CASO 2
Server (lo chiamerò FIREWALL) con installato il demone ssh esposto su internet (ip 1.2.3.4) e connesso anche alla rete aziendale. License manager di matlab installato su un server della rete aziendale (lo chiamerò SERVER con ip 192.168.0.100) e con le 2 porte LMGRDPORT e MLMPORT contattabili quindi solo dall'interno della stessa rete.
L'utente casalingo deve poter accedere con un suo utente e una shell al FIREWALL via ssh.

Il comando da digitare dal client in questo caso sarà

Il primo tunnel parte dalla porta 12345 dell'interfaccia localhost del client. Arriva al FIREWALL tramite il tunnel ssh e da qui esce verso l'ip del SERVER sulla porta LMGRDPORT.
Il secondo tunnel parte dalla porta 6789 dell'interfaccia localhost del client. Arriva al FIREWALL tramite il tunnel ssh e da qui esce verso l'ip del SERVER sulla porta MLMPORT.

come nel caso 1 il client poi può lanciare matlab col comando

oppure modificando di conseguenza il file network.lic

*In realtà, sia utilizzando matlab sia con maple è possibile utilizzare un option file all'interno del quale specificare una lista di utenti/gruppi abilitati ad usare i vari prodotti di cui si occupa la licenza.

 

Print Friendly, PDF & Email