基于Kea的故障转移DHCP服务器

图片

Kea DHCP故障转移服务器安装和基本设置说明


Kea DHCP是由Internet系统联盟(ISC)开发的开源DHCP服务器,支持DHCPv4和DHCPv6。

ISC是开发我们最喜欢的bind和dhcpd的人。 Kea-基于BIND 10开发。

Kea允许您为小型系统和大型电信/公司公司运行dhcp服务器。 其中的创新-使用API​​来管理服务,将租赁数据库存储在DBMS中的功能以及使用附加功能的挂钩。
在撰写本文时(2019年6月),最新的稳定版本是1.5.0。

我将不涉及DHCP协议的详细工作,因此本文将增加2到3倍。 关于哈布雷(Habré)有一篇很好的文章

DHCP协议通过UDP协议(端口67-68)工作,用于IP地址的动态分配。 它使用四个步骤来接收/发布ip地址-Discover-offer-request-acknowledge(DORA) 。 DHCP还使用租用地址租用的概念,设备的租用期限为租用时间

图片

为什么要


Kea的DHCP服务器具有多个优势-运行速度,创建故障转移群集的能力,强大的功能以及向开发人员购买技术支持的能力。

该产品将由我们的电信运营商使用,该公司计划发布约200万个地址,每秒发送2000个请求。 选择它的原因是工作速度快,并且可能创建两个服务器的集群。

支持的操作系统


•CentOS Linux-7.1804(又名7.5)
•Fedora-28,29
•Ubuntu-16.04、18.04
•Debian GNU / Linux-7,8,9
•FreeBSD-11.0
•macOS-10.13、10.14

Windows没有Kea启动计划。

租赁库


Kea DHCP-支持将发布地址的数据库存储在本地CSV文件(内存文件)中,或存储在MySQL,PostgreSQL和Cassandra这三种DBMS之一中。

区别在于速度和存储能力。 Memfile的速度提高了10倍,但是将数据库存储在DBMS中使您可以存储其他字段和DHCP选项。 速度比较:

图片

这里对各种数据库和本地存储的使用进行了非常大的分析。

在我们的项目中,我们决定从memfile的基础开始,因为每秒的请求数量将超过2000。

安装方式


例如,将基于CentOS 7(最低版本)部署Kea:

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

在安装服务本身之前,必须安装所有必需的依赖项:

  1. Boost C ++库(http://www.boost.org/)。 #运行时c ++环境运行Kea本身
  2. 加密库Botan(版本1.9)或OpenSSL(版本1.0.1)。 我建议openssl,因为从Kea 1.6.0开始将不再支持botan
  3. 需要log4cplus(1.0.3版)开发编号来创建日志
  4. C ++编译器
  5. 库automake,libtool,pkg-config#用于构建和安装Kea本身
  6. 如果要使用DBMS,则安装MySQL,PostgreSQL或Cassandra。

如果您需要RADIUS或NETCONF / YANG(英文),则为可选
  • 使用--with-freeradius配置标志时,FreeRADIUS客户端库。
  • 使用-with-sysrepo配置标志时,使用Sysrepo(0.7.6版或更高版本)和libyang(0.16-r2版或更高版本)。
  • googletest(1.8或更高版本),当使用--with-gtest配置选项来构建单元测试时。
  • 如果使用--enable-generate-docs配置选项创建文档,则文档生成工具elinks,docbook-xsl,libxslt和Doxygen。


步骤1.安装必要的依赖项


 # 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 

步骤2.如果所有依赖项都正常启动,请继续安装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 

*在这里您需要提及必要的选项-如果您打算使用DBMS,则需要选中此选项。

组装期间的所有选项:
-前缀
定义安装位置(默认为/ usr / local)。
--with-boost-include
定义查找Boost头的路径。
--with-botan-config
指定要使用Botan构建的用于加密功能的botan-config脚本的路径。
--with-mysql
使用代码构建Kea,使其可以在MySQL数据库中存储租约和主机预订。
--with-pgsql
使用代码构建Kea,使其可以在PostgreSQL数据库中存储租约和主机预订。
--with-cql
使用代码构建Kea,使其可以在Cassandra(CQL)数据库中存储租约和主机预订。
--with-gtest,--with-gtest-source
使用Google Test框架启用C ++单元测试的构建。 此选项指定gtest源的路径。 (如果您的系统上未安装该框架,则可以从github.com/google/googletest下载。)从github.com/google/googletest下载。)
--with-benchmark,--with-benchmark-source
使用Google Benchmark框架启用数据库后端基准测试的构建。 此选项指定gtest源的路径。 (如果您的系统上未安装该框架,则可以从github.com/google/benchmark下载该框架。)
--with-log4cplus
定义查找Log4cplus标头和库的路径。
--with-openssl
用OpenSSL加密库替换Botan。 默认情况下,configure搜索有效的Botan安装:如果未找到,则搜索OpenSSL。

它的组装时间比较长,如果未建立某种依赖关系,则组装过程中可能会产生错误。 最后,您将看到组装结果:

图片

步骤3.安装


 make sudo make install 

生成操作需要很长时间(一个小时左右)。 安装约一分钟。

启动和设置


它从安装的目录启动:

 keactrl start 

仍然有停止,重新加载(重新加载配置)和状态的选项

在启动时,它将启动三个进程-kea-dhcp4,kea-dhcp6 kea-ctrl-agent-用于管理和管理服务器通信的代理

如果不需要dhcp6,则只能运行dhcp4,不要忘记启动代理:

 keactrl start -s dhcp4, ctrl_agent 

构型


主要配置文件dhcp4是/usr/local/etc/kea/kea-dhcp4.conf

文件描述得很好,有很多注释和设置示例,您不会感到困惑,我只写主要设置:
指定dhcp4将通过其工作的接口或地址:

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

指定在哪里存储租赁基础

 "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 }, 

哪些DNS服务器将呈现给客户端

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


您单位的域名
 { "name": "domain-search", "data": "mydomain.example.com, example.com" }, 

主要设置是子网,池和默认网关:

 "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" } ], 

好了,需要最后一个参数来保留池/子网中的地址,指定的地址将不会发布给客户端,而静态注册的服务器/设备地址则需要这些参数:

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

这是主要设置,更改配置后,您需要重新启动服务-

 keacrtl stop keactrl start -s dhcp4,ctrl_agent 

CSV基础


本地数据库存储在此处- /usr/ local/var /kea/kea - leases4.csv


日志


日志默认存储-/ usr / local / var / log /

在这里,每个组件都有一个单独的文件:

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

在另一篇文章中,我将介绍如何启动两个服务器的集群以及如何配置租约输出数据库的同步。

Source: https://habr.com/ru/post/zh-CN458180/


All Articles