piątek, stycznia 20, 2012

ARP flux problem solution

Jakieś dwa tygodnie temu miałem pewien pomysł jak zutylizować jeden z serwerów, którym zarządzam docelowo rozszerzając usługę DHCP na trzy podsieci. Tak się składa, że maszyna posiada 4 porty gigabitowe i działa na Linuksie, więc nie powinno być problemów. Wymyśliłem sobie, że podepnę serwer do switcha w następujący sposób:


Położyłem kable, podpiąłem wszystko i zadowolony z siebie odpaliłem terminal. Jakie było moje zdziwienie, kiedy po podnoszeniu eth1 rozpoczęły się anomalie sieciowe. Połączenie lagowało, pingi się gdzieś nagle gubiły itd. Pomyślałem, że może to coś z trasowaniem. Długo pytałem wujka Google co by mogło się dziać, przy okazji ucząc się o takich rzeczach jak dostęp rozłączny i agregacja portów. Z dobry tydzień gryzłem się z tym problemem. Głównie dlatego, że na eksperymenty mogłem sobie pozwolić tylko w godzinach wieczorowych, kiedy serwer nie był obłożony. Dopiero dziś natknąłem się na przyczynę i rozwiązanie problemu. Przyczyna była trywialna w swojej naturze - domyślne ustawienia jądra linuksowego do obsługi ARP. Normalnie sieciowa dyskusja protokołem ARP powinna wyglądać tak:

KomputerA: "Szukam adresu 192.168.2.1 do partyjki warcrafta, który z was to?"
KomputerB: "To ja. Mój adres MAC to 00:11:22:33:44:55."

Domyślnie na zapytanie ARP odpowiedź wysyłana jest na wszystkich interface'ach, a ponieważ w moim wypadku oba interface'y są podłączone do tej samej przełącznicy skutkuje to niezłym bigosem. Dyskusja zmienia się w rozmowę z schizofrenikiem:

KomputerA: "Szukam adresu 192.168.2.1 do partyjki warcrafta, który z was to?"
KomputerB: "Cześć, znajdziesz mnie pod adresem MAC 00:11:22:33:44:55, albo AA:BB:CC:DD:EE:FF. A może to było jednak 00:11:22:33:44:55?"

Rozwiązaniem jest wymuszenie odpowiedzi na zapytania ARP tylko na tej karcie sieciowej na której odebrano zapytanie. Całość sprowadza się do wykonania:

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2


Aby zmiany były trwałe należy zrobić stosowne wpisy w pliku
/etc/sysctl.conf

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2


wtorek, listopada 15, 2011

The SYLWIA peptide

Jak wspomniałem w poprzedniej notatce ostatnimi dniami dla relaksu tworzę różne rzeczy w myśl hasła "do it yourself". Korzystając z okazji, że moja dziewczyna wyjechała na kilka dni postanowiłem jej zrobić małą niespodziankę na naszą drugą rocznicę. Zrobiłem taki oto naszyjnik z drutu jubilerskiego i koralików:


Taki prezent od chemika dla chemiczki. "Nie-chemikom" już tłumaczę. Jest to model sześciopeptydu o sekwencji Ser-Tyr-Leu-Trp-Ile-Ala, którą jak się czyta skrótami jednoliterowymi tworzy sekwencję SYLWIA. Prezent w każdym razie bardzo przypadł do gustu mojej lepszej połówce o czym nie omieszkała od razu pochwalić się całemu światu za pomocą facebooka. I się zaczęło... Ostatni raz w życiu nasłuchałem się tylu pochwał chyba jak kończyłem podstawówkę. Cóż... teraz muszę się z tym liczyć, że takie są efekty jak realizuję pomysły, które czasem błądzą mi po głowie. ]:)

poniedziałek, listopada 07, 2011

My new phone cover

Jesień zawitała do nas na dobre, a wraz z nią chłodne wieczory. W ostatnich miesiącach zaniedbałem nieco prowadzenie mego bloga, więc postaram się przeznaczyć wieczorny czas wolny na napisanie tutaj kilku (w miarę możliwości zwięzłych) notatek o tym co ostatnio chodzi mi po głowie. Zacznę może od tego co wychodzi mi najlepiej... narzekania. Rozpoczął się nowy semestr akademicki, a wraz z nim przyszła fala zgłoszeń, telefonów i maili o niedziałającej sieci i usługach. O stosie podań o założenie konta na serwerze studenckim, która zalała moje biurko już nie wspomnę. Taka praca administratora sieci - raz się jest szeryfem walczącym o prawo i porządek na serwerach, a raz biurokratą przekładającym kartki z stosu na stos. By całkiem nie oszaleć od siedzenia przed komputerem powróciłem do robienia czegoś manualnie. Kiedyś robiłem całą masę origami, a teraz częściej szkicuję lub próbuję pracy z nowymi dla mnie materiałami. No i tu jest mała zagadka. Cóż takiego mogłem zrobić z rzeczy które znajdują się na poniższym zdjęciu?
Jak nietrudno się domyślić po tytule notatki wyszedł z tego pokrowiec na mojego smartfona. Poprzedni pokrowiec, który kupiłem w saturnie rozpadał mi się już na czynniki pierwsze od ciągłego wyciągania i wsadzania telefonu. A ponieważ, zaczynam się przeistaczać w "androidowego fanboya" nie mogłem odpuścić sobie okazji wykonania unikatowego pokrowca jednoznacznie wskazującego na czym śmiga mój telefon. Jak na moją pierwszą zabawię z filcem to uważam, że wyszła z tego rzecz, która jest zarówno piękna jak i pożyteczna.



piątek, września 16, 2011

Selective syslog-ng remote logging with Tomato

Załóżmy, że posiadamy własną sieć (np. 192.168.0.0/24) w której działają między innymi bezprzewodowe rutery oparte o Tomato pełniące funkcję punktów dostępowych z których chcielibyśmy zbierać logi centralnie na jednej maszynie za pomocą syslog-ng. Maszyna na której zbierane będą logi posiada adres IP 192.168.0.50, a rutery adresy odpowiednio 192.168.0.1-15. Oto krótki przepis jak to zrobić.

Konfiguracja routerów


W pierwszej kolejności należy przekierować sysloga routera na zewnętrzny adres. Wybieramy Administration ▶ Logging i zaznaczamy opcję Log To Remote System oraz w polach IP Address / Port wpisujemy adres 192.168.0.50 oraz port 514.

Wpisy w syslog-ng.conf


Samo przekierowanie logów to tylko połowa pracy. Na serwerze dodajemy wpis zbierający zdalne logi:
source tomatoAP {
    internal();
    udp(ip("0.0.0.0")
    port(514));
};

Dodajemy zestaw filtrów do kierowania zapisem logów z każdego rutera. Dla pierwszych dwóch wpisów IP musimy dodać $ po adresie IP, aby ograniczyć filtr tylko do jednego hosta. Jeśli tego nie zrobimy w szablon wpasowane będą także np. takie adresy jak 192.168.0.193, czy 192.168.0.27.

filter f_tom01 { host("192.168.0.1$"); }; 
filter f_tom02 { host("192.168.0.2$"); };
filter f_tom03 { host("192.168.0.3"); };
filter f_tom04 { host("192.168.0.4"); };
filter f_tom05 { host("192.168.0.5"); };

Dodajemy wpisy gdzie mają być zapisywane logi z poszczególnych routerów...

destination d_tom01 { file("/var/log/tomato/ap-01.log"); };
destination d_tom02 { file("/var/log/tomato/ap-02.log"); };
destination d_tom03 { file("/var/log/tomato/ap-03.log"); };
destination d_tom04 { file("/var/log/tomato/ap-04.log"); };
destination d_tom05 { file("/var/log/tomato/ap-05.log"); };

..., a następnie zbieramy wszystko w całość w spójne regułki dla każdego rutera.

log { source(tomatoAP); filter(f_tom01); destination(d_tom01); };
log { source(tomatoAP); filter(f_tom02); destination(d_tom02); };
log { source(tomatoAP); filter(f_tom03); destination(d_tom03); };
log { source(tomatoAP); filter(f_tom04); destination(d_tom04); };
log { source(tomatoAP); filter(f_tom05); destination(d_tom05); };

Na koniec restartujemy syslog-ng i zaparzamy zasłużoną kawę ]:) Finito.

niedziela, lipca 17, 2011

3-city biking

Wraz z dziewczyną postanowiliśmy kupić sobie rowery na lato. Sylwia kupiła sobie rower miejski, a ja górski rekreacyjny. Częściowo nasza decyzja wynikała z chęci aktywnego spędzenia lata, a częściowo z stanu dróg w Gdańsku. Dla niewtajemniczonych powiem, że remontowana jest teraz linia tramwajowa wzdłuż alei Grunwaldzkiej. Szybciej człowiek dojedzie rowerem niż komunikacją miejską (pomijając możliwość wdychania świeżego powietrza, a nie zapachu czyiś spoconych pach w autobusie). Jednej rzeczy jednak nie potrafię zrozumieć. Rower mam już od ok. 2 tygodni, a już dwa razy musiałem łatać dętkę. W porównaniu z góralem, którego zostawiłem na opolskim gruncie to bardzo mnie to dziwi. Tamten rower wytrzymał 8 lat jazdy po polskich drogach, lesie i wyrobisku skały wapiennej, a chyba tylko raz musiałem łatać dętkę. Mój obecny góral ma nieco cieńszą oponę oraz mniejsze bieżniki, ale za to jeżdżę nim po drogach rowerowych w Gdańsku, które są w naprawdę dobrym stanie. Dziś nie wytrzymałem i pojechałem kupić sobie dętkę samouszczelniającą się. W każdym razie mimo problemów technicznych złapała mnie "zajawka" na kolarstwo. W miarę możliwości oglądam też relacje na żywo z Tour de France 2011. Jak już jesteśmy przy temacie TdF to jako geek oczywiście zainstalowałem sobie oficjalną aplikację Tour de France 2011 na androida. Przydatna sprawa dla każdego fana tego wyścigu, ale aplikacja dała mi nieco do myślenia. Skoro mój telefon HTC ma wbudowany odbiornik GPS to może jest jakaś aplikacja na Androida, która by nadawała się do zbierania statystyk jazdy rowerem. Jak się okazało nie musiałem długo szukać i znalazłem całkiem ciekawą aplikację stworzoną przez Google - My Tracks. Aplikacja pozwala na rejestrowanie przejechanej trasy, oblicza czas spędzony w jeździe (dobra opcja przy poruszaniu się po mieście metodą stop-and-go), oraz liczy statystyki takie jak średni czas jazdy, minimalna/maksymalna prędkość itp. Oto kilka zrzutów z jak to wygląda na telefonie: Ciekawą opcją jest możliwość eksportu do Google Maps. No dobrze. Dosyć blogowania na dziś. Trzeba się, wyspać by jutro w pełni sił pojechać do pracy rowerem ]:D