VPN to podstawa czyli jak postawić VPN na Raspberry PI

Internet jest tak podstawową rzeczą, że coraz więcej osób w ogóle nie zastanawia się nad kwestiami bezpieczeństwa. Problem jednak jest spory bo z internetu korzystamy praktycznie nonstop. Niestety często z dziwnych sieci w dziwnych miejscach. Jak konferencje, hotele czy kafejki. Wszystko jest ok do póki mamy wieloskładnikowe hasła do poczty czy innych ważnych serwisów albo przeglądamy przysłowiowego pudelka. Co jednak jeśli potrzebujemy zrobić coś co wymaga większego bezpieczeństwa? Ja korzystam z VPN-a. Nowoczesne smartfony bardzo dobrze sobie radzą z VPN-ami więc wystarczy kilka kliknięć i mamy wirtualnego kondomka.

VPN w routerze

Wiele poważniejszych routerów ma wbudowany serwer VPN. Wystarczy skonfigurować i używać. Problem jest tylko taki, ze trzeba mieć odpowiedni router, który niekoniecznie musi być tani. Nawet jeśli ten, który masz teraz ma opcję VPN server to następny niekoniecznie. Po co zawężać sobie możliwość wyboru routera. Ja proponuję zrobić własny VPN.

Własny VPN

Do zrobienia własnego serwera VPN będziemy potrzebować:

  • 1x Raspberry PI
  • 1x kabel sieciowy lub wifi tak aby malinka była widoczna w naszej domowej sieci
  • 1x karta sd bo na czyms trzeba to postawić
  • 1x Linux – taki do malinki 😉

Instalacja

Mając poprawnie działającą malinę wystarczy z poziomu cmder-a odpalić ssh


ssh -l <userName> <ip malinki np:192.168.1.2>

sprawdzamy czy system ma odpowiednie moduły:


sudo modprobe ppp-compress-18

jeśli nic się nie wyświetliło to (podobno) jest okej

dalej instalujemy pptpd


sudo apt-get install pptpd -y

PPTP to nie jest najlepszy najbezpieczniejszy i najwspanialszy VPN pod słońcem. W firmie nie wdrożyłbym go ale do celów domowych jest w zupełności wystarczający więc jedziemy dalej.

Trzeba to cudo skonfigurować czyli:


sudo nano /etc/pptpd.conf

i na końcu wrzucamy:


localip <ip malinki np.: 192.168.1.2>
remoteip <ip jakie dostaną klienci np.: 192.168.1.100-110>

następny plik pptpd-options


sudo nano /etc/ppp

i na końcu wrzucamy:


nobsdcomp

ms-dns <ip routera np.: 192.168.1.1>
noipx
mtu 1490
mru 1490

teraz najważniejsze czyli super tajne hasło


sudo nano /etc/ppp/chap-secrets

i wpisujemy:


# Secrets for authentication using CHAP
# client server secret IP addresses
<nazwa uzytkownika> * <hasło> *

Gwiazdki są potrzebne – bez nich nie działa. Wszystko rozdzielamy tabulatorami bo inaczej też nie działą (kocham białe znaki 😐 ).

Na koniec jeszcze


sudo nano /etc/sysctl.conf

i na końcu wrzucamy:


net.ipv4.ip_forward=1

Restart malinki i vpn powinien działać. (albo restart samej usługi sudo /etc/init.d/pptpd restart).

Teraz pozostaje tylko na routerze włączyć przekierowanie. Jeśli chcesz stawiać VPN to wiem że wiesz o co chodzi. Więc tylko dla formalności przekierowujemy port 1723 (lub zakres 1723-1723) na IP naszej malinki.

W tym momencie wystarczy w komórce wyłączyć WiFi i skonfiguroawć VPN na nasze IP (swoje IP sprawdzisz  tutaj https://www.whatismyip.com/) Jeśli wszystko jest dobrze skonfigurowane to się połączysz, jeśli się nie połączysz to nie :)

 

Zmienne IP

Co jak mam zmienne IP? Wiele routerów potrafi zarejestrować się w DynDnsie ale problem jest taki, że DynDns jest płatny. Niewiele ale płatny. Co gorze, różne routery różne dynamic dns-y wspierają. Więc znowu przy zmianie routera może się okazać, że trzeba by zmienić usługodawcę. Na szczęście można prościej. Niechaj nasza malinka ogarnie wszystko. Instalujemy DDClient-a


sudo apt-get install ddclient

 

DDClient potrafi obsłużyć całkiem sporo dostawców dynamic dns. Więc do wyboru do koloru. Ja zaczynałem dawno dawno temu z DynDnsem potem się zrobił płatny. Potem długi czas używałem właśnie przez DDClienta No-Ip ale oni co miesiąc wysyłają maila, żeby przedłużyć dzierżawę – bojąc się, że zapomnę kliknąć na czas co by skutkowało, że po zamknięciu konta akurat potrzebowałbym tego bezwzględnie przesiadłem się na freedns (http://freedns.afraid.org)

zatem moja konfiguracja DDClienta dla freedns:


sudo nano /etc/ddclient.conf


daemon=1m
timeout=10
use=web, web=checkip.dyndns.com/, web-skip='IP Address'

ssl=yes
protocol=freedns
server=freedns.afraid.org
login=<moj login>
password=<moje haslo>
<moja domena np.: dom.mooo.com>

Od teraz nie straszne nam zmienne IP, nie straszna nam zmiana routera. Mamy własny osobisty VPN. Co najlepsze, możemy go zabrać do kieszeni i postawić gdziekolwiek w 3 min (pamiętając jedynie o przekierowaniu tego 1 portu na routerze).

Koszty malinki są tak niskie, że można spokojnie żyć zgodnie z Single Responsibility Principle. 1 Serwer jedna odpowiedzialność, 1 malina = VPN-a i jesteśmy szczęśliwi i mocno niezależni.

 

 

 

SpecFlow + XUnit

Specflow fajny jest, piszemy scenariusze czytelne dla ludzi a pod spodem szaleje xunit i sprawdza. Jest tylko jedne problem, aktualnie specflow.xunit instaluje xunit 2.0 a do pliku .feature.cs generuje kod:

MyProjFeature : Xunit.IUseFixture

No i klops, IUseFeature już nie jest dostępny w xunit 2. Można jednak sobie poradzić mieszając trochę w pakietach. Po prostu trzeba po instalacji specflow.xunit odinstalować wszystko związane z xunit 2.0 (use the –Force Luke) i zainstalować xunit 1.9.2 i wszystko śmiga. Poniżej zestaw magicznych zaklęć:

install-package -ProjectName "MyProj.Specs" specflow.xunit
uninstall-package -ProjectName "MyProj.Specs" xunit –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.abstractions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.assert –Force
uninstall-package -ProjectName "MyProjent.Specs" xunit.core –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensibility.core –Force
install-package -ProjectName "MyProj.Specs" xunit -Version "1.9.2"
install-package -ProjectName "MyProj.Specs" xunit.extensions -Version "1.9.2"

Re: Sekrety udanych prezentacji

infomeet-iot

Tydzień temu miałem przyjemność wystąpić na katowickim InfoMEET gdzie poopowiadałem trochę o Internet of Things. Nie pierwszy raz występowałem na InfoMEET ale tym razem chyba najlepiej mi się mówiło, jakoś tak bardzo płynnie szło no i patrząc na oceny to podobało się więc jest git. Jeśli temat kogoś interesuje to będę z nim jeszcze w Krakowie w kwietniu i Wrocławiu w bodajże czerwcu. Jeśli byłeś/byłaś na mojej prezentacji i chcesz się podzielić jakimiś wrażeniami/opiniami to zapraszam do komentarzy lub od formularza kontaktowego.

Będąc natomiast przy prezentacjach to nawiążę do ostatniego wpisu Maćka o sekretach udanych prezentacji i dodam swoje 3 grosze. Nie jako kontrargumenty a raczej uzupełnienie i mój punkt widzenia.

Czas na przygotowanie

U mnie to wygląda tak, że prezentacja rodzi się w głowie i tam się układa później przelewam to na PowerPointa – głównie dlatego, że ma widok prezentera, który u mnie działa :) Natomiast fakt, warto mieć czas na przygotowanie i mieć wiedzę na temat o jakim będziemy mówili. Prezentacja na temat o którym nie mamy pojęcia jest naprawdę ciężka do przeprowadzenia.

Na scenie bądź zdecydowany

Tu uważam, że potrzeba energii. Jeśli temat nie jest jakiś specjalnie lotny ale prelegent mówi fajnie, ciekawie i jest pewny siebie to da się słuchać, gorzej jeśli osoba przedstawiająca temat mówi cicho i pod nosem wtedy widać brak pewności siebie i jakoś to wtedy nie idzie.

Slajdy

MAŁO TEKSTU – nic tak nie zabija jak slajd z napaćkaną wielką ilością tekstu. Czasem trzeba wrzucić tekst, ale wtedy daj uczestnikom chwilę na przeczytanie tego co tam zostało wklejone. Jeśli nie będzie tego spora część zacznie czytać tekst zamiast słuchać. Generalnie zasada jest taka, prezentacja to tło do tego co będzie mówione. Pod żadnym pozorem to nie są karteczki do czytania. Tak to nie działa. Jeśli zaś są tłem do tego co będzie mówione to i obrazek i animka i bardzo krótki tekst jest ok. Co mnie natomiast męczy bardzo to fikuśne przejścia. Imho albo brak przejść albo jedno, szybkie i w miarę zgrabne. Nie wiem po co w PowerPoincie zrobili ich tyle i co jedno to gorsze… Na szczęście jest już lepiej. Kilka lat temu spora większość prezentacji jakie widziałem to było prezi. Prezi jest fajne pierwszy raz, może drugi a potem po prostu męczy. Szczególnie jeśli cały czas widać napis unregistered czy co on tam wypisywał.

Nie przepraszaj

To moja pierwsza prezentacja więc proszę o….. ziew. No sorry. Albo stajesz przed ludźmi i gadasz najlepiej jak umiesz albo nie ale nie zaczynaj od przepraszania, no chyba że się spóźnisz, wtedy naprawdę warto przeprosić armię ludzi, której zmarnowałeś kawałek swojego życia – miej naprawdę dobry powód. Bo to nieprofesjonalne – bardzo nieprofesjonalne.

Demo

No cóż. Imho to wymaga dużo skill-a i wewnętrznego spokoju bo prawie zawsze coś idzie nie tak. Jeśli masz dostęp do pilota to za wczas sprawdź czy działa freeze. To potrafi uratować życie. Jak widzisz, że komputer nie daje rady daj freeze i wtedy możesz go nawet zrestartować. Jak przy tym nie stracisz zimnej krwii to nikt się nie zorientuje.

Woda!

Oprócz mlaskania o którym pisał Maciek to są jeszcze dwa powody. Jeśli to Twoja pierwsza prezentacja to może się zdarzyć, że w pół sekundy od rozpoczęcia będziesz miał w ustach Sahare. wtedy łyk wody i jakoś pójdzie. Drugi powód to zbudowanie takiego lekkiego zawieszenia. Dajesz coś do poczytania i robisz łyk, albo przed czymś ważnym, cisza, robisz łyk, automatycznie wiele osób koncentruje uwagę bo coś się zmieniło.

“Tryb prezentera”

Mi działa i sobie cenię głównie ze względu na timer. Zresztą PowerPoint pod tym względem jest fajnie rozbudowany, może sam zmieniać slajdy jeśli ustawimy timing. Możemy robić próby i zapisywać czas per slajd etc. Dla mnie najważniejsze to właśnie notatki, wypunktowane rzeczy, które przy slajdzie chcę powiedzieć i często zaznaczone tzw transition sentence czyli zdanie lub zwrot, który pozwoli mi ładnie przejść do następnego slajdu.

Kolory

No właśnie, czy to prezentacja czy kod czy cokolwiek innego powinny być czytelne na PROJEKTORZE, czyli bez delikatnych kolorków, ma być konkret, to musi być czytelne ot i tyle. Warto za wczasy poznać działanie Win +/- w nowych systemach do robienia zoomu, sprawdzić jak powiększyć wielkość liter czy to w VS czy chromie czy innym IDE którego będziesz używać

Pulpit

Nic tak nie rozbraja jak pierwsze podłączenie laptopa gdzie na wielkim projektorze pokazuje się piękny burdel na pulpicie. W Windowsie zanim podłączysz się pod cokolwiek, wyłącz ikony pulpitu, to po prostu wygląda lepiej. No i tapeta przydała by się jakaś przyzwoita a nie roznegliżowane żona/kochanka/mąż/kochanek.

Timing

No i na koniec najważniejsze. Nie przedłużaj sesji dłużej niż to trzeba. Niektórzy chcą iść zrzucić coś z jelita, inni potrzebują kawy. Jakkolwiek interesująca by była sesja to nie przepadam jeśli przedłuża się w nieskończoność. Szczególnie na konferencjach, gdzie przerwy krótkie. Serio, prelegencie miałeś swój czas, ludzie siedzieli cicho słuchając Ciebie, uszanuj to i okaż szacunek wobec innych i nie kradnij ich czasu. Jest tylko kilka osób, u których takie zachowanie bym zaakceptował – tylko, że one tak nie robią.

Wuluzuj/A jak się nie uda…

To nic się nie stanie. Miałem kiedyś okazję być na wykładzie gościa, bodajże ~17 latka. Który wyszedł przed ok 70 osób odpalił slajdy i go po prostu zamurowało. Nie wiedział co powiedzieć. Normalnie zżarła go trema i to w najgorszy możliwy sposób. I co się stało? Przeprosił i chciał uciekać ale ktoś z sali zaczął ciągnąć gościa za język żeby powiedział o czym miał powiedzieć. Potem ktoś inny zapytał i jakoś tak wspólnie “lud” pociągną tą prezentację i z tego co pamiętam to była fajna merytorycznie prezentacja. Gość dopiął swego i wyszedł z tarczą. Jak on to zrobił to Ty też możesz.

Zatem do dzieła!

 

foto:InfoMEET

Wroc#  czyli rozpieszczanie developerów level hard.

W zeszły czwartek dane mi było pojechać na zupełnie nową konferencję na polskiej scenie, Wroc#. Agenda wypchana po brzegi nazwiskami ze światowej top listy spowodowała, że tam po prostu trzeba było być – zapowiadało się świetnie i światowo. Jak świetnie się zapowiadało? Ano tak, że organizatorzy po pierwszym rzucie biletów powiększyli pulę biletów bardzo ale to bardzo znacząco.

Do rzeczy,

Pre-conf przygotowała wrocławska grupa .net z lokalnymi celebrytami, Gutek, Maciek i Mirek poopowiadali o CQRS-ie chyba. Chyba bo przybyliśmy na miesce w połowie wykadu Maćka i z samego tyłu za bardzo nie było słychać o czym mówi chociaż slajdy wyglądały ciekawie. Potem jednym okiem patrzyłem na Mirkowe ruby i za każdym razem jak widzę kod w ruby to coraz bardziej przekonuję się, że chce jeszcze posiedzieć w ogródku c#-pa. Po prezentacjach piwko i rozmowy wszelakie, ogólnie sympatyczny początek nadchodzącego wroc#.

Czwartek, rano, spacerek na miejsce eventu. Dochodzimy na miejsce, a tu nalepki na chodniku i smutni panowie z kwadratowymi torbami czyli wiemy, że jesteśmy w dobrym miejscu. Szatnia, gift-pack i siadamy na miejscu. A w giftpacku same dobrze rzeczy, bardzo porządny notes, drewniana gwiazdka do składania, koszulka, devtalk propaganda i jakieś ulotki. Elegancko (chociaż ciągle brakuje mi konferencji gdzie będzie można się zaopatrzyć w buty lub jeansy :) ).

Konferencję rozpoczął dyrektor z Objectivity, czapki z głów bo gość bardzo ładnie i zwięźle przywitał wszystkich i bez owijania ale w jednym zdaniu powiedział, że jeśli ktoś chce u nich pracować to żeby przyszedł pogadać – nic nachalnego, kultura. No i co warto nadmienić przez całą chyba konferencję siedział na sali i uważnie słuchał. To się ceni, wielki +.

Agenda,

Jak już pisałem, była zacna. Na wielu blogach poczytacie dokładniej kto o czym rozmawiał ale najlepiej pooglądać filmy, które maja być dostępne w krótce. Zatem ograniczę się do moich subiektywnych wrażeń.

  • Chris Heilmann, Innovating the other web. Bardzo przyjemny i lekki wykład na początek. Trochę mnie druga połowa zmęczyła jak gość powiedział, że pracuje w Microsofcie. Czyli propaganda działa. Na szczęście nie było marketing bulshit tylko rzeczowe i obiektywne spojrzenie na web.
  • Matt Ellis, Little changes to make your app a lot faster. Czekałem na ten wykład i się zawiodłem. Nie dlatego, że był słaby ale dlatego, że wszystko co zostało powiedziane i pokazane czytałem już na blogu jebrainsa. Mimo tego, warto było poświęcić czas. Warto jeszcze raz podkreślić, że to co pokazywał Matt to jest ostatni krok „psucia kodu” i tylko w miejscach gdzie kod tego wymaga, w hot path.
  • Mark Seemann, Type-Driven Development. Wykład na który najbardziej czekałem. Jak zobaczyłem Marka w agendzie to wiedziałem, że chcę tam być. Świetny wykład o wykorzystaniu silnego typowania i tego co ono nam daje na etapie rozmyślań nad rozwiązaniem. Od dawna uważam, że silne typowanie jak bardzo jest upierdliwe tam gdzie trzeba poskładać te wszystkie out w generykach, coś nadpisać coś stuningować to jest to genialna siatka bezpieczeństwa, która pilnuje aby kod miał ręce i nogi. Jedyny minus tego wykładu to to, że był w F#-pie więc jeśli ktoś przyszedł bez znajomości podstawowej składni to mógł mieć mocno pod górkę. Trzeba było słuchać Michała na zeszłorocznej get.net – wystarczyłoby :)
  • Dan North, I, Programmer. Bardzo dobry, miękki wykład. Dan świetnie opowiada i mimo, że nie powiedział nic specjalnie odkrywczego to fajnie pozbierał wszystkie aspekty bycia programistą.
  • Maurice de Beijer, What is new in ASP.NET vNext? Najsłabszy jak dla mnie wykład. Myślałem, że coś nowego się dowiem o vNext jednak dowiedziałem się to co można przeczytać wszędzie. Przecierpiałem do końca bo Maurice się starał ale chyba temat mało lotny – przynajmniej dla mnie.
  • Chris Klug, Decomposing AngularJS, tutaj sobie odpuściłem bo kolejny wykład o angularze – jak to gdzieś przeczytałem takiej Javie w świecie JS. Zagadnąłem w połowie i….. widzę Visual Studio wiszące na jakimś js-ie. Serio co tam jest zepsute z tym Visual Studio, że tak słabo daje sobie radę z js-em? Z relacji innych dowiedziałem się, że wykład był świetny bo gość robił swojego „angulara” od zera i jak to usłyszałem to mi trochę żal było, że jednak nie poszedłem. No cóż, trzeba czekać na video i doglądnąć bo z tego co słyszałem, może być ciekawe.
  • Mark Rendle – nie dotarł z powodu choroby… niestety. Organizatorzy na szybko zorganizowali panel dyskusyjny z Ewą Drzyzgą Danem jako moderatorem. Wyszło świetnie, nie wiem co by pokazał Mark ale gdybym nie widział agendy to by mi to wyglądało jak zaplanowane. Super wybrnęliście z sytuacji.

Potem impreza, piwo uwarzone specjalnie na tą konferencję – świetny pomysł, genialne szoty z mango – no po prostu genialne, jak ktoś nie spróbował to po prostu nie był na wroc# 😉 Bardzo dobre jedzenie (jestem kupiony w 100% podali carpaccio i to nie ze słonia a z prawdziwego wołu) , automaty do gier, piłkarzyki, lotki, budki do zdjęć. Jedynie zespołu mi było żal, bo goście się starali i grali zacnie tylko, że tym głośnym graniem wypłoszyli wiele osób – no cóż, my introwertycy jakoś chyba nie umiemy skakać pod sceną. Generalnie, konferencja bardziej niż udana, cuda na kiju. Jeśli to była pierwsza edycja to jestem ciekaw co będzie dalej. Poprzeczka jest bardzo wysoko zawieszona.

Gratulacje, czapki z głów i czekam na przyszły rok.

Raspberry Pi2 i nowe media center

Jeśli ostatni tydzień spędziłeś pod kamieniem to pewnie nie wiesz, że na świat przyszła nowa wersja malinki, raspberry pi 2. Mamy teraz do dyspozycji 1GB ramu oraz 4 rdzenie. Spora różnica w porównaniu do poprzedniej wersji. Rozmiar jak i cena bez zmian. Jeśli dowiedziałeś się o tym czytając tego bloga to na prawdę musisz mieszkać w jaskini bo o tym wydarzeniu napisali już wszyscy – może poza pudelkiem i mną do teraz.

IMG_20150203_185617

Wszyscy pisali bo i jest o czym pisać, Microsoft ogłosił, że będzie wspierał raspberry Pi 2 swoim Windowsem 10, czekam na to bo może być wesoło. Ciekawe jak będzie działał na tym .net bo do tej pory uruchamiałem na malinie mono i nie miałem większych problemów z tym.

Media Center

Pierwsza malina, która zawitała do mnie do domu pracowała jako media center czyli RaspBMC + dysk zewnętrzny. Spokojnie hostowała sobie zdjęcia, filmy, trochę muzyki, radia internetowe, youtuby i takie tam inne. Ot smart tv w domowym wykonaniu. Demonem prędkości nigdy nie była ale też nie można było bardzo na nią narzekać. Nowe Raspberry Pi 2 na piewszy ogień ma zamienić stary model B (bez plusa) i dać kopa. Tylko, że Raspbmc nie działa z Pi2, na stronie jest oficjalna informacja, że nie ma już wsparcia. Projekt raspbmc jest niejako martwy bo Sam Nazarko (autor) skupia się na nowej platformie OSMC i to działa już na Pi2 i działa super szybko.

OSMC to na razie alpha. więc i choroby wieku dziecięcego się pojawiły. Pierwsza to brak sieci. Przez interfejs użytkownika nie działało u mnie ustawianie sieci – a chcę mieć statyczne ip na tym. Aby to obejść wystarczy wyłączyć ui – opcja wyłącz (bez restartu) i za pomocą esc możemy dostać się do konsoli tam już logowanie (nowe defaultowe hasło daje wam osmc i user osmc) i można brać się za konfigurację.

vi… nie działą, vim też nie, ale działą nano

niestety /etc/network/interfaces też nie działa bo osmc używa jakiegoś innego lepszego sposobu używania sieci, google mówi, że:

sudo nano /var/lib/connman/ethernet.config

i wpisujemy

[service_ethernet]
Type = ethernet
IPv4 = 192.168.1.100/255.255.255.0/192.168.1.1
Nameservers = 192.168.1.1

Czyli generalnie konfiguracja, w postaci

IPv4 = ip malinki/maska/gateway
Nameservers = dns

Restart i śmiga wszystko jak złoto. Jest internet, jest ssh, można szaleć.

I jeszcze jedna uwaga, Pi2 u mnie zaczął wyświetlać kolorowy tęczowy kwadrat na ekranie, czyli brakowało mu mocy z zasilacza. Działa stabilnie ale marudzi, że słabo. Ładowarka od Nexus-a 4 to dla niej za mało dlatego wymieniłem na ładowarkę z iPhone-a i już nie marudzi.