Własny DNS cache jako lekarstwo na problemy z siecią

Jest powiedzenie, że nowe to dobrze zapomniane stare. Tak jest w przypadku DNS i ataków różnej maści. Niedawno głośno było o DDoSach z użyciem DNS amplification, potem o podmianie DNS (głównie na routerach, nie jak kiedyś na komputerach, ale cel ten sam), a od niedawna popularne stało się generowanie dużej ilości zapytań do serwerów DNS rekursywnych ISP (AFAIK też ostatecznie rodzaj DDoSu). Na tyle dużej, że niektórzy operatorzy mieli/mają problemy z obsłużeniem żądań pochodzących od swoich klientów na swoich serwerach cache’ujących.

Z różnych pokątnych źródeł (Facebook, IRC) wiem, że pierwszego dnia, gdy się to zaczęło, były problemy z dostępem do Internetu w sieciach należących do Inei i Multimedii. Nie znam przyczyny, ale biorąc pod uwagę, że jeszcze jednemu providerowi „kończyły się” maszyny obsługujące rekursywne DNS i że w przypadku Multimedii pomagała zmiana w systemie na np. serwery DNS Google, przypuszczam, że chodzi właśnie o niewydolność serwerów DNS dostarczanych użytkownikom tych sieci przez ISP.

Rozwiązanie jest dość proste – wystarczy uruchomić swój serwer DNS rekursywny lub forwarder na desktopie czy routerze w swojej sieci, by sieć zaczęła działać lepiej i być mniej zależna (lub nawet niezależna) od DNSów naszego ISP. Ja na swoich desktopach (oczywiście Linux) od dłuższego czasu mam uruchomionego unbound (pokłosie benchmarków DNS) – jest lekki i bezproblemowy. W obecnej sytuacji mamy podwójną korzyść z własnego cache: po pierwsze, jak zwykle odpowiedzi udzielane będą nieco szybciej[1], po drugie, uniezależniamy się od serwerów naszego ISP, który w związku z niewesołą sytuacją w sieci może mieć problemy z działaniem w ogóle.

Z kolei w przypadku sieci lokalnych i routerów sprzętowych działających pod kontrolą OpenWrt lub podobnego systemu warto zwrócić uwagę na mały i zgrabny dnsmasq, którego konfigurację opisywałem kiedyś dość dokładnie.

Niezależnie od wyboru, koniecznie pamiętajmy o zabezpieczeniu czyli poprawnej konfiguracji naszego serwera DNS. Obsługujmy zapytania rekursywne tylko z naszej zaufanej sieci (np. LAN). W przeciwnym razie nasz serwer może zostać wykorzystany do DDoS poprzez DNS amplification. Ograniczać można na wiele sposobów w zależności od użytego serwera i możliwości: firewall, ograniczenie nasłuchiwania do konkretnego interfejsu lub definicje obsługiwanych prefiksów w konfiguracji samego serwera.

[1] Nie zawsze jest to prawdą, liczy się nie tylko opóźnienie do serwera, ale także zawartość jego cache czy wydajność sprzętu, na którym działa. Pisałem kiedyś szerzej o wyborze serwera DNS.

Jakie wady ma Bitcoin?

Tak się składa, że hype związany z Bitcoin czy Litecoin nadal trwa i w ostatnich dniach przeprowadziłem minimum dwie rozmowy o kryptowalutach. Konkretnie o popularniejszej z nich, czyli Bitcoin. Nie ukrywam, że zainteresowałem się nim wcześnie, ale wrodzony sceptycyzm nie przerodził się w uruchomienie kopalni. Z perspektywy czasu żałuję, bo były to czasy (okolice marca 2011 jak widzę), gdy kopanie BTC na karcie graficznej zwracało sprzęt po 4-5 m-cach, wg ówczesnych cen. Jakbym nie wydał tylko trzymał do dziś, to pewnie byłoby minimum niezłe auto…

Bitcoin logo

Źródło: Bitcoin Wikipedia

Było, minęło. Sceptykiem pozostałem, szczególnie gdy zestawię moje podejście z zachwytem niektórych osób, że to takie krypto, pozapaństwowe, anonimowe i w ogóle przyszłość i cudowna alternatywa dla istniejących walut.

Żeby nie rozpisywać się od nowa przy każdej tego typu okazji, poniżej krótkie zestawienie wad, jakie widzę w Bitcoin (ale nie tylko, sporo odnosi się także do innych kryptowalut, np. Litecoin).

Podatność na spekulację

Niby oczywista sprawa, ale nie dla wszystkich. Ja rozumiem, że kurs (póki co) generalnie rośnie w długim okresie, ale to mały rynek, przez co podatny na spekulację. Zmiany kursu o kilkadziesiąt procent w krótkim okresie nie są niczym niezwykłym. W przypadku happeningu sprawa pomijalna, w przypadku podstawowego środka płatniczego – a tak niektórzy zdają się widzieć BTC – nie można tego nie zauważać.

Totalna kontrola przeprowadzanych transakcji

Brak znajomości tego zjawiska dziwi mniej. W końcu krypto w nazwie sugeruje, że coś jest szyfrowane i/lub anonimowe. Tymczasem jest dokładnie odwrotnie. Historię każdego BTC można prześledzić do samego początku. Implikacje z punktu widzenia anonimowości czy prywatności są nie do zignorowania. Wielu ludzi kręci nosem, że bank wie o nich wszystko z historii rachunku. To teraz wyobraźmy sobie, że każdy przelew między kontami wiązałby się z ujawnieniem wszystkich transakcji przeprowadzonych przez obie strony przy użyciu danych rachunków. W przeszłości i przyszłości.

Dokładniej nie tyle ujawnienie wszystkich kwot transakcji i rachunków (bo to można zrobić nie będąc stroną), ale powiązanie ich z konkretnym płatnikiem. Gdyby Bitcoin był w powszechnym użyciu, pozwalałoby to określić, gdzie dana osoba mieszka, co ostatnio kupiła itd. itp. Dla stalkerów i marketingowców raj. Chociaż podobno marketingowcy nie umieją korzystać z danych. Ale implikacje są poważniejsze, chociażby w przypadku wglądu ubezpieczalni w zakupy np. leku czy alkoholu. Albo płatności za mandaty. Sky is the limit.

Oczywiście można się przed tym zabezpieczać. Np. często zmieniać konta. Tylko to średnio wygodne. No i trzeba jakoś przetransferować BTC między kontami. A znana jest cała historia… Są nawet serwisy typu blockchain.info czy sharedcoin.com, pomagające anonimizować transfery przy użyciu BTC. Co dają? Znajomy, z którym dyskutowałem przytoczył cytat:

How can you guarantee that the transaction chain will be broken?
There is no guess work involved, each shared transaction analyzes up to 50,000 outputs or 250 levels deep in the blockchain to ensure the coins sent to the destination  address are 100% untainted with the original coins.

Faktycznie sporo. Zakładając, że ktoś chciałby to analizować ręcznie, rzecz jasna. Komputer poradzi sobie z analizą takiej transakcji w ciągu ułamków sekund. Identyfikacja kont używanych przez taki serwis też nie jest specjalnie trudna. Może nie ze 100% pewnością, ale przy dobrym algorytmie kilkadziesiąt procent pewności nie powinno być trudne do uzyskania.

IMO w kwestii anonimowości nic nie przebije gotówki. Dlatego banki i państwa powoli, ale systematycznie dążą do jej marginalizacji.

Brak organów kontrolnych

Dla jednych wada, dla drugich zaleta. Pamiętam, że w podstawówce wymyśliliśmy sobie własną walutę. Produkowaliśmy banknoty z pociętych kartek. Każdy swoją. Ręcznie (tylko!). Z podpisem. Nawet jakieś kursy wymiany były. Nie dam głowy, czy nie udało się kupić np. lizaka od kumpla za to. Zaliczyliśmy i inflację (najpierw IIRC były odpowiedniki istniejących nominałów, potem i milion dolarów był, chociaż przyznam, że te miliony ratowały się wartością artystyczną) i totalną utratę wartości. Pamiętam, że znalazłem trochę tej waluty w jakimś zapomnianym pudełku sporo po podstawówce. Chyba tylko dlatego zapamiętałem, że takie coś miało miejsce.

Z Bitcoin jest podobnie. Działa, bo ludzie umówili się, że ma wartość, ale nikt tej wartości nie gwarantuje. Dziś można przy jego pomocy kupić, jutro – niekoniecznie. W przypadku zwykłych walut były gwarancje wymiany na np. złoto (OK, też umowne…). Piszę były, bo AFAIK gwaranci od tego odeszli. Niemniej państwo – jakie by nie było – jest postrzegane jako lepszy gwarant, niż grupka ludzi, którzy tak się umówili.

Brak organów kontrolujących rynek sprzyja też poruszonej na początku spekulacji. Jak pokazują ostatnie wydarzenia, które doprowadziły jeden z kantorów BTC do zawieszenia sprzedaży, brak nadzoru i audytu powoduje ryzyko błędnych implementacji. Podobnie sytuacja miała się z włamaniami do kantorów i kopalń BTC. Ogólnie sam algorytm, oprogramowanie i protokoły posiadają ryzyko błędów. Nawet jeśli sam algorytm Bitcoin jest OK, pozostaje ryzyko błędów w oprogramowaniu i protokole. Ostatnie zamieszanie związane z Mt. Gox jest takim przykładem błędów w implementacji.

Ryzyko delegalizacji

O ile państwa nie nauczą się kontrolować transakcji wykonywanych przy pomocy Bitcoin, może im wpaść do głowy pomysł delegalizacji tej kryptowaluty. Szczególnie, jeśli – mimo wyżej opisanych wad – zacznie zdobywać większą popularność. Szansa na to jest niewielka i oczywiście delegalizacja BTC nie spowoduje zupełnego zaprzestania jego używania, ale skutecznie ograniczy zakres dostępnych dóbr.

Wymaga wiedzy i technologii

Nie ma co ukrywać, że obecnie kryptowaluty to domena ludzi związanych z kryptografią i/lub komputerami. Albo osób, które z konieczności szukają środków płatniczych w cieniu (głównie nielegalna działalność). Ogólnie: wąska grupa geeków. Od pozostałych ludzi wymaga nauczenia się, jak to działa, instalacji dodatkowego oprogramowania i ogólnie przełamania nieufności. Dodatkowo, wymaga posiadania komputera (smartfona) i połączenia z siecią. Paradoksalnie, niekoniecznie jest to taki wielki problem – w końcu płatności przy pomocy telefonów są wprowadzane przez tradycyjne banki, a ludziom nie przeszkadza brak zrozumienia stojących za płatnościami tego typu zagrożeń.

Liczna konkurencja

Bitcoin, który jest obecnie najbardziej znaną kryptowalutą i o największej wartości rynku, nie jest jednak jedyny. Co chwila powstają nowe alternatywy, każda wyróżniająca się albo bardziej odpornym na wydobycie nie na CPU, czyli bardziej sprawiedliwym algorytmem (np. scrypt w przypadku Litecoin), albo – jak ostatnio powstały Riecoin – podstawami naukowymi (liczby pierwsze, szczegóły na stronie projektu). Bałkanizacja rynku kryptowalut z pewnością nie pomoże im na przebicie się do mainstreamu – obok pytania czy implementować obsługę, dochodzi pytanie, którą lub które kryptowaluty wybrać.

Podsumowując, w żadnym razie nie jest tak, że Bitcoin do niczego się nie nadaje. Nawet chyba poszukam portfeli (ciekawe, czy pustych?) i uruchomię możliwość postawienia mi piwa w ten sposób. Już znalazłem w poolu, w którym kopałem testowo (na CPU!), BTC warte obecnie jakieś 7 dolarów. Natomiast nie wierzę, że kiedykolwiek zapłacę BTC za pizzę, hotel czy w supermarkecie. Po prostu się nie przyjmie i nie będzie liczącą się alternatywą dla tradycyjnego (w tym elektronicznego) pieniądza.

Bitcoin to nie waluta

Niedawno rząd USA uznał Bitcoin nie za walutę, a za własność. Na potrzeby podatków, oczywiście. Coś jak akcje. Czyli jeśli ktoś kupuje pewną ilość BTC za jednego dolara, wartość zakupionych BTC rośnie do dwóch dolarów na skutek zmiany kursu, a następnie ktoś kupuje za tę ilość BTC kawę (wartą dwa dolary), to kupujący powinien zapłacić podatek od 1 dolara (różnica wartości kupna i sprzedaży BTC), a sklep podatek dochodowy od dwóch dolarów.

UPDATE Dodany akapit o konkurencji. Mt. Gox ostatecznie upadł i wpływ na BTC miało to niemały – spadek cen z ponad 800 dolarów do 400 dolarów (połączony ze znacznym wzrostem wolumenu wymienianych BTC, co ładnie pokazuje spekulacyjny charakter rynku).

Wegański gulasz

Blog nie jest blogiem kulinarnym, ale co jakiś czas przewijają się tu przepisy kulinarne. Zwykle sprawdzone, które lubię, a które ciężko mi znaleźć w innym miejscu, albo wręcz własne.

Tym razem gulasz. Ostatnio zrobiłem inspirując się mocno tym przepisem na gulasz vegulasz, wyszedł dobry i w dużej ilości, więc dziś powtórka. Tym razem notuję, bo lekko modyfikowany przepis, a poza tym strony lubią znikać z netu… Dodatkową zaletą tego gulaszu jest to, że fajnie się mrozi i łatwo zrobić obiad z taką mrożonką (ryż, kasza, kuskus czy nawet chleb i gotowe). Proporcje na duży garnek (klasy wiadro).

Składniki:

  • 3 duże cebule
  • ok. 20 małych pieczarek (można pominąć, akurat miałem)
  • 5 dużych marchewek
  • 5 ząbków czosnku
  • ok. szklanki czerwonej soczewicy
  • ok. szklanki ryżu (może być brązowy)
  • pół papryki (można pominąć, można dać więcej w sezonie)
  • 2 małe słoiki koncentratu pomidorowego
  • sos sojowy
  • papryka czerwona słodka w proszku (nie oszczędzać, myślę, że 1 op. 20g)
  • curry (nie oszczędzać, podobnie 1 op. 20g)
  • 1 op. kostki sojowej grubej (akurat nie było, wziąłem „kotlety” sojowe i pokruszyłem)
  • kukurydza konserwowa (1 puszka)
  • groszek konserwowy (1 puszka)
  • cząber, bazylia, lubczyk (okolice łyżki stołowej każdej z przypraw)
  • sól (w razie potrzeby – curry i sos sojowy są zwykle słone)

Do garnka wlewamy olej, wrzucamy pokrojoną w grubą kostkę cebulę i pieczarki. Podsmażamy/podduszamy. Jak prawie gotowe, dorzucamy posiekany czosnek, dodajemy marchew. Po chwili dolewamy przegotowanej wody, wsypujemy ryż i soczewicę. Dodajemy koncentrat, kostkę sojową i przyprawy.

Nieco później dodajemy kukurydzę, groszek i świeżą paprykę. Gotujemy, aż ryż i soczewica będą miękkie. Pamiętamy, że kostka sojowa, ryż i soczewica chłoną wodę, więc raczej rzadsze na początku, niż gęstsze – i tak zgęstnieje.

Na koniec pasujący tu, zwłaszcza przy odgrzewaniu lifehack sprzedany mi w wegetariańskim barze Chwirot (czasem zaglądam, zwykle na wynos biorę; polecam): jeśli danie oparte na sosie pomidorowym jest za gęste (np. na drugi dzień), albo jest go za mało, to najprościej zaradzić temu dodając soku pomidorowego (takiego do picia, z kartonu) i podgrzewając. W wariancie studenckim: spokojnie z jednej porcji sosu robi się dwie.