Cum rulezi propriul server OpenVPN pe un Raspberry Pi
- 5 minute de citit
- 5 exemple de cod
- 3 imagini
Disponibil și în English
Pe această pagină
Raspberry-ul meu, care funcționează ca server OpenVPN
Salut tuturor!
În acest articol scurt voi explica cum să configurezi propriul server VPN (Virtual Private Network) pe un Raspberry PI cu OpenVPN. După ce configurăm serverul, vom configura un server de obfuscare pentru a-ți ascunde traficul, astfel încât să nu se vadă că folosești un VPN. Asta ne va ajuta să ocolim unele forme de cenzură.
De ce să folosești un VPN?
Mai întâi, să vorbim despre motivele pentru care ai putea vrea un server VPN:
- Evită atacurile de tip man in the middle. Dacă ai un utilizator rău intenționat în rețeaua ta locală — chiar și pe colegul de apartament — acea persoană poate monitoriza traficul tău necriptat și îl poate modifica.
- Ascunde-ți activitatea de internet de la ISP-ul tău (Internet Service Provider) sau de la universitate, în cazul meu.
- Deblochează servicii. Universitatea mea blochează toate pachetele UDP (User Datagram Protocol). Asta înseamnă că nu pot folosi nicio aplicație care comunică prin UDP. Nu-mi pot folosi clientul de email, nu pot juca jocuri și nici nu pot folosi Git!
Am decis să configurez un VPN pe conexiunea mea de internet de acasă folosind un Raspberry Pi. Astfel, mă pot conecta la rețeaua mea de acasă când sunt la universitate. Dacă ai nevoie de un server VPN într-o altă țară, poți cumpăra un server privat virtual de 5$/lună de la mulți furnizori de hosting.
Instalarea OpenVPN
Acest pas este foarte simplu, pentru că vom folosi un script shell care îl face în locul tău. Deci trebuie doar să „apeși” next și finish.
Instalarea durează mult, în funcție de dimensiunea cheii pe care o alegi. Pe Raspberry Pi 3 Model B, a durat aproximativ 3 ore.
Te rog să accesezi acest repository și apoi să urmezi instrucțiunile
Dacă nu știi adresa IP a serverului tău, pune doar 0.0.0.0 . Eu am ales 443 pentru port și TCP (Transmission Control Protocol) pentru protocol.
Notă: Acest lucru este foarte important, pentru că universitatea mea permite doar TCP/80 și TCP/443, restul sunt practic blocate. De asemenea, Obfsproxy funcționează doar cu TCP, așa că asigură-te că alegi TCP!
După ce scriptul s-a terminat, vei primi un fișier .ovpn. Acesta poate fi importat în clientul tău VPN preferat, și totul ar trebui să funcționeze din prima.
Testarea conexiunii
Importă fișierul .ovpn în clientul tău VPN și schimbă ip-ul 0.0.0.0 cu adresa IP locală a Raspberry PI-ului tău. În funcție de configurația rețelei tale, aceasta poate fi de forma192.168.*.* .
Notă: Acest lucru va funcționa doar dacă ești conectat la același WiFi la care este conectat și Pi-ul.
Viscosity s-a conectat cu succes la serverul meu VPN.
Am configurat routerul meu astfel încât PI-ul să primească mereu o adresă IP rezervată. S-ar putea să trebuiască să verifici setările routerului dacă vrei să faci ceva similar.
Dacă conexiunea reușește, felicitări, acum ai un server VPN! Dar nu poți să te conectezi la el din exterior… încă.
Dacă vrei doar un server OpenVPN fără proxy de obfuscare, poți trece direct la Port Forwarding.
Instalarea proxy-ului de obfuscare
Obfs4 este un proxy de amestecare. Acesta îți ascunde traficul de internet făcându-l să arate ca zgomot. Cineva care îți spionează traficul nu va ști de fapt ce faci, iar acesta te va proteja de atacurile de probing activ, folosite de Marele Firewall al Chinei.
Notă: Această metodă nu va funcționa dacă adversarul tău permite doar trafic din liste albe 🙁
Să instalăm acum serverul proxy.
0. Instalează pachetul necesar:
apt-get update && apt-get install obfs4proxy- Creează un director care va conține configurația.
sudo mkdir -p /var/lib/tor/pt_state/obfs4
- Creează fișierul de configurare.
sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config
În fișierul de configurare vei lipi următoarele lucruri:
TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443TOR_PT_SERVER_BINDADDR este adresa pe care proxy-ul va asculta conexiunile noi. În cazul meu este 0.0.0.0:444 — de ce 444 și nu 443? Ei bine, pentru că nu vreau să schimb configurația serverului OpenVPN, care ascultă momentan pe 443. De asemenea, voi mapa mai târziu această adresă la 443 folosind Port Forwarding.
TOR_PT_ORPORT ar trebui să indice serverul OpenVPN. În cazul meu, serverul rulează pe 127.0.0.1:443
- Creează un fișier de serviciu SystemD.
sudo nano /etc/systemd/system/obfs4proxy.serviceApoi lipește în el următorul conținut:
[Unit]Description=Obfsproxy Server[Service]
EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.config
ExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO
[Install]
WantedBy=multi-user.target
- Pornește proxy-ul de obfuscare.
Acum, asigură-te că OpenVPN rulează și rulează următoarele comenzi, în ordine, pentru a porni proxy-ul și a-l activa la pornirea sistemului.
sudo systemctl start ```obfs4proxysudo systemctl enable obfs4proxy```
- Salvează cheia certificatului
După ce serviciul a pornit, rulează următoarea comandă și salvează cheia certificatului.
cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt
Cheia are forma Bridge obfs4 : cert=<strong>KEY</strong> iat-mode=0 . Vei avea nevoie de ea când te conectezi la VPN.
- Testarea conexiunilor.
Deschide clientul tău VPN și schimbă ip-ul din 443 în 444, pentru a te conecta la proxy în loc de serverul OpenVPN.
După aceea, găsește opțiunea Pluggable Transport în clientul tău OpenVPN și verifică dacă acceptă obfs4.
Dacă totul funcționează, atunci ești gata! Felicitări! Mai sunt doar câteva lucruri de ajustat înainte de a folosi acest VPN din lumea exterioară.
Port Forwarding
Pentru a accesa serverul OpenVPN din lumea exterioară trebuie să deblocăm porturile, pentru că cel mai probabil sunt blocate. După cum îți amintești, am rezervat în routerul meu adresa IP a Pi-ului să fie mereu 192.168.1.125, ca să nu se schimbe dacă Pi-ul se deconectează sau dacă routerul se restartează.
Astfel, am definit următoarele reguli în tabelul meu de Port Forwarding:
Portul extern 443 va indica portul serverului de obfuscare 444. Dacă nu ai un server de obfuscare, lasă 443->443.
Portul 25 va indica portul SSH 22 al Pi-ului. Asta este doar pentru confortul meu.
În cazul în care vreau să accesez serverul OpenVPN direct, fără proxy-ul de obfuscare, am creat regula 444->443
Portul de serviciu este portul EXTERN care va fi folosit cu adresa ta PUBLICĂ IP. Pentru a-ți afla IP-ul public, folosește un serviciu precum whatsmyip.com.
Portul intern este portul INTERN. Poate fi folosit doar când ești conectat la rețea.
Notă: Prima regulă spune să redirecționezi toate conexiunile de la PUBLIC_IP:443 către 192.168.1.125:444
Testare
- Află IP-ul tău public și înlocuiește vechiul IP cu IP-ul public în fișierul .ovpn sau în clientul VPN.
- Conectează-te la VPN.
Atât.
DNS dinamic
În majoritatea cazurilor, IP-ul tău se va schimba deoarece este un IP dinamic. O soluție este să creezi un mic program pe Pi care salvează IP-ul tău și îți trimite un email în fiecare zi sau cam așa. De asemenea, poți stoca IP-ul într-o bază de date online, precum Firebase.
Routerul meu are o setare Dynamic DNS. Astfel, pot folosi un furnizor de servicii precum NoIP și pot obține un domeniu precum example.no-ip.com care va indica mereu adresa mea IP publică.
Alte resurse:
- A Childs Garden Of Pluggable Transports
- Viscosity-Obsfurcation/
- https://www.pluggabletransports.info/transports/
Dacă ai întrebări, scrie-mi pe Twitter.