Złośliwości sprzętowe

(z góry przepraszam za masę polskawo-anielskawych słówek ;-))

Ostatnio w firmie zajmujemy się łączami radiowymi. Obecne założenia to szkielet sieci na
urządzeniach Proxim Tsunami 5GHz, i łącza końcowe na 2.4Ghz. Jedno łącze 5GHz
działa już od paru tygodni i jest przez nie podłączona jedna duża sieć
osiedlowa. Niestety działy się z tym różne dziwne rzeczy (zawisało od strony
ethernetu satelity lub stacji bazowej). Upgrade firmware do 2.0 tylko pogorszył
sprawę. Na szczęście pojawiła się wersja 2.0.1, która wydaje się rozwiązywać
problem (przynajmniej na razie).

To był konkretny błąd, który najprawdopodobniej został naprawiony (ale wciąż nie
wiem na czym polegał), jednak pewne felery tych Proximów pozostają bez zmian, a
podczas wymiany firmware dały się mocno we znaki. Po pierwsze czas rebootu.
Urządzenie restartuje się kilka minut, a trzeba je restartować po większości
zmian w konfiguracji. Naprawdę nieprzyjemne. Po drugie — interfejs do
zarządzania przez WWW — nawet dość wygodny, ale jedynie w
przedlądarce z JavaScript. Oczywiście ze standardami W3C ma niewiele wspólnego.

Ze względów bezpieczeństwa adresów access-pointów nie routujemy w świat.
Niestety z routera nie da się tym zarządzać, bo tam nie odpalę graficznej
przeglądarki (wiem, że jak się uprzeć to się da, ale ja nie chcę). Postanowiłem
sobie więc forwardować porty przez SSH. I to nawet działa — dopóki nie
próbuję zmienić jakiegoś parametru. Zmiany robione są przez funkcje JavaScript,
które odwołują się do urządzenia po HTTP, ale z konkretnym IP, czyli nie przez
127.0.0.1 na który mam porty przekierowane. Muszę więc dla każdego urządzenia:
1. przeforwardować port przez SSH i 2. dodać regułkę iptables przekierowującą
odwołania do adresu urządzenia na tak przeforwardowany port. Kupa roboty jak na
interfejs mający ułatwić pracę administratorowi. 😦

Ale te Proximy są i tak lepsze niż AP DLinka (2.4GHz). Ten ostatni też ma interfejs
WWW do zarządzania, jednak nie działający w żadnej Linuksowej przeglądarce. Żeby
zmienić jakiś parametr muszę to badziewie podłączać do Win*. Brrrr…

Najlepiej wypada interfejs WWW switchy DLinka. Też używa JavaScript,
miejscami nawet Java (nawet do wyświetlenia tabelek!), ale można go normalnie
forwardować i działa w Firefoksie. Jest nawet dość wygodny, miejscami może nawet
bardziej niż telnetowy interfejs (bardzo fajny, pełnoekranowy) ze starszych
switchy tej firmy. W jednym (a może nawet nie tylko jednym) switchu mam nawet SSH,
ale połączenie (dokładniej wymiana kluczy) trwa tak długo, że raczej nie będę
używał.

Wracając do AP DLinka — w czwartek skonfigurowałem jeden taki do pary
z odpowiednim urządzeniem Proxima do radiołącza na 2.4GHz. Podłączone w biurze
działało. Wczoraj zamontowali Proxima na kominie, DLinka na dachu w pobliżu.
Było to jak już kończyłem pracę, ale donieśli mi telefonicznie, że to nie
działa. Podobno DLink nie odpowiadał nawet na pingi po ethernecie i
nawet po resecie do ustawieni fabrycznych — tzw.
zgon. Dzisiaj więc skonfigurowałem innego DLinka (tego samego typu) i pojechałem
go podłączyć na tym dachu. Niby wszystko OK, nawet DLink pisze że połączył się z
AP. AP (Proxim) przez jakiś czas pokazuje, że DLink jest podłączony, ale potem
go znika z listy. No i łącze nie działa. Kombinujemy jak możemy,
wyłączamy wszelkie filtry, szyfrowanie itp. i nic. Zadzwoniłem więc do drugiego
admina, żeby spróbował reanimować tego martwego DLinka. Okazało się że
jest sprawny i normalnie odpowiada na domyślnym (fabrycznym) IP.
Poprosiłem o sprawdzenie wersji firmware. Okazało się, że w tym niby
martwym
jest firmware 2.0.7 (piszę z pamięci), a w tym który próbowaliśmy
uruchomić 2.0.3. Kazaliśmy przywieść tamten. Skonfigurowałem, podłączyłem… i
ruszyło :-). Ufff.

Potem jeszcze w firmie trochę walczyliśmy z VLANami. Postanowiliśmy wydzielić
tę nową sieć do osobnego VLANa. Jednak był problem w skonfigurowaniu switchy, bo
nie mogliśmy się połapać na których portach ma być (w grę wchodziło 6 switchy 24
portowych)… nie ma to jak dobry bajzelek ;-). W końcu się
udało i chyba na razie wszystko działa jak należy. Oby jak najdłużej.

P.S. poprzedni wpis dla wybranych zalogowanych

Kto tu jest adminem?

W zapowiedziano mi, że w czwartek dostanę access-pointy i switcha do
skonfigurowania na radiołącze na pewnym kominie w Rudzie Śląskiej. W czwartek
sprzęt przyszedł… o godzinie 15:00 (pracuję do 16:00) i szef powiedział że
muszę to jeszcze tego dnia zrobić. Fajnie… sprzęt, którym nigdy się nie
bawiłem — więc go nie znam, do tego dwóch różnych firm (Proxim i
DLink), a mam go skonfigurować do poprawnego (uwzględniając separację VLANami
itp.) i bezpiecznego działania w godzinę (jak nie będzie działało, to będę się
wdrapywał na komin, żeby poprawiać). Zrobiłem to nawet. Napewno nie optymalnie,
ani nie w pełni bezpiecznie, ale działało.

W piątek dostaliśmy do tego switcha, więc mogliśmy też go skonfigurować i
sprawdzić radiołącze z VLANami. Działało. Na komin nie poszło — widać nie
było to tak pilne. Ale to by było za pięknie, więc pod koniec godzin pracy, po
zwisie innej radiolini szef postanowił to naprawiać. Zrobił upgrade na
access-pointach, po którym siadało wszystko, nawet łącze modemowe do centrali
(po chwilowym odłączeniu AP z radiolini od switcha do którego podłączony był
modem). Jak wychodziłem z pracy (już trochę po 16:00) to niby wszystko działało,
ale szef kontynuował psucie (właściwie naprawianie — przez downgrade
firmware’u do poprzeniej wersji) i jeszcze wieczorem coś trzebabyło przez
telefon ustalać. Dobrze, że przynajmniej nie musiałem więcej osobiście przy tym
grzebać.

Bałem się, że w weekend będę musiał jeździć naprawiać te radiówki, ale na
szczęście nie było to konieczne, więc sobotnia impreza (nie nadająca się do
opisania na tym poziomie) odbyła się praktycznie bez zawodowych zakłóceń.

W poniedziałek w pracy spotkała mnie niespodzianka. Szef przyniósł mi karteczkę
z nazwami i adresami access-pointów ze szkieletu naszej sieci radiowej —
tak jak je skonfigurował po kolejnych zmianach firmware.. Były to
nazwy i adresy zupełnie inne niż ja z drugim adminem ustaliłem i udokumentowałem
w naszych materiałach. Do tego jeden AP miał adres należący do switcha (którego
adresu szef nie zmienił — to switch też ma IP?). No kurde —
kto w tej firmie w końcu jest adminem?

Z jednej strony to nawet fajnie, że sam z tym firmware nie musiałem walczyć i
zajął się tym ktoś inny. Trochę nawet mnie to zaskoczyło, bo ostatnio szef nawet
nie zaglądał do serwerowni, bo prezesowi przecież nie wypada np. restartować
modemów (kiedyś czasem jeździł, bo miał znacznie bliżej niż ja). Z drugiej
jednak strony, to w końcu ja jestem odpowiedzialny za działanie całej
infrastruktury sieci i ja ustalam zasady adresacji, podziału łącza
(przyzwyczaiłem już się do tego, że szef regularni podnosi ponad rozsądny poziom
ograniczenie przepustowości łącza do sieci w której jest podpięty) itp. i raczej
nie powinno tak być, żebym o zmianach dowiadywał się ostatni (przecież mogłem
pół nocy stracić zastanawiając się dlaczego gdzieś pingi nie dochodzą).

Niech się święci 4 maja

Dzisiaj urodziny (drugie) Krysi. Więcej o tym pewnie żona. Ja tylko wspomnę, że byłem pod wrażeniem jak
jubilatka świeczki zdmuchnęła. Wszyscy byli zachwyceni, poza nią samą – ona
wolała jak się świeciły.

A oto co mnie się dzisiaj zdażyło: idąc na pocztę spotkałem dwóch robotników
z budowy, którzy chcieli 40gr, bo im brakowało na piwo. Jeden miał na koszulce
pingwina (raczej zupełnie nielinuksowego). Dałem im mówiąc, że to tylko z powodu
pingwina. Zdziwili się: A co pingwin ma z tym wspólnego. Pokazałem im
pingwiny na mojej koszulce (Pingwinaria 2003). Uznali że zrozumieli.

Na poczcie odebrałem dwie przesyłki – obie z Allegro. Jedna do żony –
spodenki dla małej. Druga do mnie – karta WLAN na PCMCIA: Compex iWavePort
WL11B+. Z Google nie wiele wynikało na temat jej działania w Linuksie, ale mimo
to zaryzykowałem i kupiłem ją na Allegro. Długo nie docierała, a ze sprzedawcą
prawie zupełnie nie było kontaktu, ale w końcu jest. Oczywiście jeszcze dzisiaj
musiałem sprawdzić co jest warta. Okazało się że rzeczywiście jest na chipsecie
Agere, jak wcześniej wygooglałem i że producent chipsetu udostępnia sterowniki
pod Linuksa z pełnymi źródłami na licencji BSD-like – a więc super – jednak
tylko dla kernela 2.4 (wolałbym dla 2.6). Ale jestem dobrej myśli – jak są
źródła, to na pewno jeszcze coś z tego będzie. Mogę poczekać. A właściwie nawet
muszę, bo do mojej drugiej karty – Compex WLU11, na USB – jeszcze sterowników w
ogóle nie ma.

Ostatnio znowu dużo czasu marnuję rżnąc w Crossfire. Jednak ogrywają mnie na
moim własnym serwerze. Mimo to
udało mi się znaleźć parę chwil dla moich projektów. Poprawiłem parę drobiazgów
w CJC i zabrałem się znowu za JJIGW. Może uda mi się zrobić
wydanie całej trójcy – tych dwóch wraz z biblioteką PyXMPP.

Działający parser i kompilowany szablon

Wczoraj udało mi się doprowadzić nowy parser strumienia w PyXMPP do działania.
Nie piszę skończyć, bo zasługuje jeszcze na wiele, głównie kosmetycznych, poprawek.
W każdym razie już CJC z libxml2 2.6.7 dzała, a to najważniejsze.

W pracy dokończyłem analizę tego nieszczęsnego machine check exception
i wyszło mi na to, że błąd został zgłoszony przez north bridge i dotyczy
kontroli ECC w pamięci. Czyli albo pamięć walnięta, albo płyta główna. Będzie trzeba
to sprawdzić i felerny sprzęt wymienić.

Potem na jogu
Marcoosa
przeczytałem o XFN i postanowiłem
użyć tego cuda u siebie. Ale że wymagałoby to poprawienia linków w dwóch plikach
(index.html i comments.html), to postanowiłem najpierw coś z
tym utrudnieniem zrobić. Więc resztę czasu w pracy, pomiędzy telefonami
klientów, spędziłem na tworzenie szablonów do szablonu i systemu kompilacji tego
do formy strawnej przez Joggera. Udało mi się – z kawałków będących well-formed
XML składane jest (XInclude, zaimplementowane w xmllint) szablony dla strony
głównej i z komentarzami. Po drodze jest wszystko walidowane – w tym celu
stworzyłem DTD do szablonów dla XHTML 1.0. Pliki źródłowe się nie walidują, bo
musiałbym zrobić jeszcze DTD uzwględniające XInclude, a docelowy nie waliduje
się, bo ma deklarację DTD dla XHTML, nie uwzględniającą tagów Joggera, poza
deklaracją waliduje się względem tego mojego Joggerowego DTD.

Dla odmiany style CSS tworzone są przy pomocy preprocesora M4. Zrezygnowałem
z używania @import do składania szablonów w przeglądarkach
czytelników, zamiast tego na Joggerze leżą już kompletne, posklejane pliki
stylów. Dzięki temu walidator przestał głupieć, a i strona ma szansę szybciej
się załadować (aby wyświetlić stronę w pełni teraz wystarczy załadować 3 pliki
zamiast 7).

Wszystko razem spięte jest przy pomocy plików Makefile dla
GNU Make Oznaczeń XFN jeszcze nie dodałem. Nie starczyło czasu…
:-)

Obiadek (schabowy z frytkami i surówką) zjadłem Pod Pierożkiem, tak
jak pisałem. I smakował mi bardziej, niż wczorajszy w Sphinksie. Do tego był
tańszy, ale odrobinę mniej.

A teraz zabiorę się za zamalowywanie pamiątek po krysinych obiadkach. Ciekawe
czy po tym ta ściana nie będzie wyglądać jeszcze gorzej…

Czy to się wreszcie skończy?

Paskudny ten tydzień. Na poniedziałku się nie skończyło. :-(

Powodem wolnego działania łącza po zmianie płyty w routerze okazały się
straty pakietów na jednej sieciówce. Dokładnie to był jeden z czterech portów na
czteroportowej karcie D-Link. We wtorek przełożyliśmy kabelek do interfejsu na
płycie głównej (VIA Rhine) i straty ustały. Było nawet lepiej niż na starej
płycie. Super… ale nie długo. Tego dnia też przyszła zamówiona karta
synchroniczna na PCI, ale instalację tego zostawiliśmy sobie na srodę. We
wtorek spatchowałem tylko dla nich kernel PLD. Po pracy okazało się że sieć na
tym VIA Rhine i pomaga tylko reset switchów, a żeby było śmieszniej po resecie
jednego z tych switchy musimy robić ifdown/ifup na serwerze do niego
podpiętym, bo dla odmiany tam sieć zawisa. W końcu jakoś działało dalej.

W środę już z samego rana poszliśmy na serwerownię podłączać nową kartę.
Trzeba było wyjąć serwer z szafy, zainstalować kartę, włożyć serwer spowrotem
(jego miejsce w szafie jest na wysokości około 2m) i wszystko popodłączać.
Klienci zapewne byli zachwyceni, bo trwało to ponad pół godziny a i na tym
przerwy się nie skończyły. Po podłączeniu i uruchomieniu zapatchowanego
kernela wszystko wyglądało dobrze… dopóki nie załadowałem sterownika do
karty. Próba zakończyła się twardym zwisem maszyny, nawet Magic-SysRq nie
pomógł. Po paru próbach z różnymi konfiguracjami postanowiliśmy zadzwonić do
producenta. Dostałem numer telefonu do gościa od tej karty a zarazem autora
sterowników. Niestety nie był w stanie powiedzieć nic konkretnego, jedynie
zasugerował zainstalowanie gołego kernela (no cóż ten z PLD jest rzeczywiście
przeładowany patchami). Cóż było robić. Odpaliłem router bez tego sterownika
(a więc dalej bez POLPAK-a), wróciłem do biura i zacząłem szykować kernel.
Instalację zostawiłem sobie na dzisiaj (czwartek).

Na tym środowe atrakcje się nie skończyły. Około 17-tej znowu siała sieć na
Rhine i trzeba było restartować switcha. Potem pojawiły się duże straty –
okazało się że tabela conntrack się przepełniła (wcześniej był kernel 2.2, a
więc nie było tego problemu). Poprawiłem ip_conntrack_max i było jakby lepiej.
Jednak wieczorem gdy chciałem sprawdzić jak daleko jest tej tabeli do
ponownego przepełnienia (wc -l /proc/net/ip_conntrack) znowu sieć zawisła. I
tym razem restart switchów nie pomógł. Po reboocie (zdalnym, serial-console
rulez) sieć w ogóle nie wstała. Tylko pojawił się komunikat o jakimś problemie
z routingiem przerwań i wynikającym z tego konfliktem. Próbowałem jakoś
skonfigurować routing z pominięciem tego routera (teoretycznie możliwe
rozwiązanie dla większości naszych klientów), ale nic z tego nie wyszło, więc
spróbowałem jeszcze jednego restartu. Tym razem sieć wstała, ale zauważyłem że
komunikat o problemie z przerwaniami też się przy starcie kernela pojawił.
Widać dupiata płyta główna.

Dzisiaj jak już dojechałem do pracy, co stało się 15 minut później niż
zwykle, bo autobus nie dojechał, zabraliśmy się znowu za ten nieszczęsny
router. Najpierw obejrzeliśmy jeszcze raz ten komunikat o przerwaniach i
spróbowaliśmy coś z tym zrobić w ustawieniach BIOS. Potem zainstalowałem nowy
kernel (ten własny, nie z PLD) i załadowałem sterowniki do karty. Załadowały
się, bez zwisu. Potem skonfigurowałem dostęp do POLPAKu – miodzio, znacznie
przyjemniejsza sprawa niż z tą nieszczęsną Sangomą. I zebra nie zdechła po
odpaleniu łącza i interfejs zachowuje się normalnie. Takiej właśnie karty mi
było trzeba… Nie nacieszyłem się jednak długo bo wszystko wisło. Na twardo.
Mieszaliśmy z ustawieniami przerwań itp., ale nigdy nie podziałało dłużej niż
godzinę. Znowu dzwoniłem do autora sterowników, ale nie miał lepszych pomysłów
niż te na które sami wpadliśmy – może to konflikt przerwań, spróbujcie bez
tej karty z którą współdzieli przerwanie
. Ale nie możemy wyciągnąć tej
karty, bo to czteroportówka, która sama zabiera wszystkie cztery przerwania
PCI. Przełączyliśmy jeden kabelek gdzie indziej, tak że przynajmniej jedno z
tych przerwań było nieużywane i mogło zostać tylko dla karty synchronicznej.
Jednak sytuacja bez zmian – nadal się wiesza. W końcu wywaliliśmy ten
sterownik i ponownie wyłączyliśmy POLPAK. Nie wyciągaliśmy karty, żeby nie
powodować kolejnej (tym razem dłuższej) przerwy w działaniu routera. Będąc na
serwerowni oczywiście pamiętaliśmy o wieszającej się VIA Rhine – przepięliśmy
z niej kabelek na 3Coma, który też tam był, może będzie lepiej.

Tej karty synchronicznej mamy już dosyć, jutro ją wyciągamy i spróbujemy
zwrócić. Dzisiaj zamówiłem dedykowany router 3Coma. Jakiś bardzo prosty z
portem V.35 i Ethernet – tak żeby tylko pośredniczył pomiędzy POLPAK-iem, a
naszym routerkiem. Jutro czeka mnie więc wyciąganie karty i instalacja
routera. Ale jak ten nowy router będzie nawalał, to najwyżej POLPAK nie będzie
działa, a na nasze główne łącze nie powinno to mieć problemu. Oby się te
problemy wreszcie skończyły!

A teraz coś bardziej optymistycznego. Wczoraj Krysia opanowała używanie
myszki. Odpaliłem jej TuxPainta (nie pierwszy raz), a ona sama stawiała
pingwinki w mniej-więcej przemyślanym miejscu. Jak tak dalej pójdzie, to zanim
skończy trzy latka (teraz ma niecałe dwa) to będzie chciała poznać hasło roota
:-).

Niezły początek miesiąca

Wszyscy rozpisują się o tym że miesiąc sie rozpoczął. Pewnie dlatego żeby
nie mieć pustej strony na swoich jogach. Ja też napiszę, szczególnie, że mam
na co się poużalać.

A więc przychodzę do pracy, ciesząc się że drugi admin już wrócił
z urlopu i będę miał mniej roboty. Jednak zaraz jak siadłem do kompa
okazało się, że ten nie dostał adresu IP. Biurowy serwerek/routerek
leży. Podpiąłem do niego monitor, klawiaturę, ale nawet zalogować się
nie da. Magic-SysRq ujawnił, że chodzi tam cała masa procesów
„crond” w stanie „D” („zombie”).
Dziwne, ale reboot pomógł.

Już gdy grzebałem w tym biurowym serwerku dzwonili klienci że im net
albo poczta nie działa. Oni nie są podłączeni przez nasz biurowy LAN,
więc już było wiadomo że na drugiej serwerowni (na TPSA) też coś leży.
Gdy w biurze sieć już działała okazało się, że nie ma wyjścia w świat,
a więc leży router brzegowy. On już szwankował od jakiegość czasu
i nawet nowa płyta do niego była (czekała na nową kartę V.35). Ale to
nie wszystko… okazało się że leży także router/serwer obsługujący
sieci osiedlowe.

Poszliśmy na TPSA. Okazało się że router brzegowy leży tak jak
podejrzewaliśmy, jednak reboot nie pomaga (ostatnio za którymś razem
pomagał). No cóż będzie trzeba płytę wymienić nie czekając na kartę
V.35 (stara karta była na ISA, więc do nowej płyty byśmy jej nie
wcisnęli). Serwer od osiedlówek natomiast wisiał podobnie jak ten
biurowy, tyle że tu dla odmiany była masa procesów „smbd”
w stanie „S”. Reboot pomógł.

W końcu udało się i odpalić router brzegowy. W tym celu trzeba było
znależć kartę grafiki która by do niego pasowała i w nim działała
(zwykłe AGP nie wchodziły w slot 1.5V, a jedna PCI po prostu nie
działa w tym kompie) i zorientować się że pamięc należy włożyć do
slotu 3 a nie jeden.

Teraz niby wszystko działa, ale część klientów oraz szef narzekają że
strony ładują się strasznie wolno, a my nie możemy znaleźć powodu…

ech… Mam nadzieję, że nie będzie cały marzec tak wyglądał…

Ktoś se robi jaja, ja se robie jaja…

To zacznę od siebie – w zeszłym tygodniu zainstalowałem sobie
jabberd-2.0b1 na jabber.bnet.pl. Fajny nowy serwerek Jabbera,
obsługujący XMPP w tym autentykację SASL, szyfrowanie StartTLS,
privacy-lists. W ogóle super… tylko że beta. Więc się sypał na okrągło
trochę błędów znalazłem, część poprawiłem, wszystkie zgłosiłem na
JabberStudio (poprawione wraz z patchami). Teraz działa już nieco
lepiej, ale do stabilności jabberd-1.4.x (który swoją drogą był niezłym
i przestarzałym bublem) wciąż mu daleko. :-(. Podziwiam
cierpliwość swoich userów :-).

tkabber-0.9.5beta miał błąd w obsłudze SASL, więc go musiałem sobie
poprawić (zgłosiłem oczywiście też alekseyowi), mając już serwer
obsługujący StartTLS dodałem też tego obsługę do PyXMPP i CJC (trzeba
jeszcze dokończyć weryfikację certyfikatu i obsługę błędów).

Tydzień temu kupiłem (na koszt firmy) kartę muzyczną do mojej stacji
roboczej w pracy. Nie miałem głośniczków, więc do testów pożyczyłem
słuchawki od kumpla – karta działała. Dzisiaj wreszcie skombinowałem
głośniczki. Próbuję coś zagrać… i cisza. :-( Kombinowałem
ze sterownikami – nic, podłączyłem te same słuchawki co poprzednio
– nic, zmieniłem slot PCI – nic. W końcu sprawdziłem jeszcze na
komputerze kolegi (z Windows) – też cisza. To fajnie się tym dźwiękiem
pobawiłem… Na szczęście kumpel miał dzisiaj przy sobie inną kartę
– podobno zepsutą, która „charczy”. Ale zawsze lepsze „charczenie” niż
PC-speaker.

Od piątku mamy problemy z łączami międzynarodowymi. Podobno to przez
atak DDOS na operatora który daje nam łącza – nie mogli się doprosić
o przyblokowanie tego u operatora który daje im łącza międzynarodowe.
Dzisiaj pingi wróciły do normy, nam wszystko działa pięknie, ale klienci
dzwonią że u nich nie. Okazało się, że z naszego routera łączność
w świat jest, ale już od klientów nie. Później okazało się, że gdzieś
w Świecie walnięty jest routing na 1/8 naszej przestrzeni adresowej
– akurat ten zakres adresów który przydzielony jest klientom sieci
osiedlowych… Albo jakiś admin machnął się przy konfiguracji routerka,
albo jakiś chakier bawi się czyimś routerkiem. W każdym razie na szybkie
rozwiązanie problemu podobno nawet nie mam co liczyć :-( .
Ale jak to przetłumaczyć klientom???? :-(