Usar vários intervalos de IP ou excluir determinados IPs não é diretamente possível com o servidor DHCP integrado do OpenVPN usando um único arquivo de configuração.
Eu proponho 3 soluções possíveis:
- Solução alternativa , mas sem garantia de funcionamento
- modo de proxy DHCP , simples, limpo e muitas outras opções
- Várias instâncias , mais complexas, podem ter benefícios de desempenho
No entanto, recomendo corrigir a causa raiz do problema, o aplicativo interno com falhas.
Solução alternativa
No arquivo de configuração do servidor, adicione:
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0
O 0
no final da diretiva ifconfig-pool-persist
trata ipp.txt
como um arquivo de configuração somente leitura.
Crie um arquivo /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
...
Adicione todos os endereços IP reservados a esse arquivo, formatados como <Common-Name>,<IP-address>
. Para o valor no campo <Common-Name>
escolha algo que nunca será usado em qualquer certificado de cliente.
Não é garantido que isso funcione sempre, conforme indicado na página do OpenVPN:
Note that the entries in this file are treated by OpenVPN as suggestions only, based on past associations between a common name and IP address. They do not guarantee that the given common name will always receive the given IP address. If you want guaranteed assignment, use
--ifconfig-push
modo de proxy DHCP
Como você está usando uma configuração TAP , essa pode ser a melhor solução. Ele permite usar um servidor DHCP com recursos completos na sub-rede do lado do servidor ou no próprio servidor, dependendo da configuração. Para configurar a ponte Ethernet, você deve primeiro usar o recurso de ponte do seu sistema operacional para fazer a ponte da interface TAP com outra interface.
Configuração do servidor OpenVPN :
server-bridge
Esta diretiva se expande da seguinte forma:
mode server
tls-server
push "route-gateway dhcp"
Configuração do servidor DHCPD :
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;
...
}
Várias instâncias
Uma alternativa seria criar uma instância openvpn separada para cada sub-rede /24
, usando vários arquivos de configuração. Mas isso requer o uso de uma porta diferente para cada instância.
Arquivo de configuração da instância 1:
port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254
Arquivo de configuração da instância 2:
port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254
...
Isso exigiria:
- configurações de cliente específicas do intervalo de IP com os respectivos números de porta,
- ou por ex. para usar
iptables
de balanceamento de carga em conexões de entrada na porta1194
e distribuí-las uniformemente entre as instâncias
Esta solução pode ter benefícios de desempenho, conforme explicado aqui .