routing w linuksie

miałem ostatnio interesującą sytuację w firmie.

jeden z pracowników miał na swoim komputerze wersję demo nowego serwisu www. i trzeba było wystawić to dla klienta na zewnątrz.

teoretycznie trywiał – jak się okazało, nie do końca.

najpierw ogólnie.

sieć wygląda w uproszczeniu tak:

Diagram1.png

aplikacja była odpalona na komputerze “pracownik a".

na firewallu/routerze regułki były skomplikowane, ale dla uproszczenia przyjmijmy, że było tylko:

iptables -P INPUT DROP<br />
iptables -P FORWARD DROP<br />
iptables -F<br />
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A INPUT -p icmp -j ACCEPT<br />
iptables -A FORWARD -p icmp -j ACCEPT<br />
iptables -A INPUT -i lo -j ACCEPT<br />
iptables -A FORWARD -i lo -j ACCEPT<br />
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # eth0 to sieć lokalna, eth1 - internet<br />
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

jak widać nic skomplikowanego.

no więc pojawia się zadanie – klient ma mieć wystawiony serwis z “pracownik a" (port 80) na dowolnym porcie.

ok. robimy:

iptables -t nat -A PREROUTING -s 243.65.193.17 -p tcp --dport 82 -j DNAT --to-destination 172.30.0.2:80

i … działa. zero zdziwień. proste i miłe.

ale jak wyżej napisałem – trywiał, ale nie do końca. jaki więc haczyk?

no cóż. następnego dnia pojawił się drugi request:

tak jak klient wchodzi na http://192.0.2.94:82/ to pracownicy z sieci (np. pracownik b) też mają móc.

i tu zaczęły się schody.

pierwszy strzał:

iptables -t nat -A PREROUTING -s 172.30.0.0/24 -d 192.0.2.94 -p tcp --dport 82 -j DNAT --to-destination 172.30.0.2:80<br />
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT

i nie działa.

chwila zastanowienia – nic prostego się nie okazuje.

tak więc rozrysowaliśmy sobie sytuację:

  1. “pracownik b" wysyła pakiet do 192.0.2.94:82. adres źródłowy pakietu: 172.30.0.3:1031 (jakiś losowy, wysoki port)
  2. ponieważ pakiet jest do innej sieci niż 172.30.0.0/24, zostaje przekazany do routera
  3. router ma regułkę która pakiet dnatuje, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.3:1031, cel: 172.30.0.2:80
  4. pakiet przechodzi przez firewalla zaakceptowany i wchodzi z powrotem do lanu.
  5. pakiet trafia do komputera “pracownik a". super! ale tu zaczynają się kłopoty.
  6. “pracownik a" odpowiada. zamienia miejscami nadawcę i odbiorcę pakietu, otrzymując:
    źródło: 172.30.0.2:80, cel: 172.30.0.3:1031
  7. ponieważ cel jest w sieci 172.30.0.0/24 – wysyła pakiet bezpośrednio do odbiorcy – z pominięciem routera.
  8. do komputera “pracownik b" trafia pakiet (ack/syn), na dobry port, ale od złego ip?! “pracownik b" chciał “rozmawiać" z 192.0.2.94:82, a tu dostaje pakiet od 172.30.0.2:80 – czyli jakaś pomyłka. pakiet zostaje olany.
  9. nie bangla.

po rozrysowaniu sprawa stała się jasna.

pozostaje naprawić. pojawił się pomysł by robić DNAT'a, na “pracownik a" (przekazując pakiet do routera), ale to było brzydkie.

co finalnie zrobiliśmy?

na routerze dodaliśmy jedną regułkę:

iptables -t nat -A POSTROUTING -s 172.30.0.0/24 -d 172.30.0.2 -p tcp --dport 80 -j SNAT --to-source 172.30.0.1

i działa!

pełny przesył wygląda teraz tak:

  1. “pracownik b" wysyła pakiet do 192.0.2.94:82. adres źródłowy pakietu: 172.30.0.3:1031 (jakiś losowy, wysoki port)
  2. ponieważ pakiet jest do innej sieci niż 172.30.0.0/24, zostaje przekazany do routera
  3. router ma regułkę która pakiet dnatuje, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.3:1031, cel: 172.30.0.2:80
  4. pakiet przechodzi przez firewalla zaakceptowany
  5. przed wyjściem do lanu pakiej jest snatowany, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.1:1031, cel: 172.30.0.2:80
  6. pakiet trafia do komputera “pracownik a".
  7. “pracownik a" odpowiada. zamienia miejscami nadawcę i odbiorcę pakietu, otrzymując:
    źródło: 172.30.0.2:80, cel: 172.30.0.1:1031
  8. ponieważ cel jest w sieci 172.30.0.0/24 – wysyła pakiet bezpośrednio do odbiorcy – ale w tym przypadku odbiorcą jest router
  9. mechanizm conntracka na routerze dokonuje odpowiednich (odwrotnych) translacji adresów, tak, że pakiet powrotny przyjmuje postać:
    źródło: 192.0.2.94:82, cel: 172.30.0.3:1031
  10. do komputera “pracownik b" trafia pakiet (ack/syn), na dobry port, i od słusznego ip.
  11. bangla.

po zapisaniu tego wszystkiego sprawa staje się jasna i oczywista. ale nie zmienia to faktu, że kilka razy słychać było – “nie da się".

powyższy pomysł/regułki dedykuję wszystkim zdającym test na pracownika do nas 🙂 tam jest mocno podobne pytanie 🙂

naprawdę przełomowy samochód

samochody dla “zielonych" były zawsze brzydkie. czy to gm ev1, czy prius – nie są one ładne.

do tego – samochody naprawdę ekoprzyjazne – całkowicie elektryczne miały zawsze kiepskie osiągi (o ile można to nazwać osiągami), oraz fatalny zasięg – najpopularniejszy (około 1000 wyprodukowanych egzemplarzy) gm ev1, miał zasięg około 100 mil (po wymianie baterii na inne, do 150 mil).

tragedia.

w 2003 roku martin eberhard stwierdził, że chce jeździć samochodem elektrycznym, ekoprzyjaznym, ale niech on wygląda i może! czy jazda czymś takim musi być karą?

martin jest informatykiem (a przynajmniej około informatykiem). z bańki internetowej wyszedł z ponad 100 milionami dolarów i bezcennymi znajomościami.

założył firmę która miała produkować samochody elektryczne. lepsze. dużo lepsze. ładne, szybkie i mogące jeździć na większe dystanse.

zdobyli pieniądze – łącznie 60 milionów dolarów, z czego połowę dał elon musk – współzałożyciel paypala. inni inwestorzy? sergey brin i larry page. dosyć znane nazwiska 🙂

do budowy samochodów podeszli tak jak do startupów komputerowych. wybrali 4 projektantów by zaprojektowali samochoód. wygrał projekt kolesia który projektował samochody dla firmy lotus.

dzięki temu, że przemysł motoryzacyjny outsource'uje produkcję czego tylko może – praktycznie każdą część można kupić od niezależnych dostawców.

największym przełomem była zmiana zasilania. koncerny motoryzacyjne używają starych i kiepskich akumulatorów kwasowo ołowianych lub niklowo wodorowych. a kto teraz używa najlepszych dostępnych ogólnie akumulatorów? laptopy! w efekcie samochód będzie napędzany ponad 6 tysiącami ogniw typu baterie laptopowe.

samochód powstał. firma, na część znanego wynalazcy została nazwana “tesla".

jak wygląda?

tak:

body-30.jpg

co potrafi? 60 mil na godzinę w około 4 sekundy. prędkość maksymalna – około 200 kilometrów na godzinę. zasięg – 250 mil – czyli 400 kilometrów. czas “tankowania" – 3.5 godziny. baterie wystarczają na minimum 100 000 mil.
ekonomia jazdy? koszt przejechania mili to 1-2 centy. przeliczając to na 100km i złotówki, dostajemy informacje, że 100kilometrów kosztuje do 3,8 złotego!

minusy? oczywiście są. szacowana cena (szacowana, bo samochód jeszcze nie jes w sprzedaży, $80.000 (do $100.000 w/g innych źródeł).

no i jeszcze jedno – jak jesteś miłośnikiem głośnego wrrrrrrrrrrrrrrrrr przy ruszaniu – tesla ci się nie spodoba. jest cicha. mimo, że silnik kręci się do 13500 obrotów na minutę praktycznie go nie słychać.

aha. autoka ma dwa biegi do przodu i jeden do tyłu. na pierwszym biegu do przodku można jechać do 70 mil na godzinę (112km/h)!

twórcy są tak zadowoleni z efektu, że przymierzają się do zaprojektowania normalnego 4 drzwiowego sedana.

a teraz, popatrzmy jak wygląda na zewnątrz:

body-10.jpg body-20.jpgbody-50.jpgbody-40.jpgbody-30.jpgbody-60.jpgbody-91.jpgbody-90.jpgbody-80.jpgbody-70.jpgbody-94.jpgbody-95.jpgbody-96.jpgbody-97.jpgbody-99.jpgbody-100.jpgbody-101.jpgbody-102.jpgbody-103.jpgbody-105.jpgbody-191.jpgbody-192.jpgbody-193.jpgbody-401.jpgbody-402.jpgbody-404.jpgbody-408.jpgbody-5001.jpgbody-502.jpgbody-554.jpgbody-501.jpgbody-600.jpgbody-555.jpgbody-700.jpg

a tak wygląda w środku:

cockpit-10.jpg cockpit-20.jpgcockpit-30.jpgcockpit-40.jpgcockpit-200.jpgcockpit-140.jpgcockpit-220.jpgcockpit-300.jpg

nowy gt shelby

podobało mi się “60 sekund" z cage'em. wiem. powinienem się wstydzić. nie jest to film ważny, istotny, ani piękny.

ot. filmidło.

ale w tym filmie grał śliczny samochód – ford gt shelby.

wyglądało to cudo mniej więcej tak (wersja w filmie była bardziej poobijana):

1967 GT 500 Shelby Mustang.jpg

sweet.

ford wypuścił jakiś czas temu nową wersję shelby'ego, ale tylko i wyłącznie jako samochód do wypożyczalni (!). lz automatyczną skrzynią i ogólnie “be".

ale. do teraz.

teraz ford wypuścił inną wersję, i tą będzie można kupić. ma kosztować niecałe $43.000, i mieć 325 koni.

a jak wygląda? cudownie:
2007 GT Shelby Mustang.jpg

i tak, wiem, że jest to tylko przedłużenie penisa. fine. ale i tak wygląda super.

akcje/udziały w ludziach? – reality check

daaaawno temu pisałem o pomyśle shawna hogana nt. kupowania akcji ludzi.

dziś jako pewnego rodzaju kontunuację tamtych pomysłów trafiłem na interesującą aukcję.

koleś (niejaki ron steen) licytuje – z ceną początkową $100.000 – 2% wszystkich swoich zarobków jakie będzie miał.

mówi kim jest, jakie ma wyniki z testów, co robi, dlaczego i jak.

co prawa – jak sam policzył – aby inwestor wyszedł na swoje, musiałby (on, ron) pracować aktywnie przez 40 lat ze średnią pensją $125.000 rocznie.

facet oferuje udział we wszystkim co zarobi lub wygra – jako pracownik lub właściciel firmy – w tym wygrane na loteriach (z tym, że jak zaznaczył, nie gra na loterii, więc szanse są jakby niewielkie.

ma cel – dojść do 30 milionów dolarów. 2% od tego – całkiem niezła kasa.
czy znajdzie chętnych – nie wiadomo, na razie było kilka pytań, ale żadnych ofert. wydaje mi się jednak, że jeśli ktoś mu taką kasę da, to na tym zarobi – facet z takimi pomysłami nie będzie biedował.

ile czasu trwa wyszkolenie dobrego programisty?

rok? dwa? 10?

nie. 16 tygodni. 4 miesiące!

firma infosys w indiach oferuje szkolenia, które po jednym cyklu, trwającym właśnie 16 tygodni, mają zrobić z ciebie świetnego programistę, równemu umiejętnościami komukolwiek na świecie.

zbudowali w tym calu kampus, zajmujący 134 hektary. w nim mają:

  • 58 sal do zajęć praktycznych
  • 183 sale wykładowe
  • kafejkę
  • bibliotekę
  • 2350 sypialni
  • 10 osobowy szpital
  • boisko do kosza
  • 22 stoły do pingponga
  • basen
  • jakuzi
  • tor do bowlingu/kręgli
  • 4 ekranowe kino na 1500 osób
  • hall do medytacji

na miejscu uczy kadra z wielu krajów pokazując rozmaite techniki i podejścia.

czy faktycznie uda im się w 4 miesiące zrobić dobrego programistę? szczerze mówiąc wątpię. ale na pewno ludzie którzy przez to przejdą będą lepsi od przeciętnej. i moze o to właśnie chodzi?

pozytywne wiadomości dla fanów postgresql’a

możliwe, że kojarzycie firmę enterprisedb. firma ta sprzedaje “paczkowanego" postgresa z dodatkami – replikacją, debuggerem funkcji pl/*, narzędziami upraszczającymi migrację z oracle'a.

co istotne – enterprisedb bardzo aktywnie pomaga rozwijać opensource'owego postgresa – zatrudniając core-developerów, backportując swoje zmiany i ogólnie mocno się angażując.

ostatnio miały miejsce 2 sympatyczne wydarzenia związane z enterprisedb.

po pierwsze – 1 sierpnia poinformowali, że zakończyli drugą rundę zbierania finansów i mają teraz o 20 milionów dolarów więcej. kasa zostanie przeznaczona na merketing i poszerzanie rynków sprzedaży.

mimo, że pewnie wolałbym by wpakowali te 20 milionów w programistów o tyle widzę kolosalny sens tego co robią. jeśli faktycznie uda im się sprzedać więcej licencji, pakietów supportowych itd, to powstanie mocna grupa płacących użytkowników. a mając płacących uzytkowników będzie prościej o ludzi którzy będą mogli implementować nowe fajne rzeczy w postgresie – także tym open source'owym.

po drugie – sun microsystems (ta sama firma która ostatnio zwolniła 5000 ludzi), reklamował sie niedawno, że będzie oferował support do postgresa. teraz (informacja z wczoraj) okazało się, że support świadczyć będzie enterprisedb. po prostu sun podpisał z nimi umowę na świadczenie supportu w imieniu sun'a.

dzięki temu jawi się kilka rzeczy:

  • postgresql zyskuje realną, silną pomoc od suna
  • support świadczony przez suna będzie na wysokim poziomie – i nie dlatego, że sun na szybko kogoś wyszkoli, ale dlatego, że support będą świadczyli ludzie którzy na postgresie “zęby pozjadali"
  • enterprisedb na tym zarobi 🙂

to wszystko powoduje, że z coraz większym optymizmem patrzę na przyszłość swojej ulubionej bazy.

ostre dodatki – ciąg dalszy

jakiś czas temu pisałem o stronie prezentującej różne ostre sosy.

życie dopisało ciąg dalszy. businessweek napisał o kolesiu który był miłośnikiem ostrych sosów. tak duży, że założył sklep sprzedający je oraz bloga gdzie pisał o tym co nowego ciekawego można znaleźć kupić. w 2005 roku zarobił na czysto $130000. na 2006 planuje dobić do $200000.

można u niego kupić praktycznie wszystko co służy do zaostrzania smaku. od prostych buteleczek tabasco po $4.95 po słynne butelki z kryształkami “Blair's 16 million reserve" po $300 za sztukę.

czy ktoś to będzie sprowadzał do polski? jak tak – z chęcią dorzucę się do zamówienia.

zysk spadł o 89%. to źle czy może dobrze?

lenovo (taka chińska firma która robi teraz thinkpady) po raz pierwszy podało do publicznej wiadomości bilans wyliczany w dolarach.

czego można się z niego dowiedzieć?

że zyski za pierwszy kwartał, w porównaniu do zysków za pierwszy kwartał 2005 spadły o 89%. tragedia? a może jednak nie?

między tymi kwartałami lenovo musiało ponieść spore koszty związane z przejęciem produkcji komputerów od ibm'a (sam koszt zakupu 1,25 miliarda, do tego odprawy dla zredukowanych pracowników!).
i dlatego uważam ich wynik za fenomenalny. zwłaszcza, że inne liczby to potwierdzają:

  • sprzedaż wzrosła o 38% (z 2.5 do 3.5 miliarda dolarów)
  • zysk operacyjny wyniósł 5 milionów dolarów. niby niewiele, ale średnia z analiz ekspertów z wall street sugerowała zysk (a właściwie stratę) na poziomie -11 milionów dolarów.

co dalej? zobaczymy. myślę, że niskie ceny przyciągną do lenovo wielu ludzi którzy chcieli mieć thinkpada, ale ich zwyczjnie nie było stać. liczby pokazują, że “chińczyk potrafi". pozostaje życzyć im dalszych sukcesów.

piekło nie zamarzło, ale

sam news jest mało ciekawy. ot. miasto kupiło dla swoich pracowników administracyjnych 10 klimatyzatorów. bo było za ciepło.

niby nic – w warszawie niedawno też było bardzo gorąco. tyle, że tym miastem jest kuujjuaq w kanadzie, położone w arktycznej strefie quebecu. około 1500 kilometrów na północ od montrealu.

klimatyzator w strefie arktycznej? i oni faktycznie będą ich używać do chłodzenia. okazało się, że na przełomie maja i czerwca mieli tygodnie gdzie temperatura dochodziła do 31 stopni.

ogólnie muszę przyznać, że w to co piszą organizacje ekologiczne nie za bardzo wierzę. tzn. nie chodzi o to, że nie wierzę w istnienie np. globalnego ocieplenia, ale uważam, że sprawa jest mocno wyolbrzymiana i nakierowywana w niekoniecznie słuszne strony.

ale 31 stopni i klimatyzatory w strefie arktycznej to zupełnie inna bajka.

fajne zwierzątko do domu

kot? pies? wąż, krokodyl, skorpion, pająk? nie.

mrówki. stary koncept trzymania mrówek w domu w cienkim szklanym pojemniku (by było widać jak kopią) został odświeżony.

thinkgeek sprzedaje interesujące “mrówkarium" (nie wiem jak to się nazywa prawidłowo). zamiast ziemi czy piasku jest przezroczysty żel służący jednocześnie za bazę do budowy mrowiska jak i żarcie.

wygląda to niesamowicie fajnie:

antworks_version2.jpg

myślę, że dla osób mających w domu dzieci w wieku szkolnym może być to niezły pomysł aby zainteresować biologią. widać na żywo jak te małe stworzonka się ruszają, co robią, gdzie i czemu. no i cena nie za duża nawet 🙂

aha – na zdjęciach innych widać, że ktoś połączył dwa takie zbiorniki rurką i mrówki sobie nią przechodzą. “klaster" mrowisk?