Routerek i partactwa na WWW

Rano wyjęliśmy felerną kartę z routera, zainstalowalismy spowrotem
dystrybucyjny kernel, a ostatnią sieć maskaradowaną przez ten router
przepięliśmy do innego. W południe przyszedł routerek 3Coma. Udało się go
skonfigurować i nawet ładnie działa. Test polegający na ping-floodzie
przeszedł na 5+, innych na razie nie robiliśmy. Nieciekawie natomiast
wyglądał efekt nmapa zapuszczony na tym urządzeniu. Chyba 5 portów TCP
otwartych, w tym telnet, domyślnie bez hasła. Nie rozumiem co za idioci tak
domyślnie konfigurują takie urządzenia. Przecież mogłem zapomnieć sprawdzić.
Co gorsza okazało się że tych usług nie można wyłączyć. Na szczęście dało się
zablokować wbudowanym firewallem. Założyłem więc regułki blokujące wszystkie
połączenia TCP i UDP do maszynki i mam spokój. Na „dużym” routerze, gdy już
POLPAK działa i nie ma żadnej NATowanej sieci, mogłem wywalić moduł
ip_conntrack. Teraz powinien sobie i z kilkoma GB/s poradzić.
:-).

Najlepsze jest to, że dzisiaj, pierwszy raz od początku tygodnia, przez cały dzień nic nam
się nie powiesiło! :-) (odpukać!)

Żona poprosiła mnie o pomoc przy robieniu screenshotów stron WWW, co
zlecono jej w pracy. Pracuje ona w małej lokalnej firmie Linuksowej zajmującej
się głównie tworzeniem serwisów WWW. Te strony które mieliśmy strzelać
wyglądają całkiem nieźle, ale miejscami się rozjeżdżają. Z ciekawości
zapuściłem na nich walidatora W3C.
Masakra :-(. A łudziłem się że przynajmniej mała, linuksowa
firma, prowadzona przez rozsądnych i bardzo sympatycznych ludzi nie będzie
robić takich partactw…. No ale cóż, ja jestem idealista, a oni muszą
przede wszystkim zarobić
. Ale czy na pewno nie da się tego połączyć? Po
prostu wymagać od tych którym się robotę zleca, żeby wynik się walidował?
Konkretne wymaganie odnośnie jakości zleconej pracy, a nie wymagające od
wykonawcy wcale dużo więcej pracy, jedynie odrobinę kompetencji i wiedzy. No
i w wielu wypadkach pozwala uniknąć konieczności testowania strony we
wszystkich możliwych przeglądarkach.

Może hobbystycznie przerobię jedną stronę w zgodzie ze standardami…
ciekawe ile roboty zajmie to mnie. Przecież ja się tym normalnie nie zajmuję
no i nie wiem co autor miał na myśli.

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ł…

Na razie starczy

No i zrobiłem swoje szablony. Nie jestem w pełni z nich zadowolony, ale na
razie szkoda mi więcej czasu na to marnować.

Niektórzy czytelnicy skarżą się na kolorystykę i jej małą czytelność.
Chciałem więc dla nich zrobić alternatywny styl. Okazało się jednak, że
w Joggerze się nie da :(. Nie można wrzucić dodatkowych plików *.css na
serwer, a zewnętrznych nie chcę robić. Jednak okazało się że jak ten jedyny
styl zdefiniuje się jako domyślny (default), a nie trwały
(persistent), to FireFox (polubiłem w końcu tę przeglądarkę)
pozwala łatwo wybrać pomiędzy tym stylem, a swoim domyślnym. Więc jak ktoś
niedowidzi albo ma kiepski monitor, to niech włączy FireFoxa i po kliknięciu
ikonki na dole okna wybierze Basic Theme albo co tam jest
w jego wersji językowej ;-). A wszystkim Joggerowiczom polecam dopisanie
atrybutu „title” do <link type="stylesheet"
.../>
w swoim szablonie.

Czas na własne szablony

No i w końcu i ja zacząłem robić swoje szablony dla Joggera. Szablon
dla strony głównej już właściwie gotowy, do komentarzy może zrobię jutro.
Oczywiście starałem się zrobić wszystko zgodnie ze standardami. Nie tylko
jest Valid XHTML 1.0 Strict, ale także ma np. sensowny podział
nagłówkami h1-h3. Najgorszą robotą było poprawianie wszystkich starych wpisów,
żeby całe archiwum też było poprawnym XHTMLem, ale przy okazji mogłem sobie
poprzypominać co to się w zeszłym roku działo.

Mozilla FireFox

Postanowiłem wypróbować tę przeglądarkę. I pierwsze wrażenie jest
nienajlepsze. Dotychczas używałem epiphany, która wygląda jak powinna (nie
jest okienko zapchane jakimiś śmieciami w stylu jakiegoś sidebara czy
przycisków na pół ekranu), jest szybka i wygodna. Jednak Epiphany ma też swoje
wady – założenia Gnomowe „maksymalnie prosty interfejs” powodują
że menu i okno konfiguracji są stanowczo za ubogie dla mnie. Rozszerzeń też nie
wiele. Wcześniej używałem Galeona, ale w ostatnich wersjach zgnomił się jescze
bardziej niż epiphany. Liczyłem na to, że FireFox będzie OK…

Pierwsze co się rzuca w oczy to powolność FireFoksa. Nie chodzi o engine
renderujący stronę, bo to jest OK, ale interfejs użytkownika. To nie jest
normalne, gdy na komputerze z procesorem Athlon 1GHz widzę jak mi się okienka
rysują. Ale ostatecznie – można się do tego przyzwyczaić.

Druga sprawa wyszła przy próbie instalacji rozszerzeń. Wchodzę na
odpowiednią stronę, klikam na link, potwierdzam chęć instalacji i… większość
z rozszerzeń się nie instaluje z powodu braku dostępu do katalogu chrome. Czy
to znaczy że nie mogą się one po prostu w moim katalogu domowym zainstalować?
Czy muszę odpalać przeglądarkę z roota???? Jasne, można też zainstalować pliki
ręcznie, ale przecież miało być tak prosto…

Po paru minutach przeglądania rozszerzeń na texturizer.net postanowiłem
zajrzeć na joggera. Wtedy lisek się powiesił. Niezły to kawałek oprogramowania,
który można w ciągu 10 minut powiesić…

Istnieje możliwość że FireFox sam z siebie jest OK, tylko chłopcy robiąc
paczki dla PLD coś spieprzyli, ale nie sądzę żeby wszystkie opisane powyżej
problemy to była ich sprawka. W każdym razie jeszcze trochę się tym pobawię…

Zimowa wycieczka na serwerownię

Wracam sobie spokojenie z pracy tramwajem, a tu mi dzwonią że coś wysiadło.
Więc w domku zaraz siadam do kompa i sprawdzam co się dzieje. Nie wygląda to
dobrze, ale zanim dokładnie zbadam wolę zjeść obiadek. Po obiadku okazało się
że router leży i muszę jechać spowrotem do Zabrza :-(.

Kierowca ze mnie beznadziejny, na drogach warunki nieciekawe, samochód
na letnich (właściwie to podobno „uniwersalnych”) oponach. Ale
myślę sobie – pojadę ostrożnie, to nic mi się nie stanie. No i dojechałem
właściwie bez problemu. Trochę długo to trwało, bo jechałem sporo wolniej niż
zwykle, a w Gliwicach były korki. Na miejscu stwierdziłem, że to były
najgorsze warunki w jakich zdarzyło mi się jechać samochodem.

Na serwerowni spędziłem równo godzinę. Oprócz trzech rebootów routera, aż
w końcu ruszył (walnięta płyta główna, zamówiłem nową ale nikt się tym nie
przejął) skonfigurowałem porządnie konsole szeregowe przez conservera
(olewając skrypt startowy PLD i zmieniając uprawnienia do niektórych
plików/katalogów, bo nie lubię jak takie rzeczy mi z uid=0
chodzą). W każdym razie po tej godzince przyszedł czas na powrót do domu.

Już niedaleko serwerowni na jednym zakręcie trochę mnie wyrzuciło
i obróciło. Ale pusto tam było, jechałem bardzo powoli i może rzeczywiście
trochę za gwałtownie skręciłem, więc się tym nie przejąłem. Wjechałem na naszą
„autostradę” (Gliwiczanie wiedzą o co chodzi) i jechałem dalej
powtarzając sobie w myślach „żadnych gwałtownych ruchów, żadnego
niepotrzebnego przyspieszania czy zwalniania i będzie dobrze”. A więc
jadę sobie spokojnie prostą, pustą drogą aż nagle samochód postanowił skręcić
(dziura?) no i mnie obróciło i tylko widziałem jak zbliżam się do bariery po
lewej stronie drogi. Fajnie, że akurat nic nie jechało, bo by samochód
był pewnie skasowany. Dojechałem do barierki (lekko stukając w nią
zderzakiem), wtedy dopiero dojechał samochód z naprzeciwka i spokojnie mnie
ominął (zdążył zwolnić). Jakoś wróciłem na swój pas, ktoś jadący
w „moim” kierunku mnie obtrąbił (pewnie pomyślał że
zawracam) i pojechałem dalej. Tym razem ze średnią prędkością 30km/h.
Dojechałem cały i całym samochodem, ale chyba więcej się w taką pogodę nie
wybiorę.

Zrobiłem to

Wydałem jabber-gg-transport 2.0.8. Trzeba było wreszcie to zrobić, bo
2.0.7 wykrzaczało się że aż wstyd. W CVS już dawno leżały odpowiednie
poprawki (dziękuję wszystkim którzy je przygotowali albo pomogli mi je
przygotować), ale dopiero dzisiaj zrobiłem „release”. Oto
lista najważniejszych zmian:

  • Wyłączony import kontaktów z serwera GG. Po zmianie protokołu i tak
    nie działał, a powodował wykrzaczanie się całego transportu.
  • Poprawki pozwalające użyć transport z serwerem jabberd 2.0.
  • Poprawiony błąd powodujący zwis przy ponownej rejestracji w
    transporcie.
  • Poprawiony błąd powodujący wykrzaczanie się transportu po odebraniu
    <presence> z pustym <priority>.
  • Poprawiona rejestracja transportu w rosterze użytkownika – już nie
    powinien on się pojawiać w rosterze dwa razy.
  • Poprawiona funkcja licząca skrót SHA tak, aby działała poprawnie na
    architekturach 64-bitowych (w tym na moich Opteronach).
  • Oraz parę mniej istotnych poprawek.

A teraz z innej beczki. Zainstalowałem na serwerach pocztowych
amavisd+ClamAV. Działają ślicznie, ale otrzymywałem skargi że niektóre
wiadomości nie dochodzą. Okazało się, że chodziło o majle które zostały
odrzucone za 8-bitowe znaki w nagłówkach (zabronione przez RFC 2822).
Odrzucanie źle sformatowanych wiadomości ma duży sens, bo nigdy nie
wiadomo czy Outlook tak samo zinterpretuje jej zawartość jak antywirus
i po prostu wirus mógłby umknąć. Na takim bugtraqu są zgodne opinie że
„be liberal in what you receive” w przypadku poczty i antywirusów
powoduje tylko problemy. A więc nie mam zamiaru przyjmować wiadomości
łamiących podstawowe standardy (userom dałem wybór – mogą sobie to
wyłączyć).

W logach sprawdziłem co to za wiadomości są odrzucane. Ta wiadomość
o której było tyle krzyku to najwyraźniej z jakiegoś walniętego albo źle
skonfigurowanego Outlooka, z niezakodowanym
„Środkowoeuropejski” w polu „Date: ”. Ale takich
było wśród odrzuconych niewiele. Większość to majle słane automatem z
różnych serwisów WWW (w większości w PHP). Jakoś mnie to nie dziwi.
Zawsze uważałem że olewanie (a raczej ignorancja w tej dziedzinie)
standardów jest podobna do użytkowników PHP. Ale pewnie jestem
uprzedzony…

Na koniec jeden link:
Head over Heels
. Wkleiłem już go do komentarza na blogu Zgody, ale
uznałem że na głównej stronie też powinien się pojawić. Bardzo
sympatyczna gierka. Nie poświęcam wiele czasu na granie (mam go zawsze
mało, szkoda mi go na takie przyjemności), ale 19% udało już mi się
zrobić. :-)

Walentynki oraz postępy w projektach

Dzisiaj Walentynki. Cokolwiek już na joggerze na ten temat nie napisano, to
ja uważam że dobrze. Chociażby dlatego, że jest wielu takich jak ja, co nie
umieją wręczać kwiatów bez okazji, a przecież dziewczynom się to od czasu
do czasu należy. Ja kupiłem trzy duże róże żonie, trzy małe różyczki córeczce
(poza tym, że kochana, to jakby nie dostała to niezłą awanture byśmy tu mieli
:-)). Od żonki dostałem elektroniczną kartkę (z pingwinami,
a jakże) oraz melodyjkę na komórkę (może i głupie, ale miłe). Żabcia też
nie zawiodła i przysłała „sympatycznego” SMS-a, co Iwonkę bardzo
wkurzyło (coś wspominała o przyrządzaniu żabich udek).

W pracy udało się uruchomić ten nowy 64-bitowy (2*Opteron) serwer (między
innymi pod naszego Jabberka) i jest troszeczkę luzu. Mogłem więc troszkę czasu
(„domowego”) poświęcić na moje Jabberowe projekty. Transport GG
znów nie miał wiele szczęścia (mimo że muszę wreszcie zrobić
nowe wydanie), za to popracowałem nad PyXMPP i JJIGW (bramką do IRCa). W CJC
też coś zrobiłem, ale nie wiele. JJIGW jest coraz bardziej używalny i może
w ten weekend zrobię nowe wydania całej trójki. Tymczasem jak ktoś chce
potestować to może się pobawić bramką do IRCNetu zainstalowaną przy moim
serwerze: ircnet.jabber.bnet.pl. N.p. żeby wejść na kanał
#7thguard wystarczy swojemu klientowi Jabberowemu wejść do pokoju
#7thguard na serwerze konferencyjnym ircnet.jabber.bnet.pl.
Oczywiście bramka obsługuje (na razie częściowo) protokół MUC i trzeba mieć
odpowiednio nowoczesnego klienta, żeby się nią w pełni nacieszyć.

Niedługo będzie wypadało zrobić obsługę MUC w CJC, ale wcześniej
musiałbym zrobić do końca Disco, dodać obsługę formularzy itp. Mam nadzieję że
kiedyś mi się uda.

Wracając do pracy… Czytając Bugtraq natrafiłem na maila o tym jaki
szybki był, w porównaniu do komercyjnych antywirusów, ClamAV
w reakcji na atak MyDoom. Postanowiłem spróbować u siebie. Wcześniej
tego nie robiłem bojąc się że zajedzie to mój serwer. Zamiast tego używałem
własnego skryptu virusprotect, który tylko zmieniał niebezpieczne
rozszerzenia załączników. Podczas próby okazało się, że amavisd-ne
wraz z clamd obciążają serwer znacznie mniej niż mój prymitywny
skrypt, a przecież potrafią dużo więcej.

Miałem dylemat z konfiguracją powiadomień o znalezieniu wirusa
przez amavisd. Ostatnio chyba wszyscy się przekonywali że
powiadamianie „nadawcy” jest złe. Amavisd ma niby
możliwośc określenia które wirusy fałszują adresy, ale kto by pilnował
aktualności tej listy? Nie chciałem też, żeby poczta znikała na moim serwerze
bez śladu. Dlatego włączyłem powiadamianie niedoszłego odbiorcy wirusa. Takie
powiadomienie to i tak lepsze niż wirus. Może kiedyś wymyślę coś
lepszego.

Do przemyślenia

Ciekawego linka ktoś wkleił dzisiaj na jdev@conference.jabber.org:
http://www.joelonsoftware.com/articles/fog0000000069.html

Nie wiem co o tym myśleć. Z jednej strony mądrze piszą i do tego bardzo pocieszająco (mój kod nie jest taki zły :-)), ale z drugiej… nie do końca jestem przekonany że pisanie od nowa nigdy nie ma sensu. A na tę konkretną sprawę można spojrzeć inaczej: może Netscape wyrzucił swój stary kod, ale ekipa Mozilli po prostu zrobiła swoją przeglądarkę od zera. A to już chyba takie naganne nie jest.