Openvpn exclui ip no pool

Openvpn exclui ip no pool

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 0no final da diretiva ifconfig-pool-persisttrata ipp.txtcomo 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 /24sub-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 iptablesbalanceamento de carga em conexões de entrada na porta 1194e distribuí-las uniformemente entre as instâncias

Esta solução pode trazer benefícios de desempenho, conforme explicadoaqui.

informação relacionada