RSS Feed
  1. Firebird i gbak: ERROR:cannot start transaction for password database – przy próbie wykonania kopii zapasowej

    Grudzień 28, 2015 by 0verlord

    Ten komunikat może wskazywać na wiele rozmaitych błędów, ja go zobaczyłem przy próbie wykonania gbaka ze zdalnego hosta, na którym nie mam monitoringu ani dostępu do shella „bo nie potrzeba i po co mają mi skrypty jakieś działać bez sensu” (koniec cytatu pana klienta).
    Przyczyna była dość prozaiczna, za to zagadkowa przy braku dostępu do serwera. W tym przypadku skończyło się miejsce na dysku. Daemon.log i syslog miały po 60GB. Po skasowaniu, wszystko wróciło do normy.
    Natomiast, czy baza się nie popsuła, to się dopiero dowiemy, bo FB wyjątkowo nie lubi braku miejsca na dysku. Najczęściej wtedy rozlatuje mu się ODS i kończy się na przywracaniu z backupu.


  2. OpenVPN – No buffer space available (code=55)

    Maj 13, 2015 by 0verlord

    Klikam OpenVPNa dla klienta – musiał się podłączyć do bazy na hoście, ale że host był odfiltrowany od wszelkiego zła (tj. Internetu) trzeba było przepuścić ruch przez vpna.

    W skrócie dla niecierpliwych – taki komunikat oznacza, że wygenerowaliśmy pętlę routingu – np. że wypychamy do klienta (push) trasę do IP, która musi być dostępny normalnie, nie przez vpna – jeżeli serwer vpn ma ipka 1.2.3.4 a w konfigu OpenVPNa wypychamy trasę na ten ipek (push „route 1.2.3.4 255.255.255.0 192.168.1.1”) przez vpna, którego właśnie zestawiamy – tak się dzieje.
    Oczywiście to jest logiczne i naturalne, ale czasem ucieka w pogoni za Innym Lepszym Sensem i z powodu nadmiaru pracy.

    U mnie było tak, że początkowo baza stała na virtualce (konkretnie w LXC). Wtedy OpenVPN stał sobie na głównym hoście i pushował trasy do virtualki dla klientów. Prawie działało, bo ogólnie Firebird takich ustawień nie lubi z kilku powodów (opowieść na inną notkę). Natomiast wtedy OpenVPN się zestawiał.
    Szybka zmiana i „dostrojenie” konfiguracji i jak się okazało, wypchnąłem trasę na IP hosta, na którym stał OpenVPN. Stąd komunikat jak w temacie i ciągłe rekonekty i brak komunikacji.

    Czyli drogie dzieci – po takim komunikacie na kliencie, szukamy w konfigu, co to za jadowita trasa nam się wypycha, a nie powinna i w efekcie zapętla nam się routing.


  3. Prehistoria informatyki

    Maj 14, 2014 by 0verlord

    20140514-215329.jpg

    Przy okazji wycieczki do Jaworzyny i muzeum parowozów zobaczyłem na żywo komputer Odra i kilka innych zabytków wczesnej jury informatyczno-dolnośląskiej.

    Ponoć niedawno ją odpalali, ale przy próbie przeliczenia prostego programu wysadziło korki 🙂

    Na tych fotkach jest też jedyny laptop firmy Commodore (tych od C64) i kilka dalekopisów. Ta duża szafa ze szpulami taśmy to nie stary magnetofon, tylko pamięć zewnętrzna do Odry.

    Wg przewodnika, ostatnią działającą Odrę zgaszono w 2008 r. Wtedy to po cenie złomu odkupiło ją. muzeum w Jaworzynie.


  4. OTRS 2 i Magic number checking on storable string failed at blib/lib/Storable.pm

    Marzec 26, 2014 by 0verlord

    Dzisiaj króciutko o tym, jak naprawić błąd z tematu.
    OTRS to takie całkiem fajne narzędzie do zarządzania problemami, zgłoszeniami, czy innymi zdarzeniami. Alternatywy to np. Request Tracker, na którym jakiś czas temu (spory) działała infolinia Dialogu.
    Aktualna wersja OTRSa to bodajże 3.3, a niestety przyszło mi przywrócić „do celów archiwalnych” wersję 2.0.

    Na serwerze było zainstalowane Gentoo, w wersji -5 wstecz, php 5.2 i kilka innych fajnostek ;-). Po przegryzieniu się przez combo nginx+apache+mod_perl, dostawałem komunikat podobny do tego poniżej.

    Software error: Magic number checking on storable string failed at blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/thaw.al) line 415, at ../..//Kernel/System/Cache/FileStorable.pm line 128
    

    Jak by zajrzeć do pliku FileStorable.pm, to w okolicach linijki 128 jest funkcja, która pokazuje wszystko co, co jest w cache, a co pasuje do zapytania.
    I WTEM! przypomniało mi się, że już kiedyś miałem podobny problem i rozwiązałem go tak samo, tj. kasując wszystko co jest plikiem w katalogu cache. Ponieważ na tym serwerze otrs był zainstalowany w /opt/otrs2,
    katalog z cache był w /opt/otrs2/var/tmp/.
    czyli krótkie:

    find /opt/otrs2/var/tmp -type -f -exec rm -f {} \; 
    

    i po problemie.


  5. Pekao SA Biznes, problem z odczytem klucza USB.

    Luty 26, 2014 by 0verlord

    Dzisiejszy post jest z cyklu #MARUD. Dla niecierpliwych – zassać z GŁÓWNEJ strony najnowsze sterowniki do klucza i NIE zaznaczać instalacji komponentu zabezpieczeń. Zadziała od ręki. NIE POBIERAĆ ANI NIE INSTALOWAĆ STEROWNIKÓW z linków dostępnych po zalogowaniu, bo albo nie mam tam właściwej wersji, albo nie ma najnowszej.

    No to jest sobie bank PEKAO. I jest sobie jego serwis webowy Pekaobiznes24. I jest sobie klucz USB, do autoryzacji transakcji online.
    I jest sobie taki link po zalogowaniu, pod którym można pobrać odpowiednie sterowniki.

    Niestety – po pobraniu i instalacji dostaniemy przeuroczy komunikat „brak karty w czytniku”. Oczywiście przelew się nie podpisze.

    I jest sobie infolinia PEKAO.

    Podejście nr 0: przekierowanie na infolinię Biznesową (bo dzwoniłem na numer, który się pojawia po zalogowaniu się do konta – to nie ten numer był.)

    10 minut słuchania muzyczki + rozłączenie. Sprawdziłem właściwy nr na głównej. Dzwonię bezpośrednio na biznesową.

    Podejście nr 1: pan pyta, skąd pobrałem sterowniki – mówię, że po zalogowaniu jest link. Ok. To przeinstalować wszystko, bo musiało się coś popsuć.
    Nawet pobrałem jeszcze raz, na wszelki wypadek. Rozłączam się, bo wymiana softu zajmuje chwilę. Nie działa. Dzwonię dalej.

    15 minut i reboot później + 10 słuchanie durnowatej muzyczki.

    Podejście nr 2: pan na infolinii pyta, czy zainstalowałem komponent zabezpieczający. Tak. To, źle, reinstall softu jeszcze raz. Rozłączam się, bo bez sensu czekać.

    15 minut później + 15 minut słuchania tej samej durnowatej muzyczki w loopie 2-3 minutowym.

    Podejście nr 3: Odbiera Pani, pyta skąd pobrałem sterowniki, z linka po zalogowaniu. Ok, każe mi kliknąć w narzędzie i poklikać po opcjach. Po 10 sekundach diagnoza – nie ta wersja softu. Wejść na stronę główną i pobrać plik (tutaj konkretne info, który). Przezornie się nie rozłączyłem, bo pani brzmiała bardzo kompetentnie i szkoda by było znowu czekać i trafiać na niedouków. Pobieram, pani każe instalować, nie instalować komponentu zabezpieczeń, kliknąć w wersję, jest właściwa. Klikam w stronę, pyta o pin do podpisu. Naprawione.

    Jak ja bym chciał trafiać na kompetentnych ludzi na infolinii od razu, a nie po bezsensownej godzinie dłubania. I żeby mnie nie rozłączało, i żeby mnie przekierowywało odpowiednio… A ponoć w trosce o najwyższą jakość obsługi klienta wszystkie rozmowy są nagrywane i wykorzystywane do treningu… in my ass chyba…

    Motywacja naprawienia tego problemu była spora, bo pani księgowa podpisywała między innymi i moją fakturę 😉


  6. Firebird, restore bazy i błąd „gbak: ERROR: could not find table/procedure for GRANT”

    Styczeń 22, 2014 by 0verlord

    Jeżeli przy odtwarzaniu bazy Firebirda dostajemy taki błąd jak w temacie, oznacza to, że nastąpiła korupcja 😉 . A dokładniej skorumpowała nam się baza security2.fdb.
    Jeżeli nie robiliście backupu, to trzeba sobie taką wypakować z instalatora i następnie dodać odpowiednich userów przy pomocy polecenia gsec.

    Log z próby
    gbak: restoring privilege for user SYSDBA
    gbak: ERROR:action cancelled by trigger (0) to preserve data integrity
    gbak: ERROR: could not find table/procedure for GRANT
    gbak: Exiting before completion due to errors


  7. Reset hasła Szefa w programie Subiekt GT

    Styczeń 8, 2014 by 0verlord

    Kasowanie hasła szefa w subiekcie jest zadaniem trywialnym, jeżeli mamy hasło do usera sa do bazy MSSQlowej lub możemy się zalogować jako user z uprawnieniami admina (tzw. logowanie zintegrowane, gdzie user, najczęściej Administrator, może się także zalogować do bazy MSSQL jako superuser).

    Operacje wykonujemy przy pomocy MS SQL Management Studio (lub jego odpowiednika, np. Toad SQL). Opis można znaleźć na przykład tu.

    Logujemy się do nazwanej instancji, wybieramy bazę i wykonujemy UPDATE, który skasuje hasło z Szefa.

    UPDATE pd_uzytkownik SET uz_haslo = '' WHERE uz_identyfikator = 'SF';

    Teraz logujemy się i ustawiamy hasło na jakieś bardziej znane.

    Aaaale, może się okazać, że w wyniku zapytania dostaniemy 0 trafień. Dlaczego? Konta Szef może nie być, stąd nie ma identyfikatora SF. No to kto jest Szefem?
    Łatwo to sprawdzić – będzie to user, założony jako pierwszy, czyli posiadający uz_Id = '1'.

    Czyli ogólnie, reset hasła Szefa nawet przy braku konta nazywającego się „Szef” powinien raczej bardziej tak:

    UPDATE pd_uzytkownik SET uz_haslo = '' WHERE uz_Id = '1';

    Ale przy takim resecie, dalej nie wiemy, które konto ma uprawnienia Szefa. Jeżeli jest ich mało – można sprawdzać po kolei. Ale lepiej zadać jeszcze jedno zapytanie:

    select * from pd_uzytkownik where uz_Id = '1';

    Od razu pokaże kto tu jest Szefem ;-).


  8. Dla potomnych, ku pamięci, Windows 95.

    Grudzień 17, 2013 by 0verlord

    Czasami grzebiemy też w takich rzeczach. Parametry powalają, łza się w oku kręci a przedszkolaki mają szybsze zegarki. Jeżeli pamiętasz te czasy i te maszyny, to rispekt men!

    zdjęcie
    zdjęcie
    zdjęcie


  9. Mikrotik i konfiguracja wifi dla gości – część 1: rb w trybie routera

    Grudzień 12, 2013 by 0verlord

    Czasem przychodzą do nas znajomi/krewni/rodzina i chcą się na chwilę podpiąć do naszej sieci bezprzewodowej. W większości domowych zastosowań nie ma z tym problemów – podajemy hasło i już. Tym przypadkiem nie będziemy się zajmować 😉 W końcu mamy urządzenie sieciowe, które może wiele – Mikrotika.

    Będziemy się zajmować rozwiązaniem firmowym albo rozwiązaniem dla ludzi, którzy nie chcą wpuszczać nikogo na stałe do swojej sieci domowej.

    Jednym z takich przypadków jest np. sala konferencyjna, do której przychodzą ludzie spoza firmy, coś tam prezentują, potrzebują się dostać do swoich sieci czy do swojej poczty.
    Ale nie powinni, i nie mogą mieć dostępu do reszty firmowego lanu.

    Jak zapewne wiedzą posiadacze urządzeń typu Mikrotik, np. z serii 951Ui-2HnD albo 751Ui-2HnD, urządzenia te oferują dwa typy pracy: routera i bridge’a – czyli „tryb pomostu”.
    W tej notce rozważymy jednak wariant prostszy w konfiguracji i zrozumieniu, tj. tryb routera.

    UWAGA: wklejenie tak po prostu konfiguracji, którą pokazuję niżej raczej nic nie popsuje, a w niektórych przypadkach konfiguracji domyślnych może nawet zadziałać. Ten wpis nie jest dla tych, którzy szukają prostej recepty na konfigurację. Ale po niewielkich modyfikacjach wszystko powinno zadziałać jak należy.

    Schemat ideowy tej konfiguracji jest pi*oko taki:

      [ router do netu ] 
              \---  [ lanu ] 
                        \--- [ mikrotik z wifi jako router ] 
                                     \--- ( ludzie, dużo ludzi)
    
    

    Minusy takiej konfiguracji to dostęp do wifi dla ludzi – jedno hasło i wlezą wszędzie.
    Możemy to oczywiście ograniczać, np. uruchamiając Mikrotika jako router, uruchamiając na nim NAT i korzystając z dobrodziejstw filtrowania ruchu po IP.

    Ktoś przytomny zauważy, że przecież w ten sposób skomplikujemy sobie setup, bo oprócz odfiltrowania złych, trzeba wpuścić tez dobrych i zaczyna się kombinowanie. A potem zaczyna się bałagan.
    Kolejnym minusem takiego konfiga jest podwójny NAT. Pierwszy na wifi, drugi na wyjściu. Czyli np. żegnajcie VOIPy. Dopuszczalne, ale ogólnie słabe.

    Czyli lepszy schemat byłby taki:

      [ router do netu ]
             \--- [ lan ] --- [ wifi dla gosci ]
                      \--- [ wifi dla pracowników ]
    
    
    

    Ktoś powie – banalne. Kupujemy dwa Mikrotiki, jeden konfigurujemy w trybie pomostu, zakładamy mocne hasło albo podpinamy do serwera Radiusa i wpuszczamy pracowników. Potem kupujemy drugiego, stawiamy go w trybie routera i filtrujemy we wszystkich kierunkach. Skuteczne, ale cóż za przerażające marnowanie zasobów ;-).
    Lepiej pokazać kto wymiata i zrobić to na jednym urządzeniu.

    Czyli będziemy realizować będziemy następujący scenariusz:

    1. stworzymy dwa interfejsy typu VirtualAP – nie będziemy używać interfejsu głównego (wlan1)
    2. stworzymy dwa interfejsy typu bridge – nazwiemy je bridge-local i bridge-remote
    3. dodamy serwer dhcp – żeby goście dostali adresację
    4. dodamy nat – żeby goście wyszli w świat. Raczej nie będą korzystali z VOIPów, więć podwójny nat raczej im nie zaszkodzi.
    5. nałożymy filtry, żeby goście nie rozleźli się po naszym lanie.


    Nie użyjemy głównego interfejsu wifi (wlan1), ponieważ potrzebujemy dwie sieci wifi, które nie będą we wspólnym lanie. Gdybyśmy próbowali ten sam konfig zrobić na głównym i podrzędnym interfejsie wifi, RSTP natychmiast uzna naszą konfigurację za pętlę w sieci i rozłączy drugi interfejs radiowy. A na dwóch podrzędnych interfejsach już się taka sztuka uda.

    Krok 1. tworzymy dwa ifejsy typu VirtualAp (oraz security-profile do nich, czyli osobna, hasła, osobne ssidy, itp).

    Profile nazywają się „guest-wlan” i „firma-wlan” żeby się potem nie pogubić w tej dość zawiłej konfiguracji. Hasła to odpowiednio: DlaObcych i DlaZiemian.

    /interface wireless security-profiles
    add authentication-types=wpa-psk,wpa2-psk management-protection=allowed mode=dynamic-keys name=guest-wlan supplicant-identity=MikroTik wpa-pre-shared-key=DlaObcych wpa2-pre-shared-key=DlaObcych
    add authentication-types=wpa-psk,wpa2-psk management-protection=allowed mode=dynamic-keys name=firma-wlan supplicant-identity=MikroTik wpa-pre-shared-key=DlaZiemian wpa2-pre-shared-key=DlaZiemian

    potem czyścimy główny interfejs wlan1 z SSIDa:
    /interface wireless
    set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-ht-above country=russia disabled=no distance=indoors frequency=2462 ht-rxchains=0,1 ht-txchains=0,1 l2mtu=2290 mode=ap-bridge ssid="" wireless-protocol=802.11

    i dodajemy dwa nowe, slave’y:

    /interface wireless
    add disabled=no l2mtu=2290 mac-address=D6:CA:6D:A8:0C:7C master-interface=wlan1 name=firma-virtual-ap security-profile=firma-wlan ssid=wifi-firmowa wds-default-bridge=bridge-local
    add disabled=no l2mtu=2290 mac-address=D6:CA:6D:A8:0C:7B master-interface=wlan1 name=guest-virtual-ap security-profile=guest-wlan ssid=wifi-guest wds-default-bridge=bridge-local

    Krok 2.tworzymy dwa bridge, -local i -remote, które później wykorzystamy go magii sieciowej:

    /interface bridge
    add admin-mac=D4:CA:6D:A8:0C:77 auto-mac=no name=bridge-local protocol-mode=rstp
    add l2mtu=1598 name=bridge-remote
    /interface bridge port
    add bridge=bridge-local interface=ether2-master-local
    add bridge=bridge-local interface=guest-virtual-ap
    add bridge=bridge-remote interface=ether1-gateway
    add bridge=bridge-remote interface=firma-virtual-ap

    do bridge-local dodaję także lokalne ethernety. Urządzenia z serii (7,9)51 mają kilka portów ethernetowych do wykorzystania.
    Natomiast cała magia jest w pogrubionych linijkach – tutaj dodajemy firmową sieć wifi do bridga do naszego lanu firmowego. A ponieważ to urządzenie w L2 – przeniesie nam dhcp. A ruch wychodzący zamaskaraduje nam NAT na bridge-remote, który nałożymy w kroku 4.

    Krok 3. dodamy serwer DHCP.

    Dodamy go dla gości, i tylko dla gości. DHCP w naszej sieci firmowej (mamy je prawda?) zapewnia inny serwer, tj. albo nasz router, albo nasz serwer AD, albo nasz inny serwer zapewniający DHCP.

    /ip dhcp-server
    add address-pool=default-dhcp disabled=no interface=bridge-local name=guest-server
    /ip dhcp-server network
    add address=192.168.88.0/24 comment="default configuration" dns-server=192.168.88.1 gateway=192.168.88.1

    nie byłem tutaj oryginalny – po prostu użyłem domyślnej konfiguracji.

    Żeby wszytko działało, musimy jeszcze dodać adresację do interfejsu.

    do głównego (teraz to bridge-remote, który spina ether1-gateway i wlan firmowy) – można włączyć dhcp, albo po prostu ustawić statycznie (w tym drugim przypadku należy pamiętać o dodaniu default route) oraz adresacji dla slave (dałem spójne z poprzednimi konfigami)

    /ip address
    add address=192.168.88.1/24 comment="default configuration" interface=bridge-local network=192.168.88.0

    Krok 4. skoro mamy dhcp i interfejsy i wlany – dodajemy nat

    /ip firewall nat
    add action=masquerade chain=srcnat comment="default configuration" out-interface=bridge-remote to-addresses=0.0.0.0 src-address=192.168.88.0/24
    </pre>

    Ale dlaczego bridge-remote a nie ether1-gateway? Ano dlatego, że adresację, oraz nat konfigurujemy na bridgu, a nie na interfejsach podrzędnych.

    Krok 5. a na koniec – odfiltrowujemy element niepożądany:

    (jeżeli oczywiście nasza sieć firmowa ma adresacje 192.168.1.0/24)

    /ip firewall filter
    add action=drop chain=forward dst-address=192.168.1.0/24 src-address=192.168.88.0/24

    A w kolejnym odcinku pokażę, jak to zrobić w druga stronę, tj. jeżeli MT jest w trybie bridge’a. To jest bardziej skomplikowane i zamotane i służy tylko do utrwalenia własnej manii wielkości ;-).


  10. Firebird fb_shash 1.0 – ściągnij stąd.

    Październik 21, 2013 by 0verlord

    Jest taki UDF do Firebirda, nazywa się jak w temacie, shash. Ale ostatnio zniknął z sajta producenta. Dlatego też możesz go ściągnąć stąd. Jest poczyszczony z objectów i binarek na tyle, ile miałem mocy przerobowych. Na zdrowie zatem.