
Eu tenho um servidor OpenVPN rodando em uma caixa Linux Ubuntu. Vários clientes se conectam a este servidor (500+) e é por isso que defini a opção server-bridge assim:
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
Isso funciona perfeitamente. Os clientes obtêm um endereço IP dinâmico, que vai do bloco 200 para o bloco 201 quando o número de clientes ultrapassa 255.
Tenho uma aplicação interna que se conecta a esses clientes, mas esta aplicação trava nos endereços IP 10.0.200.255 e 10.0.201.0.
Esses endereços IP estão no intervalo que forneci, mas não posso usá-los.
Existe uma maneira de excluí-los do meu pool?
Ou preciso alterar minha configuração?
Responder1
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.
Proponho 3 soluções possíveis:
- Gambiarra, mas não há garantia de que funcione
- Modo proxy DHCP, simples, limpo e muitas outras opções
- Várias instâncias, mais complexo, poderia ter benefícios de desempenho
No entanto, recomendo corrigir a causa raiz do problema, o aplicativo interno que apresenta falhas.
Gambiarra
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 este arquivo, formatado como <Common-Name>,<IP-address>
. Para o valor no campo <Common-Name>
escolha algo que nunca será usado em nenhum certificado de cliente.
Não é garantido que isso funcione sempre, conforme indicado na página de manual do OpenVPN:
Observe que as entradas neste arquivo são tratadas pelo OpenVPN apenas como sugestões, com base em associações anteriores entre um nome comum e um endereço IP. Eles não garantem que o nome comum fornecido sempre receberá o endereço IP fornecido. Se você quiser atribuição garantida, use
--ifconfig-push
Modo proxy DHCP
Como você está usando umTOCARconfiguração, esta pode ser a melhor solução. Ele permite usar um recurso completoServidor DHCPna 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 conectar a interface TAP com outra interface.
OpenVPNconfiguração do servidor:
server-bridge
Esta diretiva se expande da seguinte forma:
mode server
tls-server
push "route-gateway dhcp"
DHCPDconfiguração do 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;
...
}
Várias instâncias
Uma alternativa seria criar uma instância openvpn separada para cada /24
sub-rede, 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 para faixa de IP com os respectivos números de porta,
- ou, por exemplo, usar
iptables
balanceamento de carga em conexões de entrada na porta1194
e distribuí-las uniformemente entre as instâncias
Esta solução pode trazer benefícios de desempenho, conforme explicadoaqui.