RSS Feed

‘konfiguracja’ Category

  1. Debian testing, collectd, rrdtool plugin: rrd_update_r failed, minimum one second step i zatkane logi.

    Listopad 20, 2012 by 0verlord

    Ok, trafiłem bug w collectd, albo w Debianie testingu, albo w czymkolwiek. Chwilowo jestem za bardzo zarobiony, temat zgłębiać dokładniej. Za to umiem to naprawić ha! 🙂

    Ogólnie logi zapycha taki komunikat:

    Nov 20 21:52:21 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd: illegal attempt to update using time 1353444741 when last update time is 1353444741 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-free.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-free.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-reserved.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-reserved.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)
    Nov 20 21:52:31 baza collectd[7690]: rrdtool plugin: rrd_update_r (/var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd) failed: /var/lib/collectd/rrd/baza/df-root/df_complex-used.rrd: illegal attempt to update using time 1353444751 when last update time is 1353444751 (minimum one second step)

    Wygląda, jak by baza była za szybko odświeżana, stąd komunikat. Internet mówi, że takie coś często się dzieje, jeżeli chodzą dwie instancje collectd’a. Nie mój przypadek.

    Na co należy tutaj dokładnie popatrzeć, to plik z bazą rrd, który wskazuje na błędną konfigurację plugina sprawdzającego miejsce na dysku, tj. konkretniej defaultowy df.
    O co dokładnie chodzi? Ano o to, że plugin df sprawdza sobie /proc/mounts i co tam widzi w Debianie Testingu? Ano np. coś takiego:

    rootfs / rootfs rw 0 0
    (śmietnik)
    /dev/disk/by-uuid/(tutaj uid) / ext4 rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
    (nieśmietnik)

    No więc plugin znajduje dwa razy „/” i aktualizuje zgodnie z planem. Aktualizacja jest za szybko, więc rrd zgłasza błąd.

    Jak to naprawić? Dodać konfig plugina wg instrukcji poniżej (bo defaultowo tenże plugin nie ma konfiguracji).
    Co to robi? Znajduje filesystem typu rootfs, po czym go ignoruje.

    <Plugin df>
    FSType "rootfs"
    IgnoreSelected true
    </Plugin>

    Tadam.{cokolwiek}.


  2. LogicMail, IMAP, BlackBerry 9900 Bold, PlusGSM – nie łączy się z serwerwem

    Październik 16, 2012 by 0verlord

    BlackBerry to taka alternatywa dla innych wiodących producentów telefonów. Pominę recenzje, jakoś mi nie pasuje. Ale w Firmie niektórzy sobie wywalczyli. Jak sobie wywalczyli – tak do do nas trafiło do konfiguracji serwerów poczty.

    Polityka bezpieczeństwa w firmie mówi prosto – poczta przechodzi przez serwery firmowe i nie przechodzi przez żadne inne. Więc domyślny tryb BB odpada. Zostało szukać alternatyw i padło na alternatywę tj. program LogicMail. Tutaj ich witryna.

    Początkowa szybka konfiguracja pozwoliła dodać skrzynkę, połączenie z WIFI pozwoliło rzeczone maile poczytać. Na 2G/3G (i ogólnie, internety z komórki) – nie bangla.
    Szybki rzut oka do przeglądarki – net jednak jest, strony się otwierają. Hm. 😐

    Czyli – na WIFI działa, wysyła, odbiera, synchronizuje, itp. Na 3G – nawet się nie łączy, a komunikat z debugu połączenia mówi: „unknown error”, albo „unable to open connection”.

    Pierwsze podejście było dość radosne, okazało się, że na tym konkretnym numerze nie jest włączona transmisja danych. #fail, było sprawdzić wcześniej. Ale w końcu włączyliśmy transmisję.

    Następnego dnia po aktywacji usługi, jest to samo – Unknown error. Po bliższym rzucie oka wyszło, że to dlatego, że nie został ustawiony APN na właściwy dla PLUSa. Właściwie, to w ogóle nie został ustawiony. Więc internet i przeglądarka działała tylko na defaultowych ustawieniach netu w BB. Mylące.

    Ustawia się to dość prosto:

    opcje -> urządzenie -> zaawansowane ustawienia systemu -> tcp ip -> zaznaczamy Ustawienia APN włączone, wybieramy nazwę APNa (właściwe dla odpowiedniej sieci – Plus ma „internet” bez usera ani hasła). Wychodzimy, zapisujemy, klikamy w Logicmaila i tadam.wav.

    (obrazek tytułowy gdzieś z internetu).


  3. Outlook 2010 i załączniki bez nazwy .dat

    Październik 8, 2012 by 0verlord

    Odbiłem się o ciekawy problem z Outlookiem 2010 – przychodzące załączniki, oczywiście tylko od niektórych ludzi i tylko niektóre (nawet od tych samych ludzi) wyświetlał jako „załącznik bez nazwy .dat”.
    Zanim zacząłem to naprawiać, wyświetlał je w jeszcze dziwniejszym formacie – jeżeli załącznik był dokumentem Worda (.doc) wyglądał tak: „Załącznik bez nazwy.doc”. Potem po którymś Fixicie zostały już same .daty.

    Ciekawe, że to nie jest ten sam problem, co z winmail.dat (opisany np. tu). To jest coś znacznie ciekawszego ;-).

    No to teraz trochę historycznego wprowadzenia w sytuacją. Problem u klienta zaczął się po migracji z Google Appsów na nasze własne rozwiązanie. Oczywiście w 4 innych przypadkach działa jak zwykle bez najmniejszego problemu. Rozwiązanie standardowe, na postfixie i wirtualnych mailboxach na mysqlu.
    Ale ten pan klient miał trochę większe wymagania – np. chciał mieć możliwość ustawiania autorespondera i współdzielenia folderów bezpośrednio z programu pocztowego. Chciał tez koniecznie webmaila, żeby przejście z Gmaila przeszło jakoś mniej boleśnie.
    Wszystkie takie dobrości ma Roundcube. Ładny i zgrabny klient poczty w odpowiednimi pluginami. I tutaj zaczyna się bajka 😉
    To co chciał pan klient, miała tylko wersja 0.8-rc1. Przerobiliśmy tez kilka starszych pluginów, żeby działały i już.

    Problemów nie zgłaszał nikt, zupełnie. Oprócz jednego dyrektora (wiadomo oczywiście, komu się rozwiązuje wszystkie problemy najpierw? ;-)). Pierwszy problem to załączniki, o których pisałem na początku posta. Potem nagle Outlook zgubił stronę kodową. Potem komp zaczął się wieszać, aż zaordynowaliśmy rewinstall.
    Po reinstalce jak to po reinstalce, problemy znikają – nie te. Znowu chaos ze stroną kodową (jak by nie ustawiać – leciało iso-8859-2 wyświetlane jako iso-8859-1) i cały czas załączniki losowo zmieniały nazwy. Co dziwniejsze – po zalogowaniu się przez webmaila załączniki wyglądały jak należy, co tym bardziej kazało szukać rozwiązania w Outlooku pana dyrektora.

    Czego to ja nie zrobiłem, robiłem konto od nowa, czyściłem profile, czyściłem rejestry – nic to nie dało. I nagle, kolejne zapytanie do googla skierowało mnie na stronę niezawodnego forum od wszystkiego (nie nabijam się, tam na prawdę wszystko jest) – elektroda.pl, a konkretnie dyskusja na temat rzeczonego Outlooka (tu link).

    Czytam, a tam wypisz-wymaluj mój problem. Co prawda wątek dotyczy OTL 2007 a nie 2010, ale w końcu M$ lubi powielać stare bugi.
    Kolega grep po konfiguracji Roundcuba pokazał złowieszczą prawdę:

    // Encoding of long/non-ascii attachment names:
    // 0 - Full RFC 2231 compatible
    // 1 - RFC 2047 for 'name' and RFC 2231 for 'filename' parameter (Thunderbird's default)
    // 2 - Full 2047 compatible
    $rcmail_config['mime_param_folding'] = 0;

    Full RFC 2231 compatibile ustawione domyślnie. Starsze wersje Rounecube’a miały to domyślnie ustawione na 1. Przestawiłem, i tadam.wav – przeszedł załącznik z plkrzakiem w nazwie (przy ‚0’ przyszedł jako .dat) wysłany z webmaila… Czyli ostatecznie, konfig do Roundcube powinien wyglądać tak:

    $rcmail_config['mime_param_folding'] = 1;

    Nie podsumuję, bo musiałbym obdarzyć wiązanką kwiatów polskich najbliższa okolicę. Hańba ci głupi outlooku!


  4. [UPDATED do Debiana Wheezy] Hetzner, instalacja Debiana, partycja bios_grub, LVM i RAID

    Wrzesień 27, 2012 by 0verlord

    UPDATE: debian wheezy wymaga trochę więcej miejsca na partycji /boot niż 200M – inaczej image nie bardzo chce się wypakować. Dałem 512M i poszło.
    Czyli:
    PART /boot reiserfs 512M

    (oczywiście filesystem wg własnych upodobań)

    Automatyczny instalator Debiana w Hetznerze pozwala stworzyć w zasadzie dowolną konfigurację partycji pod system. Pomijając te oczywiste konfiguracje z kilkoma partycjami na krzyż, można także wykonać dowolnie skomplikowany zestaw. Np. LVM na SOFT RAIDzie 1 czy też dodanie partycji typu bios_grub.
    Być może moje odkrycia są opisane w hetznerowym wiki, ale nie dałem rady przez nie przebrnąć. Jest zrobione za bardzo „po niemiecku”.

    W każdym razie, należy zacząć od klikania w panel https://robot.your-server.de i wybrania opcji „rescue system”. Potem tylko zapisać wygenerowane hasło i kliknąć w zakładkę „reset”.

    Po zalogowaniu się na system reanimacyjny, wydajemy mroczne polecenie
    installimage

    Uruchamia się instalator w trybie interaktywnym, od razu wrzucając nas do jedynej potrzebnej i sensownej opcji – partycjonera dysku.

    Moje założenie było takie: stworzyć 3 partycje: 1. bios_grub, 2. /boot i macierz RAID 1 pod LVMa.

    NA LVMie miały być partycje wg schematu:

    1. / (root), 20GB
    2. swap, 2x ram
    3. /tmp, 10GB
    4. /var, 20GB
    5. /home reszta

    Jak to teraz poustawiać? Ano tak:

    opcje obowiązkowe w pliku to:

    SWRAID 1
    SWRAIDLEVEL 1

    Pierwsza włącza raid, druga włącza go w trybie mirror. Jeżeli ktoś chce inaczej, można też wybrać stripping (0).

    można też ustawić HOSTNAME.

    Potem konfiguracja partycji, wg schematu:

    PART mountpoint/lvm filesystem/VG rozmiar

    A potem już konfiguracja właściwa:

    #PART /plumk reiserfs 100M
    PART /boot reiserfs 200M
    PART lvm wolumen all

    Dlaczego tak? Ano dlatego, że instalator po stworzeniu partycji, próbuje je wszystkie zamontować, ignorując podstępnie dyrektywy punktu montowania ustawione na „none” (które przechodzi kontrolę składni). Potem partycję odmontujemy, zmienimy jej typ i wszystko będzie dobrze.

    UPDATE: hm hetzner okazał się mądrzejszy, i sam taką partycję zakłada, bez ingerencji usera. Więc można spokojnie olać dodawanie tej partycji na własną rękę. Czyli ostatecznie z wpisu powyżej trzeba uwalić dodawanie dodatkowej partycji z mountpointem /blah.

    W takiej konfiguracji musimy nazwać niżej nasz VG „wolumen”.

    LV wolumen root / reiserfs 20G
    LV wolumen swap swap swap 8G
    LV wolumen tmp /tmp reiserfs 10G
    LV wolumen var /var reiserfs 20G
    LV wolumen home /home reiserfs all

    F10, yes i instalator sobie walczy, a potem robi jak chcemy. 🙂

    Jak mi się wydaje, instalator jest oparty na czymś takim jak Fully Automated Debian Install, kiedyś z niego dość mocno korzystałem, polecam.


  5. Debian Squeeze Apache i moduł suphp, który jednak działa

    Wrzesień 6, 2012 by 0verlord

    SuPHP to taki ładny wrapper poprawiający bezpieczeństwo serwera www, jeżeli gościmy na nim bandę dzikich skryptów a jeszcze dzikszych userów. Pozwala na uruchamianie skyptów php z takim uidem jak ma owner plików na serwerze. Proste, skuteczne. Oczywiście mniej wydajne niż php bez tego wynalazku, ale jak to zwykle bywa, jest to odwieczna walna: bezpieczeństwo kontra funcjonalność/wydajność.

    Jeżeli po instalacji modułu, skrypty dalej wykonują się z prawami usera www (np. w defaultowej instalacji: www-data) trzeba wyłączyć, powtarzam wyłączyć moduł php5. Restart apacza i działa.
    Niby to jest w dokumentacji i niby o tym czytałem, ale na działającym wcześniej serwerze, to mi już drugi raz umknęło i debugowałem jak ostatni baran :-/

    Zainstalować moduł:
    aptitude install libapache2-mod-suphp
    a2dismod php5
    a2enmod suphp
    /etc/init.d/apache2 restart

    A reszta to już manipulacja w konfigu:

    /etc/suphp/suphp.conf

    i czytanie loga w domyślnej lokalizacji:

    /var/log/suphp/suphp.log

    Sprawdzamy, umieszczając w katalogu, np. domowym public_html, np.taki „skrypt”.

    <?php system('/usr/bin/id'); ?>

    Efekt w przeglądarce powinien wyglądać jakoś tak:

    uid=1002(miszcz) gid=100(users) groups=1003(miszcz),4(mrocznaadministracja)

    Ku pamięci.

    EDIT: i oczywiście, jak już popełniłem posta, to znalazłem setkę tutoriali które mówią dokładnie to samo co ja teraz ;-). Odpowiedzią na źle zadane pytanie jest milczenie, po prostu.


  6. Linux-vserver, hit the barrier, reiserfs i jak to naprawić

    Sierpień 10, 2012 by 0verlord

    Linux-vserver zanim został uznany za przestarzały i zastąpiony containerami lxc był całkiem sensownym odpowiednikiem BSDowych jaili.
    W ostatnich wersjach z loopbackiem jest już całkiem używalny i pozwala na sensowną separację i zarządzanie zasobami dla rozmaitych usług.

    Tego posta piszę bardziej jako przypominajkę dla każdego, kto trafi na problem z filesystemem wewnątrz guesta, który objawia się losowymi problemami z dostępem, znikającymi plikami i urządzeniami i ogólnymi randomami w środku vservera.

    U mnie problemem okazała się interakcja reiserfsa i vservera. Kilka razy na dobę odlatywały różne części różnych guestów i ogólnie działy się złe rzeczy.

    Przyczyny i rozwiązania należy szukać na hoście. Dmesg najczęściej w takich przypadkach pokazywał, że plik, który akurat zniknął na gueście, jak to malowniczo określił mój kolega: „hitnął w barierkę”. Kawałek loga może wyglądać np. tak:

    [2053443.951267] vxW: [?ps?,12778:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.
    [2053445.370697] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d050980[#0,5] ?/dev/pts/2?.
    [2053445.370706] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d050980[#0,5] ?/dev/pts/2?.
    [2053445.371055] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.
    [2053445.371062] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.

    albo tak:

    808950.409850] vxW: [?ruby?,25311:#40052|40052|40052] did hit the barrier.
    [808950.409856] vxW: [?ruby?,25311:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
    [808950.410268] vxW: [?ruby?,25311:#40052|40052|40052] did hit the barrier.
    [808950.410271] vxW: [?ruby?,25311:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
    [808962.531726] vxW: [?ruby?,25807:#40052|40052|40052] did hit the barrier.
    [808962.531731] vxW: [?ruby?,25807:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
    [808962.532145] vxW: [?ruby?,25807:#40052|40052|40052] did hit the barrier.
    [808962.532148] vxW: [?ruby?,25807:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.

    W tym drugim przypadku kilka gemów przestało działać, wysadzając z ten sposób jedną z aplikacji railsowych. Poziom randomów powodował, że ilość hitów w google z błędami często spadała poniżej 1 (słownie: jednego) wyniku.

    Jak się okazało, jeżeli ma się reiserfsa, należy partycję, na której znajdują się fizycznie guesty zamontować z parametrem user_xattr. Tak to wygląda w moim fstabie:

    /dev/md5 /home reiserfs rw,user_xattr 0 0

    Dodajemy parametr w fstabie, wykonujemy mroczne zaklęcie:

    mount -o remount,rw,user_xattr /home

    (jeżeli nie pomoże, to rebootujemy hosta) i cieszymy się światem bez barrier ;-). A jak już nas spotka hit w barierę, to wykonujemy kolejne polecenie, które usuwa barierę.

    setattr -R --~barrier katalog/na/mainie

    A ogólnie,bariera to taki mechanizm niepozwalający na ucieczkę z guesta do innych zasobów. Można o tym dokładniej poczytać tu.


  7. backupninja, rdiff i ssh na innym porcie

    Lipiec 28, 2012 by 0verlord

    ninja z mieczem

    Backupninja, narzędzie do… backupu 😉 Jeżeli ktoś jeszcze nie zna, to polecam. Backupninja to taki podręczny zestaw dzikich skryptów, które zrobią za nas co trzeba. W sam raz na hosty, gdzie nie ma żadnej automatyki, a kopię by wypadało zrobić. No i się przy tym nie za bardzo napracować.

    Klika się to banalnie prosto, wystarczy uruchomić narzędzie, które nazywa się „ninjahelper” a następnie wybierać odpowiednie pozycje z menu.

    Generowanie właściwej konfiguracj jest banalnie proste – wybieramy katalogi które trzeba dodać (include=), potem te, których nie chcemy backupować (a jakże: exclude=), potem wybrać miejsce przeznaczenia (domyślnie – zdalny host) i kliknąć „test conn”, które nie robi nic innego jak testuje połączenie, generuje klucze ssh, dopisuje do authorized_keys itp. A jak wszystko działa, uruchamia rdiff-backup i przewala co trzeba i gdzie trzeba, czyli w tym przypadku nasze dane na serwer backupu.

    Ale co, jeżeli na hoście z backupem sshd wisi na dziwnym porcie (praktyka standardowa omijania skanów i bruteforcujących proste hasła botów) ?

    Piszę o tym, bo nie znalazłem w manualu rozwiązania – znalazłem je w kodzie. Interesująca nas sekcja konfiga wygląda tak:

    [dest]
    type = remote
    directory = /katalog/docelowy
    host = host_docelowy
    user = bekap
    sshoptions = -p 1234

    Ogólnie komentarz jest zbędny, konfig tłumaczy się sam. Ale znajdź pan „sshoptions” w którymś manualu :-P. Smacznego.


  8. Windows update, błąd 80244018 i jak go naprawić

    Czerwiec 22, 2012 by 0verlord

    Problem okazał się dość trywialny. Po tym, jak nie zadziałały wszystkie sugestie, które w tym temacie ma internet (włączyć inteligentny transfer w tle, włączyć windows update, opuścić zaporę, uruchomić MS Fixit’a), poszukałem głębiej.

    Windows update i jego inteligentny transfer w tle, to nic innego jak pobieranie cabów z aktualizacjami po http.
    A ten numer błędu oznacza, że zamiast otrzymać odpowiedź 200 OK, system dostał 403 Permission Idź Precz.

    Tylko skąd to się wzięło i dlaczego np. Windows XP, który stoi zaraz obok, aktualizuje się bez problemów?
    Po drodze mam Squida, więc zajrzałem w logi, a tam np. takie coś:

    1340345769.540 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/updt/2011/04/windows6.1-kb2506928-v2-x64-express_23d6b471222697d7fba8e25c305ab6d661dd4324.cab - NONE/- text/html
    1340345769.628 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/updt/2011/04/windows6.1-kb982018-v3-x64-express_6daea780a222e001dc64d67b979af052bce270c3.cab - NONE/- text/html
    1340345769.712 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/secu/2012/04/graph-x-none_5df373440beed2576fe78d0ef0ebc6b90db3fc8c.cab - NONE/- text/html
    1340345769.783 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/secu/2012/04/excel-x-none_efe9948d82dfd419d0cf40aa4c0d1912104a50e8.cab - NONE/- text/html
    1340345769.876 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/secu/2012/04/vviewer-x-none_0dbaa8870c042c1a99faa4c5425d311252c34984.cab - NONE/- text/html
    1340345770.029 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/crup/2011/11/proof-en-us_47e02b746959bae289bf3061847380074a801d52.cab - NONE/- text/html
    1340345770.078 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/crup/2011/11/proof-de-de_440d1b4f0aa94495b9dda1e1c9b4a81f0ac554b9.cab - NONE/- text/html
    1340345770.080 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/crup/2011/11/proof-pl-pl_d326a19a46259642c5edf4acca2e155bfc42e1dc.cab - NONE/- text/html
    1340345770.177 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/secu/2012/03/windows6.1-kb2653956-x64_5cfdaba5a52326088faab671f21fcd807c8b8768.cab - NONE/- text/html
    1340345770.275 0 ipek TCP_DENIED/403 361 HEAD http://download.windowsupdate.com/msdownload/update/software/secu/2012/05/windows6.1-kb2659262-x64-express_16922c62a2473b40cf0d69a45f4f9162ef5ce6d2.cab - NONE/- text/html

    Kluczowe jest tutaj, dlaczego HEAD powoduje 403? Ano dlatego, że (jak sobie już przypomniałem), kiedyś musiałem przejść przez dość wrednie napisaną witrynę, która wygaszała sesję php jak wget -m posyłał jej HEAD, żeby sprawdzić, czy już pobrał zawartość, czy nie pobrał. Regułka w Squidzie wygląda tak:

    acl Safe_method method CONNECT GET POST
    http_access deny !Safe_method

    Nie ma HEAD? Nie ma. No to deny. I w ten oto sposób pokonałem się sam. Żeby było wszystko jasne, tej regułki nie ma domyślnie w konfigu Squida, została dodana na potrzeby tamtej krzywej strony.


  9. Samsung 4GE LTE GT-B3800 – mobilny hotspot od Plusa [aktualizacja: 10-01-2012]

    Maj 15, 2012 by 0verlord

    UPDATE: widać trafiliśmy na jakąś kulawą partię – od miesiąca mamy w firmie 10 takich modemów i tylko jeden sfixował na tyle, że trzeba mu było zrobić reset do ustawień domyślnych. Ludzie narzekają na przegrzewanie się pudełka i nie zawsze zasięg jak na innych modemach. Ale jak jest LTE, to działa jak trzeba.

    UWAGA: zostawiam ten opis jako historyczny, natomiast proszę zacząć czytania od samego dołu, komentarze + ostatnia aktualizacja ujawnia krwawą prawdę, niestety.

    Urządzenie jest całkiem zacne – robi za mini hotspot GSMowy, pozwalając podłączyć do pięciu urządzeń na raz. Oferuje coś takiego Plus, czy inni też – nie wiem.

    Pierwsze wrażenie jest całkiem zacne. Ładne, małe, zasilanie ma z mikrousb, więc od biedy można doładować z komputera w przypadku braku sieci (ładowarkę sieciową też dodali). Bateria ma 1500 mAh, więc teoretycznie powinno jej wystarczyć wg producenta na 216 minut działania – ale stawiam czas zależny od liczby podłączonych urządzeń.

    W środku jest mini router, ma dhcp, ma przekierowanie portów i proste filtrowanie sieci bezprzewodowej po macu. Można też wyłaczyć zabezpieczenia, jeżeli chcemy się podzielić naszym linkiem z najbliższym (i tym dalszym też) otoczeniem.

    Z minusów – nie udało mi się we Wrocławiu złapać jak na razie LTE, podobno nadajników jest niewiele (wg pana konsultanta z salonu – wszystkie 3).

    Urządzenie ma też wyraźnie zauważalny i irytujacy czas łapania sygnału. Kilka razy zdarzyło mi się tak, że musiałem się zalogować do interfejsu i kliknąć wielki czerwony przycisk „connect”. Kto wie, może jak bym wyłaczyć LTE i zostawił tylko 3g/2g to byłoby szybciej, ale nie chciało mi się sprawdzać. W końcu miała być moc LTE, 3g to ja mam ziomy, w telefonie ;-).

    Tak czy siak – urządzenie jest całkiem zacne i umożliwia zestawienie chwilowego punktu w netem tam, gdzie jest to potrzebne nie tylko nam. Oczywiście, malkontenci od razu powiedzą, że ma to iPhone, i pewnie nie tylko on.
    Oczywiście jest to teoria słuszna, jeżeli nie trzeba np. z takiego mobilnego hotspota telefonicznego np. zadzwonić.

    No i wygląda całkiem ładnie, mały, lekki i estetyczny i prosty w obsłudze. Mogę polecić.
    Ale za obiecywanie LTE plus ma u mnie minus. Wielki.

    update z 19-06-2012:

    dzisiaj do mnie wrócił modem od usera z wielkim *rwa mać. Podsumowując usterki i jęczenie usera:

    • przez około 10 dni nie było z nim problemów, następnie się zaczęły,
    • zrywało połączenia,
    • nie łączyło się,
    • wieszało się
    • na koniec przestał nawet świecić lampką.

    W związku z powyższym moją poprzednią pozytywną opinię uznaję za pozbawioną solidnej podstawy, a komentarza za jak najbardziej uzasadnione. Co za złom.


  10. Administracja systemem Linux i nie tylko – dobre praktyki

    Kwiecień 18, 2012 by 0verlord

    Jak „dobrze zarządzać” systemem operacyjnym, jak klikać, żeby się nie pogubić i wreszcie – jak to wszystko zrobić dobrze.
    W ogóle, chwila usprawiedliwienia – piszę o tym, bo w ramach podsumowania własnej pracy wyszło mi, że co przejmowaliśmy adminkę po kimkolwiek – skala rozwiązań i chaosu powodowała problemy takiego sortu, że powinienem sobie dodać na Linkedinie skilla Linux archeo-ninja-terminator. Już nawet nie mówię o nieaktualizowanych zabytkach typu CentOS 5.2 albo Ubuntu 8.04.

    Ogólny wniosek jest prosty – ilu administratorów, tyle najlepszych i w ogóle pomysłów. Przez chwilę zatęskniłem za Windowsem, w którym niektórych rzeczy nie da się sklikać inaczej, bo inne chore rozwiązanie na to nie pozwala. Ale za to wiadomo, gdzie szukać

    Ale miało być o tym, jak robić, a nie jak nie robić.

    Pierwsza sprawa, to porządek. Niby wszyscy to wiedzą, ale jeżeli się tego nie pilnuje od początku – po roku czy dwóch nawet dowolne distro linuxa nadaje się do przeinstalowania. Co tam jest, nie wie nikt, od czasu do czasu wybuchają różne biblioteki, nadpisane przy okazji instalacji różnego ciekawego lub w efekcie nieciekawego oprogramowania. I o ile Windowsy mają deinstalatory (gorsze lub często beznadziejne) o tyle Linuxy już nie do końca.
    Jeżeli ktoś używa tylko oprogramowania w postaci binarnej (paczki czy porty) – jest prosto. Instalacja jak potrzeba, deinstalacja jak system „przytyje” i już. Ale czy aby w każdym przypadku tak jest?

    Zatem zbierając kilka mądrości nabytych:

    • korzystaj z programów w postaci binarnej – nie słuchaj tych, którzy chcą wszystko kompilować. W dzisiejszych czasach to sztuka dla sztuki, na dodatek przy większej ilości serwerów – szkodliwa sztuka (ale o tym za chwilę).
      korzystaj z natywnych managerów oprogramowania dla danej dystrybucji (np. na Debianie jest alien – narzędzie do przetwarzania rpmów na deby, produkuje deby, i owszem, ale potrafi nadpisać kawał systemu swoimi skompilowanymi pod inne biblioteki softem, które potem trudno nawet wywalić z systemu). Binarki mają dodatkowo jeszcze jedną zaletę – nie śmiecą w systemie pozostałościami po kompilacji.
    • jeżeli już musisz cokolwiek kompilować – poznaj FHS (filesystem hierarchy standard, czyli co się gdzie w danej dystrybucji/systemie znajduje) dla lokalnego systemu (dla Debiana mamy do dyspozycji całe drzewo /*/local, /usr/local, /var/local – jeżeli cokolwiek tam wrzucamy – system tego nie nadpisze, ani my nie nadpiszemy systemu. Jeżeli nie masz bladego pojęcia o czym mówię – nie kopuj bezmyślnie z sieci przykładów. W przypadku kompilacji główny katalog najczęściej określa opcja --prefix. Nie /usr i nie /. Daj np. /opt, albo chociaż /moje. Wtedy będzie łatwiej zapanować nad różnicami pomiędzy kompilowanym narzędziem a systemem.
    • poznaj dokładnie swój system – np. dowiedz się, gdzie trzyma konfigurację np. apache. W Debianie jest to /etc/apache, w starych wersjach RedHata czy innych CentOSów było to /etc/httpd. W Debianie demon nazywa się apache2, gdzie indziej najczęściej httpd, więc warto to wiedzieć zanim make install narobi spustoszenia w podstawowym drzewie plików i katalogów)
    • jeżeli cokolwiek chcesz dodać do systemu – poczytaj jak to zrobić zgodnie z zasadami adminki tymże. W Debianie (tak, jestem wyznawcą) jest coś, co nazywa się The Debian Way, czyli sposób zrobienia tego tak, żeby ktokolwiek nie siądzie do systemu rozezna się z nim w chwilę moment – o ile także podąża Debian Way’em.
    • naucz się narzędzi administacyjnych dla właściwego systemu i używaj ich. To procentuje po jakimś czasie, szczególnie w przypadku konfiguracji, których nie dotyka się często.

    Ok, ale jakie są korzyści przestrzegania takich niewygodnych czynności? W przypadku adminki jednym system – żadne. Serio. Nie ma potrzeby męczyć się i robić coś zgodnie z którymś wariantem standardu. Pomijając oczywiście przypadku, w których szukamy pomocy – wtedy może się okazać, że nikt nie jest nam w stanie pomóc, bo nie trzymamy standardu. Znacie to? Ile wpisów na forum kończy się mniej więcej tak: „a bo u mnie było to trochę inaczej, ale już znalazłem i podmieniłem ścieżki/biblioteki/konfigi”. Albo ile wpisów okazuje się gonieniem własnego ogona z powodu którejś drobnej zmiany dawno temu w przeszłości?

    Czyli podsumowując: jeżeli jesteśmy adminem własnego systemu i ten system robi to co chcemy, to jak byśmy nie prowadzili hosta – będzie dobrze. Ale jeżeli zaczynamy przygodę z systemem – warto już robić to jak większość i standard, chociażby po to, żeby ktokolwiek mógł nam pomóc. Ludzie nie wiedzą, jak popsuliśmy własny system. Nawet nie podejrzewają zajebistości naszych rozwiązań ;-).

    Teraz o tym, dlaczego standardy są ważne w przypadku pracy z innymi ludźmi i większą ilością systemów niż jeden.
    Weźmy najprostszą sytuację do wyjaśnienia – jest sobie dwóch adminów, którzy pilnują większej ilości systemów.
    Idealnie, jeżeli są to te same dystrybucje. Jeżeli nie – nie jest źle, specjalizacja jest jak najbardziej wskazana, ale trzeba tutaj zapewnić jedną bardzo ważną rzecz. W przypadku nagłego zgonu lub innego przypadku losowego specjalisty – trzeba mieć pewność, że zanim tenże zmartwychwstanie, ktoś będzie w stanie podnieść usługę lub serwer. I że zrobi to szybko i nie popsuje bardziej niż pomógł.

    Przykład prosto z życia. Ogólnie ja się zajmuję Linuxami w firmie, a kolega klika AD. Ale wszystko mamy zrobione zgodnie ze znanymi standardami w sieci. Przykład z AD: wiem gdzie leżą skrypty do dodawania usera do domeny od razu ze wszystkimi wpisami w GPO, wiem z grubsza jak się debuguje podstawowe problemy związane z brakiem możliwości zalogowania się do domeny. Od biedy potrafiłbym nawet dodać ręcznie usera, jak by mi skrypty wybuchły. Najwyżej bym go klikał kilka godzin, szukając po kolei, która grupa odpowiada za co.

    Ale jestem w stanie to zrobić relatywnie szybko, bo grupy są tam, gdzie Internet mówi, że mają być. Nazywają się tak, że na podstawie samej nazwy kojarzę OCB – patrz SHARE_SKANY_RW (grupa mająca możliwość zapisu do share sieciowego SKANY).
    Ok, może i nie umiem dodać drukarki tak, żeby się dystrybuowała przez GPO, ale to nie jest kluczowa usługa i wytrzyma do momentu, w którym pojawi się kolega i orypie mnie, że jeszcze nie dodałem drukarki ;-). A jeżeli będzie taka potrzeba, dość szybko odnajdę pierwszy lepszy tutorial na sieci i sklikam to sam – bez szkody dla standardu.

    W przypadkach Linuxowych jest jeszcze prościej – obaj wyznajemy Debian Way. Czyli np. nowe vhosty do apache dodajemy w /etc/apache2/sites-available i potem je włączamy przy pomocy a2ensite (albo chociaż ln -s).
    Dovecot ma konfigurację w /etc/dovecot/conf.d i tam też dodajemy nowości, czy edytujemy opcje. Pewnie, można w konfigu zrobić include i dodać katalog w lokalizacji z dupy, ale szukanie tego komu innemu zajmie wieki. Jeżeli dodajemy coś do crona, to używamy katalogów /etc/cron.d, itp, itd.

    A co do przestrzegania standardu, na przykład weźmy openvpna. Jeżeli się go klika komukolwiek, robi się to na początku. Trochę pracy jest, pewnie, ale potem cisza i spokój przez dłuższy czas. Ale potem przychodzi mroczny czas po np. roku, gdzie trzeba dodać nowego usera. I teraz seria bolesnych pytań: gdzie jest CA? Jak się dodawało certyfikat i klucz dla danego klienta. Jaki był standard dodawania userów na tym serwerze. Czy jest CCD? Czy jest hasło na klucz? Jaki jest podstawowy konfig? Ratunku? Pomocy? 😉

    Pytań może być jeszcze kilka i nie mówię, że problem nie jest nieogarnialny. W końcu odnajdziemy sposób, w jaki to konfigurował ktoś przed nami. Tylko zajmie to nieporównywalnie więcej czasu niż gdybyśmy wiedzieli jak to się robi i gdzie tego szukać. No i najważniejsza rzecz w tej całej zabawie – możemy spokojnie oddelegować zadanie koledze, jeżeli akurat składamy rozsypaną macierz czy szukamy pozostałości po włamie na serwer poczty.

    A jeszcze bardziej na koniec, najlepsze do trzymania porządku są automaty. Do wyboru jest kilka rozwiązań, chef, cfengine czy inne płatne i niepłatne wynalazki. Nawet jeżeli komuś nie odpowiada żadne z rozwiązań – jeżeli się napisze swoje własne, tak czy inaczej porządek i standard zostanie wymuszony w obrębie własnego zbioru hostów do zarządzania. Automat nie zapomina, ale i nie wybacza – jeżeli zapomnimy dodać konfiga, system zrobi to za nas. Ale i nadpisze lokalne zmiany, więc trzeba się dobrze przymierzyć do takiego rozwiązania.

    A obrazek z początku posta ma symbolizować sytuację, w której się znajdziemy, jeżeli na obcym systemie będziemy szukać właściwej drogi w rozwiązaniu autorskim umysłu, który przed nami coś połatał i działało aż do chwili temu. Najkrótsza droga do celu niekoniecznie jest najlepsza ;-).