Dlaczego Raspberry Pi Zero W i OpenVPN to Zgrany Duet na Podróż?
Wyobraź sobie sytuację: jesteś za granicą, dostęp do ulubionych serwisów streamingowych z Polski jest zablokowany, a Twój główny VPN odmawia posłuszeństwa. Frustrujące, prawda? Wtedy właśnie wkracza do akcji Raspberry Pi Zero W z OpenVPN. To małe urządzenie, mieszczące się w kieszeni, może stać się Twoją osobistą awaryjną bramą VPN. Dlaczego Zero W? Jest tanie, energooszczędne i ma wbudowane WiFi, co czyni go idealnym kandydatem do tego zadania. Poza tym, w przeciwieństwie do płatnych usług VPN, masz pełną kontrolę nad swoim serwerem i danymi. To jak mieć swój własny, prywatny tunel do domu.
Krok 1: Przygotowanie Raspberry Pi Zero W i Instalacja OpenVPN
Zanim zaczniemy, upewnij się, że masz zainstalowany system operacyjny na Raspberry Pi Zero W. Polecam Raspbian (obecnie Raspberry Pi OS) w wersji Lite – jest lekki i nie obciąża zasobów. Po uruchomieniu, połącz się z siecią WiFi i zaktualizuj system:
sudo apt update
sudo apt upgrade
Następnie zainstaluj OpenVPN i Easy-RSA (narzędzie do generowania certyfikatów):
sudo apt install openvpn easy-rsa
To wszystko na początek. Następne kroki będą wymagały większej uwagi, więc usiądź wygodnie.
Krok 2: Konfiguracja Easy-RSA – Tworzenie Certyfikatów
Bez certyfikatów ani rusz. OpenVPN używa ich do bezpiecznego uwierzytelniania klientów. Easy-RSA ułatwia ten proces. Najpierw utwórz kopię roboczą katalogu Easy-RSA:
cd /usr/share/easy-rsa
make-vars > vars
nano vars
W pliku vars musisz ustawić kilka zmiennych, takich jak nazwa Twojej organizacji, kraj, miasto itd. Nie musisz wypełniać wszystkich pól, ale te podstawowe są ważne.
export KEY_COUNTRY=PL
export KEY_PROVINCE=Mazowieckie
export KEY_CITY=Warszawa
export KEY_ORG=MojaFirma
export [email protected]
export KEY_OU=DziałIT
Zapisz zmiany i zamknij plik. Teraz zainicjuj środowisko Easy-RSA:
./easyrsa init-pki
Następnie wygeneruj certyfikat CA (Certificate Authority):
./easyrsa build-ca
Zostaniesz poproszony o podanie hasła. Pamiętaj je, bo będzie potrzebne później. Kolejny krok to wygenerowanie certyfikatu serwera:
./easyrsa build-server-full server nopass
“server” to nazwa serwera. “nopass” oznacza, że certyfikat nie będzie wymagał hasła przy starcie (wygodne, ale mniej bezpieczne). Teraz wygeneruj certyfaty dla klientów (np. telefon komórkowy, laptop):
./easyrsa build-client-full klient1 nopass
./easyrsa build-client-full klient2 nopass
“klient1” i “klient2” to nazwy Twoich klientów. Na koniec wygeneruj klucz Diffie-Hellman, który służy do wymiany kluczy kryptograficznych:
./easyrsa gen-dh
Krok 3: Konfiguracja Serwera OpenVPN
Teraz, gdy mamy certyfikaty, możemy skonfigurować serwer OpenVPN. Skopiuj potrzebne pliki do katalogu konfiguracyjnego OpenVPN:
cp pki/ca.crt /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp /usr/share/easy-rsa/vars /etc/openvpn/
Następnie skopiuj przykładową konfigurację serwera i dostosuj ją:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gzip -d /etc/openvpn/server.conf.gz
nano /etc/openvpn/server.conf
W pliku server.conf musisz zmodyfikować kilka linijek. Przede wszystkim ustaw parametry sieciowe. Poniżej przykład:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push redirect-gateway def1 bypass-dhcp
push dhcp-option DNS 8.8.8.8
push dhcp-option DNS 8.8.4.4
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
Zwróć uwagę na server 10.8.0.0 255.255.255.0. To adresy IP, które będą przypisywane klientom VPN. Możesz je zmienić, ale upewnij się, że nie kolidują z Twoją siecią lokalną. push redirect-gateway def1 bypass-dhcp powoduje, że cały ruch z klientów będzie kierowany przez VPN. push dhcp-option DNS 8.8.8.8 ustawia serwery DNS Google. Zapisz zmiany i zamknij plik.
Krok 4: Konfiguracja Zapory Ogniowej (iptables)
Zapora ogniowa jest niezbędna, aby zabezpieczyć serwer OpenVPN. Użyjemy iptables. Najpierw włącz przekierowanie pakietów:
sudo nano /etc/sysctl.conf
Usuń komentarz (znak #) z linijki net.ipv4.ip_forward=1. Zapisz zmiany i zamknij plik. Następnie wykonaj:
sudo sysctl -p
Teraz skonfiguruj iptables:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
wlan0 to interfejs sieciowy WiFi. Jeśli używasz Ethernetu, zmień to na eth0. Aby zapisać reguły iptables i przywracać je po restarcie, zainstaluj iptables-persistent:
sudo apt install iptables-persistent
sudo netfilter-persistent save
Krok 5: Włączenie i Testowanie Serwera OpenVPN
Teraz możemy włączyć serwer OpenVPN:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Sprawdź status serwera:
sudo systemctl status openvpn@server
Jeśli wszystko poszło dobrze, serwer powinien być uruchomiony.
Krok 6: Konfiguracja Klienta VPN (Android, iOS, Windows)
Potrzebujesz pliku konfiguracyjnego dla każdego klienta. Utwórz go na Raspberry Pi:
nano klient1.ovpn
Wklej następującą zawartość, dostosowując do swoich potrzeb:
client
dev tun
proto udp
remote twoj_adres_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert klient1.crt
key klient1.key
remote-cert-tls server
cipher AES-256-CBC
verb 3
Zastąp twoj_adres_ip publicznym adresem IP Twojego domowego routera (lub dynamiczną nazwą DNS). Dodaj zawartość plików ca.crt, klient1.crt i klient1.key bezpośrednio do pliku .ovpn (wewnątrz znaczników <ca></ca>, <cert></cert> i <key></key>). Przenieś plik .ovpn na swoje urządzenie (np. telefon) za pomocą scp, USB lub chmury. Zainstaluj aplikację OpenVPN Connect na swoim urządzeniu i zaimportuj plik konfiguracyjny. Po połączeniu, cały ruch z Twojego urządzenia powinien przechodzić przez tunel VPN.
Krok 7: Ustawienie Dynamicznego DNS (opcjonalnie)
Jeśli Twój dostawca internetu przydziela dynamiczny adres IP, potrzebujesz dynamicznego DNS (DDNS), aby zawsze móc połączyć się z serwerem VPN. Istnieje wiele darmowych usług DDNS, np. DuckDNS. Załóż konto, skonfiguruj domenę i zainstaluj klienta DDNS na Raspberry Pi. To zagwarantuje, że Twoja domena zawsze będzie wskazywała na aktualny adres IP Twojego routera.
Twoja Awaryjna Brama VPN Gotowa do Akcji!
Gratulacje! Właśnie skonfigurowałeś swój własny serwer OpenVPN na Raspberry Pi Zero W. Teraz masz awaryjną bramę VPN, która pomoże Ci ominąć cenzurę, uzyskać dostęp do lokalnych zasobów i zabezpieczyć swoją komunikację w podróży. Pamiętaj, że bezpieczeństwo to proces, a nie produkt. Regularnie aktualizuj system, sprawdzaj konfigurację i dbaj o hasła. Twój kieszonkowy VPN będzie Ci dobrze służył.