
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 .

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:

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 ~]
Antes de instalar o próprio serviço, você deve instalar todas as dependências necessárias:
- Boost C ++ Libraries (http://www.boost.org/). # ambiente de tempo de execução c ++ para executar o próprio Kea
- 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
- log4cplus (ver. 1.0.3) development # é necessário para criar logs
- Compilador C ++
- As bibliotecas automatizam, libtool, pkg-config # para criar e instalar o próprio Kea
- 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
Etapa 2. Se todas as dependências aumentaram normalmente, continue com a instalação do próprio Kea
* 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:

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.