Wiem, że może protokół PPTP (Point to Point Tunneling Protocol) nie jest najbezpieczniejszy (sam na potrzeby „zawodowe” raczej używam choćby OpenVPN), ale przy zastosowaniu dobrego (odpowiednio długiego) hasła do użytku domowego nadaje się idealnie…

PPTP(D)

Za zastosowaniem tego protokołu do postawienia na Raspberry Pi serwera VPN przemawia też m.in.:

  • Szybka i prostota konfiguracja po stronie serwera
  • Natywna obsługa (jako klient) na dużej liczbie urządzeń (w tym np. telefony z systemem Android)

Instalacja

Zaczynamy od instalacji:

sudo apt-get install pptpd -y

raspberry-pi_vpn_pptpd_01

W nowej wersji systemu (Raspbian/Raspberry Pi) może się zdarzyć, że podczas próby połączenia do serwera VPN pojawi się błąd, a w logu systemowym (var\log\syslog) znajdziemy np. takie błędy:

Couldn't open the /dev/ppp device: No such device or address
Please load the ppp_generic kernel module.

W takiej sytuacji należy zainstalować dodatkowo:

sudo apt-get install pptp-linux network-manager-pptp

Konfiguracja

Po instalacji czeka nas konfiguracja – tym razem nie skończy się na edycji jednego pliku i restarcie usługi, choć też dużo bardziej skomplikowane to nie będzie.

pptpd.conf

Na początek:

sudo nano /etc/pptpd.conf

I na samym końcu pliku szukamy linijek:

#localip 192.168.0.1
#remoteip 192.168.1.234-238,192.168.1.245

Usuwamy komentarz (kasujemy # znajdujący się na początku):

localip 192.168.0.1
remoteip 192.168.1.234-238,192.168.1.245

I szybkie wyjaśnienie:

  • localip – podajcie lokalny (w sieci LAN) adres IP Raspberry Pi
  • remoteip – zakres IP (lokalne IP w Waszej sieci LAN) które będą przydzielane dla klientów VPN

Np.:

localip 192.168.0.5
remoteip 192.168.0.101-120
  • IP Raspberry Pi: 192.168.0.5
  • Lokalne IP dla klientów VPN: od 192.168.0.101 do 192.168.0.120
  • IP routera: 192.168.0.1 (maska 255.255.255.0)
Niżej znajdziesz informację jak przypisać stały adres IP dla wybranego klienta/użytkownika.

pptpd-options

Edytujemy kolejny plik:

sudo nano /etc/ppp/pptpd-options

Również na końcu pliku dopisujemy:

ms-dns 192.168.0.1
nobsdcomp
noipx
mtu 1490
mru 1490

Gdzie „192.168.0.1” to adres IP naszego routera.

raspberry-pi_vpn_pptpd_02_pptpd-options

chap-secrets

W kolejnym pliku ustawimy nazwę użytkownika i hasło do połączenia:

sudo nano /etc/ppp/chap-secrets

Na końcu pliku dodajemy linijkę wg wzoru:

nazwa_użytkownika[TAB lub spacja]*[TAB lub spacja]hasło[TAB lub spacja]*

Czyli np.:

patryk * jakieś_hasło_do_połączenia *

raspberry-pi_vpn_pptpd_03_chap-secrets

Stały IP klienta/użytkownika

W tym pliku (chap-secrets) możesz również ustawić stały adres IP dla wybranego użytkownika, wystarczy w tym celu  w czwartej kolumnie wpisać adres:

nazwa_użytkownika[TAB lub spacja]*[TAB lub spacja]hasło[TAB lub spacja]Adres_IP

Czyli np.:

patryk * jakieś_hasło_do_połączenia 192.168.0.111

sysctl.conf

Ostatni plik który zmodyfikujemy to:

sudo nano /etc/sysctl.conf

Dokonamy małej modyfikacji, dzięki czemu będziemy mieli dostęp z zewnątrz do zasobów w sieci lokalnej (LAN).

Szukamy linijki:

#net.ipv4.ip_forward=1

i usuwamy komentarz/zmieniamy na:

net.ipv4.ip_forward=1

Reguły firewalla

Warto od razu dodać jeszcze reguły firewalla, by w pełni móc korzystać z dobrodziejstw naszego VPSa:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
sudo iptables -I INPUT -s 192.168.0.0/8 -i ppp0 -j ACCEPT

Oczywiście, jeśli mamy jakiś niestandardowy firewall, to w nim przeprowadzamy konfigurację…

Uruchamiamy serwer VPN

Korzystamy w tym celu z 2 komend:

sudo sysctl -p
sudo /etc/init.d/pptpd restart

 

raspberry-pi_vpn_pptpd_04

W tym momencie nasz serwer VPN powinien już działać według wprowadzonych ustawiań…

W jednym z komentarzy pojawiło się pytanie jak ustawić automatyczny serwera – jeśli z jakichś przyczyn serwer PPTP/VPN nie startuje automatycznie (np. w Debian 8 Jessie) możecie to skorygować za pomocą poleceń:

sudo systemctl start pptpd
sudo systemctl enable pptpd

Pierwsze polecenie uruchomi serwer w danej sesji, drugie aktywuje/włączy automatyczny start.

Po restarcie systemu serwer powinien działać prawidłowo, co można sprawdzić np. poleceniem:

sudo systemctl status pptpd

Router

Z racji tego, że VPN z założenia skonfigurowaliśmy po to, by połączyć się zdalnie (z Internetu) z naszą siecią LAN nie obejdzie się bez jeszcze (minimum) jednej zmiany na routerze.

raspberry-pi_vpn_pptpd_05_routerMusicie ustawić przekierowanie portu „z zewnątrz” do Raspberry Pi.

Po informacje jak to zrobić – odsyłam Was do instrukcji obsługi Waszego routera.

Klient VPN

Jeśli chodzi o konfigurację klienta VPN, to już wiele zależy od tego z jakiego urządzenia będziecie korzystali.

Ja pokaże na przykładzie 2 urządzeń które akurat teraz mam „pod ręką”:

Windows 7

W „Panelu sterowania” wybieramy „Centrum sieci i udostępniania”:

raspberry-pi_vpn_pptpd_06_windows7_01

Następnie:

Skonfiguruj nowe połączenie lub nową sieć
Skonfiguruj połączenie bezprzewodowe, szerokopasmowe, telefoniczne, ad hoc lub VPN albo skonfiguruj router lub punkt dostępu.

Dalej:

Połącz z miejscem pracy
Skonfiguruj połączenie telefoniczne lub połączenie VPN z miejscem pracy.

raspberry-pi_vpn_pptpd_06_windows7_02

Czy chcesz użyć połączenia, które już masz?

Wybieramy:

Nie, utwórz nowe połączenie

Dalej:

Użyj mojego połączenia internetowego (VPN)
Połącz przy użyciu połączenia wirtualnej sieci prywatnej (VPN) za pośrednictwem Internetu.

raspberry-pi_vpn_pptpd_06_windows7_03

W następnym oknie musimy uzupełnić w pola:

  • Adres internetowy – wpisujemy publiczny IP
  • Nazwa miejsca docelowego – nazwa dla połączenia (np. „Testowe z Raspberry Pi”)

raspberry-pi_vpn_pptpd_06_windows7_04

I tu mała uwaga:

By móc połączyć się z naszym routerem musimy mieć publiczny adres IP, najlepiej też stały.

O ile brak stałego adresu IP da się obejść (zobacz: Cloudflare DDNS), to w przypadku gdy nie mamy publicznego adresu IP – jesteśmy schowani za routerem dostawcy Internetu – tu raczej nic nie poradzimy, chyba, że dostawca Internetu jest w stanie zmienić nam adres na publiczny (najlepiej też stały), lub chociaż przekierować bezpośrednio do nas ruch na konkretnym porcie.

Klikamy „Dalej”, i podajemy nazwę użytkownika i hasło:

  • Nazwa użytkownika: patryk (zmień na własną :-))
  • Hasło: wiadomo…

raspberry-pi_vpn_pptpd_06_windows7_05

Można zaznaczyć „Zapamiętaj to hasło”, następnie klikamy „połącz”.

Jeśli wszystko ustawiliśmy poprawnie po chwili powinniśmy uzyskać połączenie:

raspberry-pi_vpn_pptpd_06_windows7_06

Utworzone połączenie powinno też pojawić się na liście naszych połączeń sieciowych:

raspberry-pi_vpn_pptpd_06_windows7_06b

Android

W przypadku telefonu z system Android jest chyba jeszcze prościej, wystarczy wybrać kolejno:

  1. Ustawienia
  2. Sieci zwykłe i bezprzewodowe
  3. Ustawienia sieci VPN
  4. Dodaj sieć VPN
  5. Dodaj sieć VPN PPTP

I uzupełnić dwa elementy:

  • Nazwa sieci VPN – nazwa pod jaką będziemy widzieli połączenie
  • Ustaw serwer sieci VPN – wpisz swój publiczny adres IP

Na liście sieci VPN pojawiła się nowa sieć, wystarczy teraz na niej kliknąć, podać nazwę użytkownika i hasło:

raspberry-pi_vpn_pptpd_07_android

Zobacz wszystkie artykuły z serii „Raspberry Pi”

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk