Asignar direcciones IP estáticas para clientes OpenVPN
OpenVPN tiene la capacidad de asignar a los clientes direcciones IP específicas del conjunto de IP definido. Para lograr esto, utiliza tres tipos de algoritmos de selección de direcciones IP de clientes. Estos incluyen, en el orden en que se usan;
- Uso de
--client-connect script
. Esto implica la ejecución del script especificado que genera un archivo que contiene direcciones IP estáticas en el servidor cuando se conecta un cliente. Este método suele ser la primera opción para ser considerado. - Uso de
--client-config-dir
. Esto implica el uso de un archivo que contiene direcciones IP estáticas para los clientes según su nombre común de certificado de cliente (CN) (segunda opción ). - Uso de
--ifconfig-pool
para la asignación de IP dinámica (última elección ).
Para obtener más información, consulte man openvpn
.
En esta guía, vamos a utilizar la segunda opción, mediante la cual configuraremos nuestro servidor OpenVPN para leer un archivo específico, que contiene los nombres comunes de los clientes y las direcciones IP asignadas. Esto garantiza que a un cliente que se conecta se le asigne una dirección IP estática en función del nombre común definido en su certificado de cliente.
En nuestra guía anterior, cubrimos la instalación y configuración de un servidor OpenVPN en el sistema CentOS 8.
Cree un archivo para almacenar direcciones IP estáticas
El uso de client-config-dir
opción, requiere que las direcciones IP estáticas que se asignarán a los clientes que se conectan se almacenen en un archivo que pueda ser leído por el servidor OpenVPN.
Por lo tanto, abra el archivo de configuración del servidor OpenVPN, /etc/openvpn/server/server.conf
y configure su ruta al archivo de asignación de IP estática como el valor para client-config-dir
parámetro.
vim /etc/openvpn/server/server.conf
... # EXAMPLE: Suppose you want to give # Thelonious a fixed VPN IP address of 10.9.0.1. # First uncomment out these lines: client-config-dir /etc/openvpn/ccd ...
En esta demostración, configuramos la ruta para almacenar el archivo de asignación de direcciones IP fijas/estáticas, /etc/openvpn/ccd
. Bueno, traté de usar la ruta predeterminada, /etc/openvpn/server/ccd, pero resultó en el siguiente error:
Could not access file 'ccd/koromicha': Permission denied (errno=13) Could not access file 'ccd/DEFAULT': Permission denied (errno=13)
Entonces, como solución alternativa, optamos por usar una ruta diferente, como se muestra arriba.
Asignar direcciones IP estáticas a clientes OpenVPN
Para cada cliente OpenVPN al que desee asignar una dirección IP estática, debe extraer el nombre común de ese certificado de cliente específico.
En nuestra demostración, tenemos dos clientes OpenVPN creados, koromicha y johndoe . Para extraer los nombres comunes del certificado del cliente, use openssl
comando como se muestra a continuación. Asegúrese de reemplazar los certificados de los clientes .
openssl x509 -subject -noout -in /etc/openvpn/client/koromicha/koromicha.crt
subject=CN = koromicha
openssl x509 -subject -noout -in /etc/openvpn/client/johndoe/johndoe.crt
subject=CN = johndoe
Una vez que tenga los nombres comunes para los clientes, puede asignarles direcciones IP estáticas usando ifconfig-push
opción. Por ejemplo, para asignar el cliente usando el certificado con koromicha
como nombre común una dirección IP, 10.8.0.50
y el cliente usando el certificado con johndoe
como CN y direcciones IP de 10.8.0.60
, así es como se hace la asignación;
echo "ifconfig-push 10.8.0.50 255.255.255.0" > /etc/openvpn/ccd/koromicha
echo "ifconfig-push 10.8.0.60 255.255.255.0" > /etc/openvpn/ccd/johndoe
Tenga en cuenta que la forma en que asigna las direcciones IP estáticas depende de la topología que configuró en su servidor OpenVPN. En nuestro caso, configuramos la topología en subred;
# Network topology ... topology subnet
Obtenga más información sobre los conceptos de direccionamiento de OpenVPN.
Reinicie el servidor OpenVPN;
systemctl restart [email protected]
Asegúrese de comprobar siempre los registros;
tail -f /var/log/openvpn/openvpn.log
Verificar la asignación de direcciones IP estáticas en clientes OpenVPN
Suponiendo que ya tiene el archivo de configuración OpenVPN del cliente respectivo en sus clientes, inicie la conexión y verifique la asignación de la dirección IP.
sudo openvpn johndoe.ovpn
Comprobando la dirección IP asignada;
ip add show tun0
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.60/24 brd 10.8.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::ea62:fbae:5b45:2d78/64 scope link stable-privacy valid_lft forever preferred_lft forever
En el otro cliente;
ip add show tun0
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.50/24 brd 10.8.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::c928:c76d:fbd4:6c6a/64 scope link stable-privacy valid_lft forever preferred_lft forever
Comprobando la conectividad entre los dos clientes;
ping 10.8.0.60 -c 3
PING 10.8.0.60 (10.8.0.60) 56(84) bytes of data. 64 bytes from 10.8.0.60: icmp_seq=1 ttl=64 time=4.67 ms 64 bytes from 10.8.0.60: icmp_seq=2 ttl=64 time=3.86 ms 64 bytes from 10.8.0.60: icmp_seq=3 ttl=64 time=4.05 ms --- 10.8.0.60 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 3.864/4.196/4.670/0.351 ms
Eso es. Hemos llegado al final de nuestra guía sobre cómo asignar direcciones IP estáticas para clientes OpenVPN.
Tutoriales relacionados
Conéctese a OpenVPN usando Network Manager en CentOS 8/Ubuntu 18.04
Instale y configure el cliente OpenVPN en CentOS 8/Ubuntu 18.04
Configure el cliente VPN strongSwan en Ubuntu 18.04/CentOS 8