
Tengo un servidor OpenVPN ejecutándose en una caja Linux Ubuntu. Varios clientes se conectan a este servidor (más de 500) y es por eso que configuro la opción de puente del servidor de esta manera:
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
Esto funciona perfectamente. Los clientes obtienen una dirección IP dinámica y pasa del bloque 200 al bloque 201 cuando el número de clientes supera los 255.
Tengo una aplicación interna que se conecta a estos clientes, pero esta aplicación falla en las direcciones IP 10.0.200.255 y 10.0.201.0.
Estas direcciones IP están en el rango que proporcioné, pero no puedo usarlas.
¿Hay alguna manera de excluirlos de mi grupo?
¿O necesito cambiar mi configuración?
Respuesta1
No es posible utilizar múltiples rangos de IP o excluir ciertas IP directamente con el servidor DHCP integrado de OpenVPN usando un único archivo de configuración.
Propongo 3 posibles soluciones:
- Solución alterna, pero no se garantiza que funcione
- Modo proxy DHCP, simple, limpio y muchas otras opciones.
- Múltiples instancias, más complejo, podría tener beneficios de rendimiento
Sin embargo, recomiendo solucionar la causa raíz del problema, la aplicación interna que tiene fallas.
Solución alterna
En el archivo de configuración del servidor agregue:
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0
Al 0
final de la directiva ifconfig-pool-persist
se trata ipp.txt
como un archivo de configuración de solo lectura.
Crea un archivo /etc/openvpn/ipp.txt
:
reserved-not-used-cn-1,10.0.200.255
reserved-not-used-cn-2,10.0.201.0
reserved-not-used-cn-3,10.0.201.255
...
Agregue todas las direcciones IP reservadas a este archivo, con formato <Common-Name>,<IP-address>
. Para el valor en el campo, <Common-Name>
elija algo que nunca se usará en ningún certificado de cliente.
No se garantiza que esto funcione siempre, como se indica en la página de manual de OpenVPN:
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
Modo proxy DHCP
Ya que estás usando unGRIFOconfiguración, esta podría ser la mejor solución. Permite utilizar una función completa.Servidor DHCPen la subred del lado del servidor o en el propio servidor, según la configuración. Para configurar el puente Ethernet, primero debe utilizar la capacidad de puente de su sistema operativo para conectar la interfaz TAP con otra interfaz.
OpenVPNconfiguración del servidor:
server-bridge
Esta directiva se amplía de la siguiente manera:
mode server
tls-server
push "route-gateway dhcp"
DHCPDconfiguración del servidor:
subnet 10.0.100.1 netmask 255.255.0.0 {
range 10.0.200.1 10.0.200.254;
range 10.0.201.1 10.0.201.254;
range 10.0.202.1 10.0.202.254;
range 10.0.203.1 10.0.203.254;
...
}
Múltiples instancias
Una alternativa sería crear una instancia openvpn separada para cada /24
subred, utilizando múltiples archivos de configuración. Pero esto requiere utilizar un puerto diferente para cada instancia.
Archivo de configuración de la instancia 1:
port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254
Archivo de configuración de la instancia 2:
port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254
...
Esto requeriría:
- configuraciones de cliente específicas del rango de IP con los respectivos números de puerto,
- o, por ejemplo, utilizar
iptables
el equilibrio de carga en las conexiones entrantes en el puerto1194
y distribuirlas uniformemente entre las instancias.
Esta solución podría tener beneficios de rendimiento, como se explicaaquí.