OpenVPN sobre Linux

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca

Enunciat

Configura un Ubuntu Server com a servidor OpenVPN perquè un client extern pugui accedir a un servidor de la xarxa interna darrere del servidor de VPN.

Situació inicial

L'esquema de xarxa serà semblant a aquest:

M11UF2EX2-1-1.png


Tal com ho he muntat jo, tindré client i servidor amb Ubuntu Server/Client 18 en una mateixa xarxa interna; de manera que el túnel no el faré entre diferents xarxes, sinó que serà entre 2 hosts de la mateixa LAN per simplificar; però l'efecte de la connexió serà el mateix. Fins i tot podríem col·locar un sniffer per veure que el trànsit entre aquells hosts està xifrat amb OpenVPN.

Aquesta documentació s'ha fet administrant el servidor via SSH des del host amfitrió amb usuari amb permisos d'administració usant sudo o bé el superusuari root. El servidor es troba a 172.16.70.101.

Procediment

Tinc dues màquines: una amb Ubuntu Server i l'altra amb Ubuntu Desktop (el client). Haurem de configurar primer el servidor perquè sigui una Entitat Certificadora (CA) perquè OpenVPN es basa en el xifrat amb SSL; pel que necessitarem una entitat que pugui emetre certificats. Una vegada el servidor tingui els certificats necessaris, instal·larem i configurarem el servidor OpenVPN i, finalment, el client es connectarà al servidor.

Servidor

Primer de tot actualitzarem la llista de repositoris i el programari instal·lat

sudo apt update
sudo apt upgrade

Instal·larem els paquets necessaris per al servidor OpenVPN i el paquet necessari per a crear claus públiques, privades i certificats RSA, a més a més de git que ens permetrà fer servir un script automàtic per a posar en marxa el servidor i afegir clients de manera ràpida i fàcil

sudo apt-get install openvpn easy-rsa git

Clonarem el repositori dins el directori /opt...

cd /opt
git clone https://github.com/Nyr/openvpn-install.git

Ens mourem dins el directori que hem clonat i farem executable l'script d'instal·lació

cd openvpn-install
chmod +x openvpn-install.sh