Passa al contenuto principale

UPS (NUT)

Un'alimentazione ininterrotta (UPS) è un dispositivo che fornisce alimentazione di backup quando l'alimentazione principale si interrompe. Viene utilizzato per proteggere hardware come computer, apparecchiature di telecomunicazione o altri apparecchi elettrici dove un'interruzione di corrente inaspettata potrebbe causare interruzioni dell'attività o perdita di dati.

Network UPS Tools (NUT) è una raccolta di programmi che fornisce un'interfaccia comune per il monitoraggio e l'amministrazione dell'hardware UPS.

Questa guida spiega come configurare un UPS collegato via USB con NUT su NethSecurity. Al termine della guida, l'UPS dovrebbe essere monitorato e il sistema dovrebbe spegnersi quando la batteria è scarica.

NUT non è installato per impostazione predefinita. Fa parte dei pacchetti extra di NethSecurity e può essere installato dalla riga di comando. La suite NUT è composta da diversi pacchetti, ma i più importanti sono:

  • nut-server: Il daemon del server NUT si connette direttamente all'UPS, fornendo dati al client.
  • nut-upsc: Uno strumento da riga di comando per interrogare lo stato dell'UPS.
  • nut-upsmon: Il daemon del monitor UPS di NUT comunica con nut-server e avvia lo spegnimento del sistema quando la batteria dell'UPS è scarica.
  • nut-upscmd: Uno strumento da riga di comando per inviare comandi all'UPS (supportato solo da alcuni modelli di UPS).
note

La configurazione di NUT non è supportata su macchine con un abbonamento NethSecurity. La funzione è destinata a utenti avanzati e non è coperta dal servizio di supporto.

Configurare un UPS locale

Prima di configurare l'UPS, assicurati che l'UPS sia collegato al firewall (di solito viene fornito un cavo con l'UPS). Quindi, segui questi passaggi:

  1. Installa i pacchetti NUT.
  2. Trova il modello dell'UPS, quindi installa e configura il driver appropriato.
  3. Configura i daemon del server UPS.
  4. Abilita il monitor UPS.

Step 1: installa i pacchetti richiesti

Installa i pacchetti richiesti.

Se stai eseguendo NethSecurity 8.8, usa:

apk update
apk add nut-server nut-upsc nut-upsmon nut-upscmd

Se stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:

opkg update
opkg install nut-server nut-upsc nut-upsmon nut-upscmd
note

A partire dalla versione 8.7.2, i pacchetti extra vengono reinstallati automaticamente dopo l'aggiornamento del sistema. Per le versioni precedenti e per ulteriori informazioni, fai riferimento a questa documentazione: Ripristina pacchetti extra.

Step 2: configura il driver appropriato

  1. Usa lsusb per elencare i dispositivi USB:

    Bus 002 Device 002: ID 0463:ffff EATON 5E
    Bus 002 Device 001: ID 1d6b:0002 Linux 5.15.150 xhci-hcd xHCI Host Controller
    Bus 001 Device 002: ID 8087:8001

    In questo esempio, l'UPS è un modello EATON 5E collegato alla seconda porta USB del secondo bus USB.

  2. Seleziona il driver dalla pagina del driver NUT.

  3. Tutti i pacchetti driver iniziano con il prefisso nut-driver-. Alcuni modelli di UPS potrebbero richiedere un driver specifico, ma la maggior parte funziona con il driver usbhid-ups. Installa il pacchetto driver selezionato, in questo caso il driver usbhid-ups.

    Se stai eseguendo NethSecurity 8.8, usa:

    apk add nut-driver-usbhid-ups

    Se stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:

    opkg install nut-driver-usbhid-ups
  4. Configura il driver all'interno di upsd (nut-server) server. Il nut-server si connetterà all'UPS utilizzando il driver e la porta specificata. Monitorerà l'UPS a intervalli regolari e fornirà le informazioni ai client come upsmon. Esegui:

    uci set nut_server.eaton5e=driver
    uci set nut_server.eaton5e.driver=usbhid-ups
    uci set nut_server.eaton5e.port=auto
    uci set nut_server.upsd=upsd
    uci commit nut_server

    Ricorda il nome dell'UPS, in questo caso eaton5e, poiché verrà utilizzato nei prossimi passaggi.

Step 3: configura il monitoraggio

Il monitor UPS (upsmon) è un daemon che monitora l'UPS e avvia lo spegnimento del sistema quando la batteria dell'UPS è scarica. Si connette al server UPS (upsd) e interroga lo stato dell'UPS.

In questo scenario il monitor UPS è in esecuzione sulla stessa macchina del server UPS, quindi si connetterà a localhost.

  1. Configura l'utente per il monitoraggio all'interno di upsd. Tieni presente che la password è semplice perché non viene inviata sulla rete:

    uci set nut_server.upsuser=user
    uci set nut_server.upsuser.username=upsuser
    uci set nut_server.upsuser.password=password
    uci set nut_server.upsuser.upsmon=master
  2. Configura il monitor:

    uci set nut_monitor.upsmon=upsmon
    uci set nut_monitor.master=master
    uci set nut_monitor.master.upsname=eaton5e
    uci set nut_monitor.master.hostname=localhost
    uci set nut_monitor.master.username=upsuser
    uci set nut_monitor.master.password=password
  3. Applica le modifiche e riavvia i servizi:

    uci commit nut_server
    uci commit nut_monitor
    /etc/init.d/nut-server restart
    /etc/init.d/nut-monitor restart

Step 4: verifica lo stato dell'UPS

Controlla lo stato dell'UPS:

upsc eaton5e

L'output dovrebbe assomigliare a questo:

battery.charge: 100
battery.runtime: 2637
battery.type: PbAc
device.mfr: EATON
device.model: 5E 850i
...

Se l'output è vuoto o viene visualizzato un errore, rivedi il contenuto di /var/log/messages.

Un buon log del server per l'UPS collegato:

Nov 29 09:23:08 NethSec upsd[7111]: Connected to UPS [eaton5e]: usbhid-ups-eaton5e

Un buon log per upsmon:

Nov 29 09:23:11 NethSec upsmon[7189]: Communications with UPS eaton5e@localhost established

Se viene visualizzato un errore, consulta Risoluzione dei problemi.

Se tutto funziona correttamente, l'UPS dovrebbe essere monitorato e il sistema dovrebbe spegnersi quando la batteria è in uno stato critico, di solito al di sotto del 20%.

Consenti il monitoraggio remoto

Più dispositivi hardware possono essere collegati a un UPS e il server NUT può condividere lo stato dell'UPS con più client. Ad esempio, un altro sistema alimentato dallo stesso UPS può ispezionare lo stato dell'UPS connettendosi al server NUT e spegnendosi quando la batteria è scarica.

Per impostazione predefinita, il server NUT è configurato per ascoltare solo su localhost. Per consentire il monitoraggio remoto, il server deve essere configurato per ascoltare su un indirizzo IP specifico o su tutte le interfacce.

  1. Ascolta su tutte le interfacce:

    uci set nut_server.listen=listen_address
    uci set nut_server.listen.address=0.0.0.0
  2. Aggiungi un utente per il monitoraggio remoto. Assicurati di selezionare una password complessa:

    uci set nut_server.remoteuser=user
    uci set nut_server.remoteuser.username=remoteuser
    uci set nut_server.remoteuser.password=password
    uci commit nut_server
    /etc/init.d/nut-server restart
  3. Controlla lo stato del server:

    netstat -tuln | grep 3493
  4. Crea una regola firewall per consentire il monitoraggio remoto dalla LAN, il servizio ascolta sulla porta TCP 3493:

    uci set firewall.ns_allow_https.name='Allow-NUT-from-LAN'
    uci set firewall.ns_allow_https.proto='tcp'
    uci set firewall.ns_allow_https.src='lan'
    uci set firewall.ns_allow_https.dest_port='3493'
    uci set firewall.ns_allow_https.target='ACCEPT'
    uci commit firewall
    /etc/init.d/firewall restart

Ora puoi connetterti al server NUT da un client upsmon remoto. Quando il client è configurato, si connetterà al server NUT e monitorerà lo stato dell'UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.

Connettersi al server NUT remoto

Questo è il caso in cui un firewall secondario è collegato allo stesso UPS e il server NUT è in esecuzione sul firewall primario. Il firewall secondario si connetterà al firewall primario e monitorerà lo stato dell'UPS.

  1. Innanzitutto, installa i servizi NUT sulla macchina client.

    Se stai eseguendo NethSecurity 8.8, usa:

    apk update
    apk add nut-upsc nut-upsmon

    Se stai eseguendo NethSecurity 8.7.2 o versioni precedenti, usa:

    opkg update
    opkg install nut-upsc nut-upsmon

    Questi pacchetti non vengono preservati durante un aggiornamento del sistema. Per ulteriori informazioni, consulta Ripristina pacchetti extra.

  2. Quindi, configura il client per connettersi al server remoto:

    uci set nut_monitor.upsmon=upsmon
    uci set nut_monitor.slave=slave
    uci set nut_monitor.slave.upsname=eaton5e
    uci set nut_monitor.slave.hostname=192.168.1.8
    uci set nut_monitor.slave.username=remoteuser
    uci set nut_monitor.slave.password=password
    uci commit nut_monitor
    /etc/init.d/nut-monitor restart
  3. Controlla se il client è collegato al server remoto:

    upsc eaton5e@192.168.1.8

    L'output dovrebbe essere lo stesso del server locale.

Ora il client è collegato al server remoto e monitorerà lo stato dell'UPS. Se la batteria è scarica, il client avvierà lo spegnimento del sistema.

Impostazioni UPS aggiuntive

Alcuni modelli di UPS hanno impostazioni aggiuntive che possono essere configurate utilizzando il comando upscmd. Per eseguire il comando, l'utente deve avere i permessi appropriati.

  1. Concedi i permessi all'utente:

    uci add_list nut_server.upsuser.instcmd=all
    uci add_list nut_server.upsuser.actions=set
    uci commit nut_server
    /etc/init.d/nut-server restart
  2. Controlla i comandi disponibili:

    upscmd -l eaton5e
  3. Esempio per disabilitare il segnale acustico:

    upscmd -u upsuser -p password eaton5e beeper.disable

Risoluzione dei problemi

Un errore comune è il permesso negato durante l'accesso al dispositivo UPS, ad esempio potresti vedere questo errore all'interno di /var/log/messages:

Can't open /etc/nut/ups.conf: Can't open /etc/nut/ups.conf: Permission denied openwrt

Un altro errore comune è quando upsd non riesce a connettersi all'UPS, ad esempio potresti vedere questo errore all'interno di /var/log/messages:

Nov 29 10:34:51 NethSec upsd[7055]: [D1] mainloop: UPS [eaton5e] is not currently connected
Nov 29 10:34:51 NethSec upsd[7055]: [D1] mainloop: UPS [eaton5e] is now connected as FD -1

Solitamente, questo accade quando nut-server si connette al dispositivo UPS prima che il dispositivo sia pronto. Per risolvere questo problema, la soluzione più semplice è riavviare il firewall:

reboot

Se non puoi riavviare il firewall, puoi provare a interrompere il nut-server:

/etc/init.d/nut-server stop

Quindi controlla se il driver può connettersi al dispositivo UPS:

/lib/nut/usbhid-ups -a eaton5e

Output atteso:

Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Using subdriver: MGE HID 1.46

In caso di errore, potresti vedere qualcosa di simile:

Can't claim USB device [0463:ffff]@0/0: Entity not found

Potresti quindi provare a reimpostare il dispositivo USB:

usbreset 002/003

Dove 002/003 è l'ID del dispositivo USB trovato con lsusb, 002 è il numero del bus e 003 è il numero del dispositivo.