Co to jest VPN

VPN to nic innego jak tunel łączący dwie odległe od siebie maszyny, które chcą wymieniać ze sobą dane w sposób uniemożliwiający osobom trzecim podejrzenie całej tej komunikacji. Zalety korzystania z takiego dobrodziejstwa natury są oczywiste -- można obejść cenzorów, gdyż cały ruch z naszej maszyny jest przesyłany do serwera w postaci szyfrowanej, a dopiero z tego serwera sygnał idzie dalej świat.

Jest wiele komercyjnych usług, które za drobną opłatą mogą zapewnić nam tego tupu komunikację ale ja nie będę o nich pisał. Bez problemu można je znaleźć w googlu. Mnie interesuje riseup. By móc korzystać z riseup [1] trzeba założyć tam konto, a to z kolei jest przyznawane tym, którzy w jakiś sposób działają na rzecz szeroko pojętej wolności. Ja wysłałem zgłoszenie po przeczytaniu wątku na forum i konto zostało mi przyznane. Dlatego też opiszę jak wygląda konfiguracja VPN i co ona umożliwia

By móc korzystać z VPN potrzebujemy odpowiedniego oprogramowania. W tym przypadku będzie to OpenVPN:

# aptitude install openvpn

Konfiguracja OpenVPN

Możemy albo ręcznie wpisywać wszelkie dane do połączenia albo skorzystać z pliku konfiguracyjnego i w nim podać potrzebne parametry. Skorzystamy z tego drugiego sposobu, bo prościej. Tworzymy zatem plik /etc/openvpn/riseup.ovpn i wklejamy do niego poniższą zawartość:

client
dev tun
proto tcp
port 1194
auth-user-pass /etc/openvpn/riseup_auth
remote nyc.vpn.riseup.net 
ca /etc/openvpn/RiseupCA.pem
remote-cert-tls server
persist-key
persist-tun
log-append  /var/log/openvpn/openvpn.log
verb 3
auth-nocache
script-security 1
user nobody
group nogroup
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Serwery do wyboru mamy dwa: seattle.vpn.riseup.net (na zachodzie US) oraz nyc.vpn.riseup.net (na wschodzie US) -- wybieramy ten, do którego jest nam bliżej. Sporo opcji w powyższym pliku trzeba dostosować manualnie, bo nie zawsze mogą one działać w określonych sieciach, gdzie admini nam coś przyblokowali. Prawdopodobnie trzeba będzie pobawić się protokołem (tcp/udp) lub/i portem (1194/443/80).

Musimy pozyskać certyfikat riseup. Można go pobrać z https://help.riseup.net/assets/43052/RiseupCA.pem [2]. Zapisujemy na dysku, a ścieżkę do niego podać w pliku konfiguracyjnym. Musimy także stworzyć plik autoryzacyjny, w którym będą zawarte login oraz pseudo hasło. To nie będzie hasło do konta, które umożliwia nam logowanie się do systemu riseup. Będzie to VPN Secret -- ciąg znaków wygenerowany przez system. W przypadku jego utraty na rzecz osób trzecich, nie uzyskają oni dostępu do naszego konta na riseup.net . Tworzymy zatem plik /etc/openvpn/riseup_auth :

kotbezbutow
lMls2Mk4IasOs0R2psrGtAkcllK

Wersy w pliki konfiguracyjnym VPN odpowiadają kolejno parametrom wpisywanym w linii poleceń i biorąc pod uwagę, że mamy już wszystkie opcje połączenia skonfigurowane, wydajemy komendę:

# openvpn /etc/openvpn/riseup.ovpn

Tunel powinien zostać utworzony. Sprawdzamy czy w ifconfig został utworzony nowy interfejs:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
inet addr:172.27.100.6  P-t-P:172.27.100.6  Mask:255.255.252.0
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100 
RX bytes:1944 (1.8 KiB)  TX bytes:1904 (1.8 KiB)

Na stronie riseup piszą, by nie podłączać się bez firewalla, gdyż taki VPN obchodzi wszystkie lokalne mechanizmy ochrony i włącza nas bezpośrednio do internetu, tak jak byśmy mieli stałe zewnętrzne ip i całe robactwo może się do nas wpakować. xD Jeśli mamy jakieś regułki w iptables, trzeba pamiętać by dodać odpowiednie wpisy dla nowego interfejsu. W moim przypadku było to:

/sbin/iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Ja nie korzystam z network managera ale bez problemu można skonfigurować również w nim połączenie VPN. Jest też w planie wsparcie dla VPN w wicd v. > 2.0 . Ale jak widać, ręczne stworzenie połączenia nie jest zbyt skomplikowane i trudne.

Konfiguracja resolvera

Oczywiście samo szyfrowanie komunikacji na nic się nie zda jeśli korzystamy z DNS od naszego ISP. Riseup zapewnia własny szyfrowany DNS (172.27.0.1) i, jak podają, żadne zapytania DNS nie są logowane. W każdym razie można albo się zdecydować na resolver riseup albo skorzystać z innej alternatywy, np. dnscrypt-proxy o którym pisałem tutaj [3]. W każdym razie trzeba pamiętać by zaszyfrować ruch również DNS.

Jeśli chcemy skorzystać z DNS riseup, możemy również doinstalować w tym celu resolvconf , który to zmieni nam automatycznie (przy pomocy skryptu /etc/openvpn/update-resolv-conf) resolver na szyfrowany przy każdym łączeniu się do VPN. Ja jednak wolę polegać na manualnej konfiguracji niż na automatach i ręcznie dopisuję odpowiedni adres w /etc/resolv.conf . Trzeba tylko pamiętać by skonfigurować w naszym systemie programy, które manipulują tym plikiem.

Test połączenia VPN

By przekonać się i sprawdzić czy faktycznie ruch jest przepuszczany jest za pośrednictwem VPN riseup, wchodzimy na pierwszą z brzegu stronę sprawdzającą adres ip. Ja korzystałem z http://whatismyipaddress.com/ [4] . Poniżej wynik:

IP Information:  199.254.238.136
ISP:    Riseup Networks
Organization:   Riseup Networks
Services:   None Detected
Country:    United States

Właśnie przeprowadziłem się do US. xD Jednak jest mały problem -- połaczenia vpn, zwłaszcza te darmowe jak riseup, czasem nie są zbyt szybkie. W prawdzie nie ma co porównywać do TORa ale pingi mówią same za siebie:

$ ping wp.pl -c 3
PING wp.pl (212.77.100.101) 56(84) bytes of data.
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=1 ttl=235 time=504 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=2 ttl=235 time=446 ms
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=3 ttl=235 time=473 ms

--- wp.pl ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 446.842/474.946/504.414/23.523 ms

Inne usługi riseup

Dobrze wiedzieć, że riseup dostarcza nie tylko usługę VPN ale także pocztę, w której mamy obsługę kluczy szyfrujących gpg/pgp. Jeśli nie posiadamy swoich kluczy, riseup może nam je wygenerować. Miejsca w skrzynce, co prawda, nie ma jakoś stosunkowo dużo -- w moim przypadku to 100 MiB ale mi to spokojnie wystarczy, poza tym, mam skonfigurowanego thunderbirda i nie trzymam ważnych wiadomości na serwerach mailowych, bez względu na to czuje one by to nie były. Załączniki mogą być wielkości max. 2 MiB. Także, pod względem przesyłania plików nie może się równać z gmailem. Ale za to gmail nie może się pochwalić szyfrowaniem wiadomości -- coś za coś. No i oczywiście mamy możliwość rejestracji w serwisach, gdzie gmail i inne podobne korporacyjne usługi nie mają wstępu, np. na forum truecrypta. :)


Przypisy:

  1. https://riseup.net/en
  2. https://help.riseup.net/assets/43052/RiseupCA.pem
  3. http://dug.net.pl/tekst/239/jak_dbac_o_swoja_prywatnosc___nie_tylko_w_sieci/#18
  4. http://whatismyipaddress.com/