Servidor DHCP de failover baseado em Kea

imagem

Instruções de instalação e configuração básica do servidor de failover DHCP da Kea


O Kea DHCP é um servidor DHCP de código aberto desenvolvido pelo Internet Systems Consortium (ISC) com suporte para DHCPv4 e DHCPv6.

Os ISCs são os mesmos que desenvolvem nosso bind e dhcpd favoritos. Kea - desenvolvido com base no BIND 10.

O Kea permite que você execute um servidor dhcp para sistemas pequenos e grandes empresas de telecomunicações / corporativas. Das inovações - o uso da API para gerenciar o serviço, a capacidade de armazenar o banco de dados de concessão no DBMS e o uso de ganchos para funções adicionais.
No momento da redação deste artigo (junho de 2019), a versão estável mais recente é a 1.5.0.

Não vou entrar no trabalho detalhado do protocolo DHCP, então o artigo será duas ou três vezes mais. Há um bom artigo sobre Habré .

O protocolo DHCP funciona sobre o protocolo UDP (portas 67-68), é usado para alocação dinâmica de endereços IP. Ele usa quatro etapas para receber / emitir endereços IP - descobrir-oferecer-solicitar-reconhecer (DORA) . O DHCP também usa o conceito de concessão - concessão de endereço, o prazo de concessão de um dispositivo é o tempo de concessão .

imagem

Porque kea


O servidor DHCP da Kea tem várias vantagens - velocidade de operação, capacidade de criar um cluster de failover, excelente funcionalidade e capacidade de adquirir suporte técnico dos desenvolvedores.

Este produto será usado por nossa operadora de telecomunicações, que planeja emitir cerca de 2 milhões de endereços, com 2000 solicitações por segundo. Foi escolhido devido à velocidade do trabalho e à possibilidade de criar um cluster de dois servidores.

SO suportado


• CentOS Linux - 7.1804 (também conhecido como 7.5)
• Fedora - 28, 29
• Ubuntu - 16.04, 18.04
• Debian GNU / Linux - 7, 8, 9
• FreeBSD - 11.0
• macOS - 10.13, 10.14

Não há planos de lançamento do Kea para Windows.

Armazenamento da base de locação


Kea DHCP - suporta o armazenamento do banco de dados de endereços emitidos em um arquivo CSV local (memfile) ou em um dos três DBMSs - MySQL, PostgreSQL e Cassandra.

As diferenças estão nos recursos de velocidade e armazenamento. O arquivo de memórias é 10 vezes mais rápido, mas o armazenamento do banco de dados no DBMS permite armazenar campos adicionais e opções de DHCP. Comparação de velocidade:

imagem

Uma análise muito ampla do uso de vários bancos de dados e armazenamento local aqui .

Em nosso projeto, decidimos começar da base em memfile, pois o número de solicitações por segundo será superior a 2000.

Instalação


Como exemplo, o Kea será implantado com base no CentOS 7 (edição mínima):

[root@localhost ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) 

Antes de instalar o próprio serviço, você deve instalar todas as dependências necessárias:

  1. Boost C ++ Libraries (http://www.boost.org/). # ambiente de tempo de execução c ++ para executar o próprio Kea
  2. Biblioteca de criptografia Botan (versão 1.9) ou OpenSSL (versão 1.0.1). Eu aconselho o openssl, já que o botan não será suportado desde o Kea 1.6.0
  3. log4cplus (ver. 1.0.3) development # é necessário para criar logs
  4. Compilador C ++
  5. As bibliotecas automatizam, libtool, pkg-config # para criar e instalar o próprio Kea
  6. Se você usar um DBMS, instale o MySQL, PostgreSQL ou Cassandra.

Opcional se você precisar de RADIUS ou NETCONF / YANG (em inglês)
  • Biblioteca cliente FreeRADIUS quando - com o sinalizador de configuração freeradius usado.
  • Sysrepo (versão 0.7.6 ou posterior) e libyang (versão 0.16-r2 ou posterior) quando - com o sinalizador de configuração com sysrepo usado.
  • googletest (versão 1.8 ou posterior), ao usar a opção de configuração --with-gtest para criar os testes de unidade.
  • As ferramentas de geração de documentação elinks, docbook-xsl, libxslt e Doxygen, se estiver usando a opção de configuração --enable-generate-docs para criar a documentação.


Etapa 1. Instale as dependências necessárias


 # wget     sudo yum install wget #  community  sudo yum install epel-release #     sudo yum install log4cplus-devel # run-time  ++    Kea sudo yum install boost-devel #   ssl ,   *-devel,    sudo yum install openssl-devel #     Kead sudo yum install automake libtool #  gc,  Development Tools, ..        sudo yum groupinstall Development\ Tools 

Etapa 2. Se todas as dependências aumentaram normalmente, continue com a instalação do próprio Kea


 #   Kea (    https://ftp.isc.org/isc/kea/1.5.0/    ) wget -nd https://ftp.isc.org/isc/kea/1.5.0/kea-1.5.0.tar.gz #   tar zxvf kea-1.5.0.tar.gz #      cd kea-1.5.0 #        #./configure [  ]      ./configure 

* Aqui você precisa mencionar as opções necessárias - se você planeja usar o DBMS, deve verificar esta opção.

Todas as opções durante a montagem:
--prefixo
Defina o local da instalação (o padrão é / usr / local).
--with-boost-include
Defina o caminho para encontrar os cabeçalhos do Boost.
--with-botan-config
Especifique o caminho para o script botan-config a ser construído com o Botan para funções criptográficas.
--with-mysql
Crie o Kea com código para permitir armazenar concessões e hospedar reservas em um banco de dados MySQL.
--with-pgsql
Crie o Kea com código para permitir armazenar concessões e reservas de host em um banco de dados PostgreSQL.
--with-cql
Crie o Kea com código para permitir armazenar concessões e reservas de host em um banco de dados Cassandra (CQL).
--with-gtest, --with-gtest-source
Ative a criação dos testes de unidade C ++ usando a estrutura de teste do Google. Esta opção especifica o caminho para a fonte gtest. (Se a estrutura não estiver instalada no seu sistema, poderá ser baixada em github.com/google/googletest .) Em github.com/google/googletest .)
--com referência, --com fonte de referência
Ative a criação dos benchmarks de back-end do banco de dados usando a estrutura do Google Benchmark. Esta opção especifica o caminho para a fonte gtest. (Se a estrutura não estiver instalada no seu sistema, poderá ser baixada em github.com/google/benchmark .)
--with-log4cplus
Defina o caminho para encontrar os cabeçalhos e bibliotecas do Log4cplus.
--with-openssl
Substitua Botan pelo OpenSSL a biblioteca criptográfica. Por padrão, configure procura por uma instalação válida do Botan: se não for encontrada, ela procurará pelo OpenSSL.

Ele é montado por um tempo relativamente longo; durante o processo de montagem, pode gerar erros se algum tipo de dependência não for estabelecido. No final, você verá o resultado da montagem:

imagem

Etapa 3. Instale


 make sudo make install 

A operação make demora muito tempo (aproximadamente uma hora). Faça a instalação por cerca de um minuto.

Iniciar e configurar


É iniciado a partir do diretório instalado:

 keactrl start 

Ainda existem opções para, recarregar (recarregar a configuração) e status

Na inicialização, ele inicia três processos - kea-dhcp4, kea-dhcp6 kea-ctrl-agent - um agente para gerenciar e gerenciar as comunicações do servidor

Se você não precisar do dhcp6, poderá executar apenas o dhcp4, não se esqueça de iniciar o agente:

 keactrl start -s dhcp4, ctrl_agent 

Configuração


O arquivo de configuração principal dhcp4 é /usr/local/etc/kea/kea-dhcp4.conf

O arquivo está bem descrito, há muitos comentários e exemplos de configurações, você não ficará confuso, escreverei apenas as configurações principais:
Especifique a interface ou endereço através do qual o dhcp4 funcionará:

 "interfaces-config": { // interface name (eg "eth0" or specific IPv4 address on that // interface name (eg "eth0/192.0.2.1"). "interfaces": [ ] } 

Especifique onde armazenar a base de concessão

 "lease-database": { // Memfile is the simplest and easiest backend to use. It's a in-memory // C++ database that stores its state in CSV file. "type": "memfile", "lfc-interval": 3600 }, 

Quais servidores DNS serão apresentados aos clientes

 "option-data": [ { "name": "domain-name-servers", "data": "192.0.2.1, 192.0.2.2" }, 


Nome de domínio da sua organização
 { "name": "domain-search", "data": "mydomain.example.com, example.com" }, 

E a configuração principal é sub-redes, pools e gateway padrão:

 "subnet4": [ { //subnet  ,  Kea      "subnet": "192.0.2.0/24", // ,       "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ], "option-data": [ { //  default gateway    "name": "routers", "data": "192.0.2.1" } ], 

Bem, o último parâmetro é necessário para reservar endereços do pool / sub-rede, os endereços especificados não serão emitidos para os clientes, eles são necessários para endereços de servidor / dispositivo registrados estaticamente:

 "reservations": [ { "hw-address": "1a:1b:1c:1d:1e:1f", "ip-address": "192.0.2.201" } ] 

Aqui estão as principais configurações, depois de alterar a configuração, você precisa reiniciar o serviço -

 keacrtl stop keactrl start -s dhcp4,ctrl_agent 

Base CSV


O banco de dados local é armazenado aqui - /usr/local/var/kea/kea-leases4.csv


Logs


Os logs são armazenados por padrão - / usr / local / var / log /

Aqui, cada um dos componentes possui um arquivo separado:

  • kea-dhcp4.log
  • kea-dhcp6.log
  • kea-ctrl-agent.log

Em um artigo separado, descreverei como iniciar um cluster de dois servidores e configurar a sincronização do banco de dados de saída de concessão.

Source: https://habr.com/ru/post/pt458180/


All Articles