¿Cómo configurar una IP estática (del lado del cliente) en OpenVPN?

¿Cómo configurar una IP estática (del lado del cliente) en OpenVPN?

Estoy configurando una red VPN con muchos dispositivos pequeños (que ejecutan OpenWRT). En mi caso de uso, todos los dispositivos están identificados por un número y me gustaría que sus direcciones IP coincidan con su ID (por ejemplo: el dispositivo número 6 tendrá una IP en XXX6).

Lo sé client-config-diry ifconfig-pushno puedo usarlos porque todos mis dispositivos usan el mismo certificado ( duplicate-cnestá habilitado). Este es un requisito ya que generar un certificado para cada dispositivo será demasiado restrictivo (además, no queremos cambiar la configuración del servidor VPN si agregamos un dispositivo al sistema).

¿Es posible configurar la dirección IP en el archivo de configuración del cliente? No encontré nada en la documentación sobre ese tema en particular... Y todo lo que intenté no tuvo éxito.

Básicamente lo que tengo en mente sería lo siguiente:

  • Cliente Se conecta al servidor VPN y solicita una dirección específica ("dame la ip: 172.16.0.22")
  • Si la dirección ya está ocupada, el protocolo de enlace falla. Si es gratis se le da al cliente la dirección que pidió antes

Respuesta1

Deberías poder hacer esto con la ifconfig-pool-persistopción de configuración. Puede preconfigurar el archivo y configurarlo seconds = 0para indicarle a OpenVPN que solo lea el archivo.

Lo usamos para garantizar que al mismo usuario se le asigne la misma IP cuando se conecta a través de VPN con fines de auditoría.

Desde elpágina de manual:

--ifconfig-pool-persist file [segundos] Persistir/no persistir los datos de ifconfig-pool en un archivo, en intervalos de segundos (predeterminado = 600), así como al iniciar y cerrar el programa. El objetivo de esta opción es proporcionar una asociación a largo plazo entre los clientes (indicados por su nombre común) y la dirección IP virtual que se les asigna desde el grupo ifconfig. Mantener una asociación a largo plazo es bueno para los clientes porque les permite utilizar eficazmente la opción --persist-tun.

El archivo es un archivo ASCII delimitado por comas, con el formato ,.

Si segundos = 0, el archivo se tratará como de solo lectura. Esto es útil si desea tratar el archivo como un archivo de configuración.

Tenga en cuenta que OpenVPN trata las entradas de este archivo solo como sugerencias, basadas en asociaciones pasadas entre un nombre común y una dirección IP. No garantizan que el nombre común proporcionado siempre reciba la dirección IP proporcionada. Si desea una asignación garantizada, utilice --ifconfig-push

Respuesta2

Supongamos que estamos configurando una VPN de empresa y nos gustaría establecer políticas de acceso independientes para 3 clases diferentes de usuarios:

System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only

El enfoque básico que adoptaremos es (a) segregar cada clase de usuario en su propio rango de direcciones IP virtuales y (b) controlar el acceso a las máquinas configurando reglas de firewall que desactivan la dirección IP virtual del cliente.

En nuestro ejemplo, supongamos que tenemos un número variable de empleados, pero solo un administrador del sistema y dos contratistas. Nuestro enfoque de asignación de IP será colocar a todos los empleados en un grupo de direcciones IP y luego asignar direcciones IP fijas para el administrador del sistema y los contratistas.

Tenga en cuenta que uno de los requisitos previos de este ejemplo es que tenga un software de firewall ejecutándose en la máquina del servidor OpenVPN, lo que le brinda la capacidad de definir reglas de firewall específicas. Para nuestro ejemplo, asumiremos que el firewall es iptables de Linux.

Primero, creemos un mapa de direcciones IP virtuales según la clase de usuario:

Class   Virtual IP Range    Allowed LAN Access  Common Names  

Employees   10.8.0.0/24     Samba/email server at 10.66.4.4     [variable]

Sys Admins  10.8.1.0/24     Entire 10.66.4.0/24 subnet  sysadmin1

Contractors 10.8.2.0/24     Contractor server at 10.66.4.12     contractor1, contractor2

A continuación, traduzcamos este mapa a una configuración de servidor OpenVPN. En primer lugar, asegúrese de haber seguido los pasos anteriores para que la subred 10.66.4.0/24 esté disponible para todos los clientes (aunque configuraremos el enrutamiento para permitir el acceso del cliente a toda la subred 10.66.4.0/24, luego impondremos restricciones de acceso utilizando reglas de firewall para implementar la tabla de políticas anterior).

Primero, defina un número de unidad estática para nuestra interfaz tun, de modo que podamos hacer referencia a él más adelante en nuestras reglas de firewall:

dev tun0

En el archivo de configuración del servidor, defina el grupo de direcciones IP del empleado:

server 10.8.0.0 255.255.255.0

Agregue rutas para los rangos de IP del administrador del sistema y del contratista:

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

Debido a que asignaremos direcciones IP fijas para administradores y contratistas de sistemas específicos, usaremos un directorio de configuración del cliente ccd:

client-config-dir ccd

Ahora coloque archivos de configuración especiales en el ccdsubdirectorio para definir la dirección IP fija para cada cliente VPN que no sea de empleado, de la siguiente manera.

ccd/sysadmin1archivo:

    ifconfig-push 10.8.1.1 10.8.1.2

ccd/contractor1archivo:

    ifconfig-push 10.8.2.1 10.8.2.2

ccd/contractor2archivo:

    ifconfig-push 10.8.2.5 10.8.2.6

Cada par de direcciones ifconfig-push representa los puntos finales IP del cliente virtual y del servidor. Deben tomarse de subredes /30 sucesivas para que sean compatibles con los clientes de Windows y el controlador TAP-Windows. En concreto, el último octeto de la dirección IP de cada par de puntos finales debe tomarse de este conjunto:

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

Esto completa la configuración de OpenVPN. El último paso es agregar reglas de firewall para finalizar la política de acceso.

Fuente:https://openvpn.net/index.php/open-source/documentation/howto.html#policy

Respuesta3

Tuve algunos problemas al configurar como @jas_raj. Ahora estoy haciendo lo siguiente:

1) En /etc/openvpn cree una nueva carpeta. Por ejemplo "directorio"

2) server.conf agregar línea "directorio-config-dir-cliente/"

3) Dentro de "dir", necesitas crear un nuevo archivo con el **mismo nombre que escribiste en tu certificado** y escribir:

máscara IP ifconfig-push

Por ejemplo: ifconfig-push 10.0.0.10 255.0.0.0

información relacionada