Una VPN (Virtual Private Network) crea una connexió de xarxa privada entre dispositius a través d'Internet. Les VPN s'utilitzen per transmetre dades de manera segura i anònima a través de xarxes públiques.
És un programa gratuit per a VPN però el seu principal problema es que pot portar problemes a la hora de du a terme la instal·lació i gestionar-la, degut a que necesites un certificat SSL per encriptar les comunicacions y autentificació, també un CA (Autoritat Certificadora), també tenim que generar una clau TLS, generar les sol·licituds de certificat i firmarles per generar els certificats que s’envien als usuaris.
Però tot això ho podem fer més fàcilment amb PIVPN, que ho fa automàticament.
Raspberry Pi 3B+ o una Raspberry Pi 4B
És necessari un port ethernet que funcioni a uns 300Mbit/s mínim
IP fixa o un servell DNS dinamic
Primer de tot instal·lem el PIVPN amb la següent comanda
curl -L https://install.pivpn.io | bash
Els següents pasos seran donar-li a OK en dirà que necesita una IP estática dins de la xarxa, la podem assignar nosaltres mateixos o podem deixar que ho faci el servidor DHCP automàticament
Per continuar aquí ens pregunta si estem segurs de que volem que deixi la IP fixa o si la volem cambiar, nosaltres ho deixarem en Yes.
Aquí ens dona a escollir entre quin protocol volem, escollim el de OpenVPN.
Aquí ens pregunta sobre quin protocol utilitzar sobre OpenVPN, per defecte be el protocol UDP de PIVPN, així que li donem a NO.
Hem de dir-li quin port de UDP volem que s’utilitzi sobre OpenVPN, per defecte poden sortir uns quants nosaltres utilitzarem el 2194.
Un cop confirmat el port el següent serà seleccionar els DNS, per facilitat utilitzarem els DNS de Google, per exemple, encara que podem utilitzar un servidor DNS local.
Depèn que el nostre servei estigui disponible a través d'internet, si disposem d'IP pública fixa a la nostra xarxa podem utilitzar-la com a tal; si no, haurem de seleccionar DNS Entry i escriure el DNS, que prèviament tindrem configurat (Recordem a l'inici: DynDNS o NoIP són bons en això).
Un cop seleccionada la IP o DNS el pas següent és automàtic, i és la generació de la clau HMAC que s'utilitzarà per a l'autenticació TLS, així que acceptem i continuem.
Ens pregunta si volem fer actualitzacions de seguretat, el millor és dir que si
Ja està tot instal·lat, ara PiVPN ens indica com afegir nous usuaris a la nostra VPN, ho expliquem una mica més endavant. Li donem a Ok i es reiniciarà automaticament.
Per crear el usuari farem pivpn add, aquí ens demana el nom i contrasenya que volem crear, automàticament en la rasberry tindrem un arxiu amb el (nom de l'usuari).ovpn i haurem de passar-lo al nostre ordinador per exemple per correu.
Assumim que ens conectar-hem desde Windows. Necessitar-hem descagran-se el client OpenVPN desde la web següent:
OpenVPN
Un cop instal·lat apareixerà la icona d'OpenVPN GUI al tray del sistema (a baix dreta, al costat de l'hora). Farem clic dret i només haurem de seleccionar Import files i seleccionar el fitxer .ovpn que hem portat del servidor.
Posem l’archiu descargat anteriorment i ens sortirà una pestanya en la qual ens demana la contrasenya per accedir i conectan-se al VPN i automàticament estarem conectats.
No ens va sortir perquè el programa de PIVPN no ens va programar be el usuari i llavors no podia fer bé l'arxiu .ovpn que necessitem (on hi han els certificats i claus), a part d’això el arxiu que ens ha de proporcionar ens el dona amb arxiu .conf i tindria que ser .ovpn
axriu que en teoria tindria que ser
El primer que hem de fer és crear una carpeta dins de /etc/apache2/ anomenada ssl
sudo mkdir /etc/apache2/ssl
Després crearem el certificat, vàlid per a 3 anys, amb la següent ordre:
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key
Crearà la clau del certificat ia més ens farà diverses preguntes. Hi respondrem amb dades ficticis, menys a la part en què ens demana el «Common Name» on haurem de ficar el domini que tinguem (si en tenim un) o en el meu cas el domini que m'ofereix el meu servei de DNS dinàmic. No serveixen adreces IP!
Encara no reinicialitzarem Apache. Ara haurem d'instal·lar el servei SSL per a Apache:
sudo a2enmod ssl
Ara fem accessible el lloc ssl creant un enllaç simbòlic a la carpeta corresponent:
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
I editem aquest fitxer de configuració ja sigui amb l'editor micro o nano o el que prefereixis:
sudo micro /etc/apache2/sites-enabled/000-default-ssl.conf
Afegirem aquestes dues línies per sobre de la línia VirtualHost
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Ara ja si volem, reiniciem el servei d'Apache perquè tingui en compte aquestes modificacions:
sudo service apache2 restart
No hem d'oblidar, que hem de fer un port-forwarding als ports 80 i 443. Això ho faig al router de casa meva. On redirigeixo les peticions exteriors als ports 80 i al 443 (entre d'altres que també tinc configurats) que entrin, als ports 80 i 443 de l'adreça IP local del meu Raspberry Pi.
Amb això ja podríem accedir mitjançant https a la direcció del nostre domini. En accedir el navegador ens donarà una advertència, ja que el certificat no està signat per una agència certificadora (CA), ja que ens ho hem «autosignat».
Aceptamos y añadimos esa excepción cuando visitemos las páginas que sirve nuestro servidor.