W materiale opowiem o Network UPS Tool (NUT) który to jest odpowiedzialny za komunikację serwerów z UPS ale nie tylko. Potem opowiem jak wybrać UPS pod kontem współpracy z TrueNAS. Następnie skonfigurujemy TrueNAS, żeby komunikował się z UPS. Dalej zmusimy dwa inne TrueNAS do komunikacji z tym samym UPS.
Co to NUT?
W TrueNAS do komunikacji z UPS wykorzystywany jest właśnie NUT. Podłączamy nasz UPS przy pomocy kabla USB z serwerem i NUT powinien być w stanie komunikować się z naszym UPS. Jeśli zaniknie zasilanie to NUT jest odpowiedzialny za wykonanie zaplanowanej akcji. W większości wypadków przy braku zasilania po określonym czasie będzie to po prostu wyłącznie serwera, żeby nie doszło do niekontrowanego wyłączenia.
NUT ma za zadanie nie tylko komunikację z UPS żeby odczytywać jego aktualny stan. Może on odczytywać napięcie i stan naładowania akumulatorów, częstotliwość sieci, aktualne obciążenie i wiele innych parametrów. Co ważne NUT poinformuje nas, że akumulatory na naszym UPS już pora wymienić. Potrafi również sterować UPS, żeby przełączać tryb pracy, wyłączyć, wyłączyć UPS lub po prostu wyłączyć alarm dźwiękowy. Bo poco mają nam piszczeć UPS jak już i tak wiemy co się dzieje, lub jeśli musimy wymienić baterie, a te zamówione będą dopiero jutro.
Ograniczenia NUT
Jeśli chodzi o odczyt i sterowanie UPS to funkcjonalność NUT, jak już wspominałem, jest dosyć szeroka ale pamiętajmy, że jest to otwarte oprogramowanie i nie ma gwarancji, że NUT będzie wstanie poprawnie komunikować się z Twoim UPS. W praktyce wszystkie UPS klasy serwerowej będą w stanie się komunikować z NUT w podstawowych funkcjach jak odczyt stanu UPS czy poziomu baterii. NUT jest bardzo popularnym narzędziem wykorzystywany na większości jeśli nie wszystkich systemach linuxo-podobnych. Sprawia to, że producentom też na tym zależy żeby działało to poprawnie. Nie oznacza to jednak, że będą dostępne wszystkie informacje czy możliwość sterowania. W zależności od poziomu współpracy producentów UPS z twórcami NUT ten poziom współpracy NUT z UPS będzie lepszy lub gorszy. Słowem im większym krzakiem jest producent naszego UPS tym gorzej wróży to właściwej komunikacji NUT z UPS.
Wiem, że można pobrać NUT dla Windows ale nie wiem jak się spisuje bo nie mieliśmy specjalnie potrzeby tej wersji instalować. Może macie z tym więcej doświadczenia to dajcie znać w komentarzach.
Budżetowy UPS do NUT
No i po wstępie o jakości producentów UPS wchodzimy w temat budżetowych UPS. Tutaj może być różnie. Najważniejsze żeby w opisie było w ogóle wspomniane o komunikacji prze USB. Do tej pory co prawda na przykład APC, Ever czy Eaton mnie nie zawiodły to nie oznacza, że inne nie będą działały. Na ogół jednak jeżeli nie potraficie przeczytać nazwy lub cena spada poniżej 400 zł to sprawdźcie czy ktoś nie miał z czymś takim już problemów. Najlepszym choć zdecydowanie nie najaktualniejszym źródłem informacji o kompatybilności konkretnego UPS z NUT jest strona „Hardware compatibility list”
Laboratorium
Zaczniemy od tego co będziemy konfigurowali. Naszym serwerem master, z perspektywy UPS i NUT oczywiście, będzie fizyczny serwer z zainstalowanym TrueNAS CORE z podłączonym fizycznie do niego UPS przez kabel USB. A będąc ścisłym to jeden z naszych testowych zestawów serwer HP ProLiant ML350p gen8 i podłączony do niego UPS PowerWalker VI 1200 SHL. Jak kogoś interesowały szczegóły. Dwa dodatkowe TrueNAS CORE i SCALE w postaci maszyn wirtualnych będą dla nas pełnić rolę slave, z perspektywy NUT oczywiście. W tym wypadku chociaż jeden serwer powinien być rzeczywisty, fizyczny żeby mieć gdzie wetknąć USB z naszego jednak fizycznego UPS. Ostatecznym celem naszych testów będzie, żeby przy pomocy jednego połączonego UPS powyłączać wiele serwerów. Tu już nie będzie miało znaczenia czy fizycznych czy wirtualnych.
Konfiguracja UPS w TrueNAS
Najpierw konfigurujemy nasz fizyczny TrueNAS SCALE
Services > UPS
Konfiguracja UPS w TrueNAS – slave
Dalej konfigurujemy pozostałe serwery TrueNAS które mają się pozamykać wraz z wyłączeniem zasilania podłączonego do naszego fizycznego serwera.
Services > UPS
Bezpieczeństwo rozwiązania NUT
Co do bezpieczeństwa tego rozwiązania. Pomijając zagrożenie kiedy mimo pełnej redundancji zasilania UPS i generatorów ktoś odłączając jedną wtyczkę i de facto kulturalnie każe iść spać całej serwerowni. Choć może to i zabawne to zapewne od jakiejś skali ilości urządzeń i postępującej paranoi, warto by podzielić takie grupy NUT na więcej niż jedną część, tak na wszelki wypadek.
Wartym wspomnienia jest fakt, że komunikacja sieciowa NUT w podstawowej konfiguracji jest praktycznie niezabezpieczona i może warto było by ją utrzymać w jakiejś separowanej sieci.
Sam serwer NUT można skonfigurować do nasłuchiwania na osobnym IP i konkretnym porcie, tak żeby był dostępny tylko w odrębnej sieci. Domyślnie NUT używa portu 3493. Niestety w TrueNAS przez WEB interface nie udało mi się ograniczyć NUT, żeby nasłuchiwał na konkretnym IP czy też interface. To na pewno wada implementacji NUT w TrueNAS. Dodatkowo TrueNAS nie ma żadnego ogólnego wbudowanego mechanizmu firewall, żeby limitować dostęp do jego zasobów zarówno ogólnie jak i w wypadku samego NUT. Na ogół da się to ograniczać na poziomie samych usług, jak NFS, SMB czy iSCSI lub też sam WEB interface, gdzie można a nawet trzeba ograniczyć dostęp tylko z zaufanych sieci.
Ale wracając do tematu bezpieczeństwa. Nie chcemy mieć w tej samej sieci pralki czy innych „smart” urządzeń które w najlepszym razie oddanie meldują do serwerów w Chinach co zobaczą i usłyszą a w najgorszym zhackowane posłużą do włamania się do naszych urządzeń. Powinno nas to prowadzić nad do wniosku, że trzeba oddzielać od siebie sieci i filtrować ruch między nimi z urządzeniami takimi jak nasz NAS od innych urządzeń nad którymi delikatnie mówiąc, mało panujemy a aktualność i jakość ich oprogramowania jest przynajmniej dyskusyjna
NUT debug
Test otwarcia portu
nmap [NUT_SERVER_IP] -p 3493
Infomracje z UPS
upsc ups@[NUT_SERVER_IP]