informatica:linux:openvpn
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatica:linux:openvpn [2013/11/04 16:27] – [Generar claves de los clientes] javi | informatica:linux:openvpn [2018/01/05 14:20] (current) – [Autenticación LDAP] javi | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== OpenVPN ====== | + | ======= OpenVPN |
- | ===== Routed VPN ===== | + | ====== Routed VPN ====== |
- | ==== Instalacion y configuracion ==== | + | ===== Instalacion y configuracion |
Esta configuración nos permite conectividad punto a punto entre los distintos clientes y el servidor VPN | Esta configuración nos permite conectividad punto a punto entre los distintos clientes y el servidor VPN | ||
Line 22: | Line 22: | ||
< | < | ||
- | cd /usr/share/ | + | cd / |
sudo su | sudo su | ||
vim vars | vim vars | ||
Line 34: | Line 34: | ||
export KEY_ORG=" | export KEY_ORG=" | ||
export KEY_EMAIL=" | export KEY_EMAIL=" | ||
- | export KEY_EMAIL=info@example.com | ||
export KEY_CN=cn | export KEY_CN=cn | ||
export KEY_NAME=name | export KEY_NAME=name | ||
Line 45: | Line 44: | ||
./clean-all | ./clean-all | ||
./build-ca | ./build-ca | ||
+ | </ | ||
+ | |||
+ | Error: | ||
+ | |||
+ | < | ||
+ | grep: / | ||
+ | pkitool: KEY_CONFIG (set by the ./vars script) is pointing to the wrong | ||
+ | version of openssl.cnf: | ||
+ | The correct version should have a comment that says: easy-rsa version 2.x | ||
+ | </ | ||
+ | |||
+ | Solución: | ||
+ | |||
+ | ln -s openssl-1.0.0.cnf openssl.cnf | ||
+ | |||
+ | Y volver a intentar: | ||
+ | |||
+ | ./build-ca | ||
+ | | ||
+ | Error: | ||
+ | |||
+ | < | ||
+ | unable to find ' | ||
+ | problems making Certificate Request | ||
+ | 1995425184: | ||
+ | </ | ||
+ | |||
+ | Desconozco el motivo, pero se resuleve editando las lineas en las que se le asigna un valor a la variable " | ||
+ | |||
+ | vim openssl.cnf | ||
+ | | ||
+ | Y cambio los valores: | ||
+ | |||
+ | < | ||
+ | # anyadido | ||
+ | # | ||
+ | subjectAltName=email: | ||
+ | </ | ||
+ | |||
+ | Y volver a intentar: | ||
+ | |||
+ | ./build-ca | ||
+ | |||
+ | Ahora a contestar las preguntas y pulsar " | ||
+ | |||
+ | < | ||
+ | Country Name (2 letter code) [US]:ES | ||
+ | State or Province Name (full name) [BC]: | ||
+ | Locality Name (eg, city) [Barcelona]: | ||
+ | Organization Name (eg, company) [Contrabanda FM]: | ||
+ | Organizational Unit Name (eg, section) [Tècnica]: | ||
+ | Common Name (eg, your name or your server' | ||
+ | Name [EasyRSA]: | ||
+ | Email Address [admin@example.com]: | ||
</ | </ | ||
Line 52: | Line 105: | ||
./ | ./ | ||
+ | |||
+ | Ahora a contestar las preguntas y pulsar " | ||
+ | |||
+ | < | ||
+ | Country Name (2 letter code) [US]:ES | ||
+ | State or Province Name (full name) [BC]: | ||
+ | Locality Name (eg, city) [Barcelona]: | ||
+ | Organization Name (eg, company) [Contrabanda FM]: | ||
+ | Organizational Unit Name (eg, section) [Tècnica]: | ||
+ | Common Name (eg, your name or your server' | ||
+ | Name [EasyRSA]: | ||
+ | Email Address [admin@example.com]: | ||
+ | </ | ||
+ | |||
+ | Las contraseñas las dejo en blanco: | ||
+ | |||
+ | A challenge password []: | ||
+ | An optional company name []: | ||
+ | |||
+ | Y aquí hay que pulsar " | ||
+ | |||
+ | Sign the certificate? | ||
+ | 1 out of 1 certificate requests certified, commit? [y/n] | ||
4.2. Generate Diffie Hellman parameters | 4.2. Generate Diffie Hellman parameters | ||
+ | **OJO**: puede llevar mucho tiempo, unos 15 minutos: | ||
+ | |||
./build-dh | ./build-dh | ||
- | 4.3. Mover llaves | + | 4.3. Mover llaves |
mkdir -p / | mkdir -p / | ||
Line 80: | Line 158: | ||
cert / | cert / | ||
key / | key / | ||
- | dh / | + | dh / |
server 172.16.0.0 255.255.255.0 | server 172.16.0.0 255.255.255.0 | ||
ifconfig-pool-persist ipp.txt | ifconfig-pool-persist ipp.txt | ||
Line 103: | Line 181: | ||
Hay muchas opciones (" | Hay muchas opciones (" | ||
- | ==== Generar claves de los clientes ==== | + | ===== Generar claves de los clientes |
+ | |||
+ | |||
+ | |||
+ | ==== Procedimiento generico | ||
Para cada nuevo cliente se tiene que repetir este proceso completo. | Para cada nuevo cliente se tiene que repetir este proceso completo. | ||
Line 110: | Line 192: | ||
sudo su | sudo su | ||
- | cd /usr/share/ | + | cd / |
2. Reiniciar vars: | 2. Reiniciar vars: | ||
Line 119: | Line 201: | ||
./build-key client1 | ./build-key client1 | ||
+ | |||
+ | Contestar las preguntas, presionar " | ||
+ | |||
+ | < | ||
+ | Country Name (2 letter code) [US]:ES | ||
+ | State or Province Name (full name) [BC]: | ||
+ | Locality Name (eg, city) [Barcelona]: | ||
+ | Organization Name (eg, company) [Contrabanda FM]: | ||
+ | Organizational Unit Name (eg, section) [Tècnica]: | ||
+ | Common Name (eg, your name or your server' | ||
+ | Name [EasyRSA]: | ||
+ | Email Address [admin@example.com]: | ||
+ | </ | ||
+ | |||
+ | Las contraseñas las dejo en blanco: | ||
+ | |||
+ | A challenge password []: | ||
+ | An optional company name []: | ||
+ | |||
+ | Y aquí hay que pulsar “y” más “enter”: | ||
+ | |||
+ | Sign the certificate? | ||
+ | 1 out of 1 certificate requests certified, commit? [y/n] | ||
+ | |||
4. Mover las llaves y copiar la clave publica de la CA a un directorio: | 4. Mover las llaves y copiar la clave publica de la CA a un directorio: | ||
mkdir -p ~/ | mkdir -p ~/ | ||
- | user="horaci.polanco"; cp keys/ca.crt ~/ | + | user="client1" |
- | rm -fr keys/client1.csr | + | |
5. Crear el archivo de configuracion del cliente (hay un ejemplo en / | 5. Crear el archivo de configuracion del cliente (hay un ejemplo en / | ||
): | ): | ||
- | vim ~/openvpn/client1/client1.conf | + | |
| | ||
Con el siguiente contenido: | Con el siguiente contenido: | ||
Line 285: | Line 390: | ||
sudo service openvpn start | sudo service openvpn start | ||
- | ===== Acceso desde el cliente a la LAN del servidor VPN (gateway de la LAN y servidor VPN son distintos) ===== | + | |
+ | ==== Migracion a openvpn >=2.3 ==== | ||
+ | |||
+ | **IMPORTANTE**: | ||
+ | |||
+ | 0. Instalar paquete, ahora ya NO es parte de openvpn | ||
+ | |||
+ | sudo aptitude install easy-rsa | ||
+ | |||
+ | 1. **IMPORTANTE**: | ||
+ | |||
+ | cd / | ||
+ | mv keys keys.old | ||
+ | sudo mv / | ||
+ | |||
+ | ====== Acceso desde el cliente a la LAN del servidor VPN (gateway de la LAN y servidor VPN son distintos) | ||
Queremos que desde el cliente se llegue no solo al servidor VPN, sino también a la LAN de ese servidor. La particularidad es que el servidor VPN es una máquina virtual detrás de un Hipervisor KVM. Además el Hipervisor KVM está detrás de un router ADSL casero en modo DMZ, de forma que TODO el tráfico lo redirige hacia el Hipervisor. | Queremos que desde el cliente se llegue no solo al servidor VPN, sino también a la LAN de ese servidor. La particularidad es que el servidor VPN es una máquina virtual detrás de un Hipervisor KVM. Además el Hipervisor KVM está detrás de un router ADSL casero en modo DMZ, de forma que TODO el tráfico lo redirige hacia el Hipervisor. | ||
Line 438: | Line 558: | ||
ping 10.0.0.12 | ping 10.0.0.12 | ||
- | ===== Configurar DNS en el cliente ===== | + | ====== Configurar DNS en el cliente |
Para que el cliente reciba del servidor VPN parámetros como servidor DNS o Dominio de búsqueda necesitamos configuración tanto en el servidor como en el cliente, y un script en el lado cliente. Si la máquina es Windows el script no es necesario. | Para que el cliente reciba del servidor VPN parámetros como servidor DNS o Dominio de búsqueda necesitamos configuración tanto en el servidor como en el cliente, y un script en el lado cliente. Si la máquina es Windows el script no es necesario. | ||
Line 561: | Line 681: | ||
</ | </ | ||
- | ===== Revocar certificados ===== | + | ====== Revocar certificados |
http:// | http:// | ||
Line 618: | Line 738: | ||
</ | </ | ||
- | ====== Receta 2 (parcialmente incompleta) ====== | + | ======= Receta 2 (parcialmente incompleta) |
- | ===== Instalar OPENVPN ===== | + | ====== Instalar OPENVPN |
# apt-get install openvpn | # apt-get install openvpn | ||
- | ===== Crear certificados ===== | + | ====== Crear certificados |
- | ==== Generar la CA para firmar los certificados ==== | + | ===== Generar la CA para firmar los certificados |
Copiamos el directorio de ejemplo en la carpeta de configuración de OpenVPN: | Copiamos el directorio de ejemplo en la carpeta de configuración de OpenVPN: | ||
#/ | #/ | ||
Line 671: | Line 791: | ||
-rw-r--r-- 1 root root 3 Nov 6 21:20 serial | -rw-r--r-- 1 root root 3 Nov 6 21:20 serial | ||
- | ===== Creación de Certificado y llaves para Servidor ===== | + | ====== Creación de Certificado y llaves para Servidor |
Line 720: | Line 840: | ||
- | ===== Generar Certificado para los clientes ===== | + | ====== Generar Certificado para los clientes |
./build-key client1 | ./build-key client1 | ||
Line 750: | Line 870: | ||
Please enter the following ' | Please enter the following ' | ||
to be sent with your certificate request | to be sent with your certificate request | ||
- | A challenge password []:fermin99 | + | A challenge password []:mysecretpassword |
An optional company name []: | An optional company name []: | ||
Using configuration from / | Using configuration from / | ||
Line 773: | Line 893: | ||
- | ===== Generate Diffie Hellman parameters ===== | + | ====== Generate Diffie Hellman parameters |
Diffie Hellman parameters must be generated for the OpenVPN server. On Linux/ | Diffie Hellman parameters must be generated for the OpenVPN server. On Linux/ | ||
Line 779: | Line 899: | ||
- | ===== Ficheros de configuración ===== | + | ====== Ficheros de configuración |
donquixot:/ | donquixot:/ | ||
- | ===== Habilitar para máquinas virtuales contenedores openvz ===== | + | ====== Habilitar para máquinas virtuales contenedores openvz |
vzctl set 101 --devnodes net/tun:rw --save | vzctl set 101 --devnodes net/tun:rw --save | ||
Line 841: | Line 961: | ||
Y la ruta 10.8.0.0/24 -> 10.139.67.103 (ip del servidor vpn) | Y la ruta 10.8.0.0/24 -> 10.139.67.103 (ip del servidor vpn) | ||
- | ===== Autenticación LDAP ===== | + | ====== Autenticación LDAP ====== |
/ | / | ||
Line 869: | Line 989: | ||
</ | </ | ||
+ | |||
+ | ====== IPs estáticas ====== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | 1. Una sola vez | ||
+ | |||
+ | 1.1. Crear directorios y archivos: | ||
+ | |||
+ | sudo mkdir / | ||
+ | sudo touch / | ||
+ | | ||
+ | 1.2. Editar arhcivo de configuración del servidor VPN: | ||
+ | |||
+ | sudo vim / | ||
+ | | ||
+ | Y añadir las lineas: | ||
+ | |||
+ | client-config-dir / | ||
+ | ifconfig-pool-persist / | ||
+ | |||
+ | 1.3. Reiniciar el servicio: | ||
+ | |||
+ | sudo service openvpn restart | ||
+ | | ||
+ | 2. Para cada cliente | ||
+ | |||
+ | 2.1. Crear un archivo con el nombre del certificado que se ha creado: | ||
+ | |||
+ | sudo vim / | ||
+ | |||
+ | Y especificar tanto la IP como la IP del servidor VPN: | ||
+ | |||
+ | ifconfig-push 172.16.0.50 172.16.0.1 | ||
+ | |||
+ | 2.2. Reservar esa IP para ese certificado, | ||
+ | |||
+ | client1, | ||
+ | |||
+ | 2.3. (Cliente) Reiniciar el servicio VPN: | ||
+ | |||
+ | sudo service openvpn restart | ||
+ | | ||
+ | 2.4. (Cliente) Comprobar que la IP es la especificada en los pasos 2.1. y 2.2: | ||
+ | |||
+ | sudo ifconfig | ||
+ | |||
+ | | ||
+ | | ||
+ | |
informatica/linux/openvpn.1383582422.txt.gz · Last modified: 2015/04/13 20:19 (external edit)