Centos 搭建dhcp服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos 搭建dhcp服务器相关的知识,希望对你有一定的参考价值。

参考技术A dhcp是动态主机配置协议,使用udp协议,主要使用udp67和udp 68号端口

1.client端会发送dhcp discover广播包

2.dhcp服务器会回应dhcp offer广播包

3.client端会发送dhcp request广播包

4.dhcp服务器发送dhcp ack广播包

[root@mini ~]# rpm -qa dhcp

[root@mini ~]# cat /etc/centos-release

CentOS release 6.9 (Final)

[root@mini ~]# uname -r

2.6.32-696.el6.i686

[root@mini ~]# uname -m

i686

[root@mini ~]# yum install -y dhcp

[root@mini ~]# rpm -qa dhcp

dhcp-4.1.1-53.P1.el6.centos.1.i686

[root@mini ~]# rpm -qc dhcp

/etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd6.conf

/etc/openldap/schema/dhcp.schema

/etc/portreserve/dhcpd

/etc/sysconfig/dhcpd

/etc/sysconfig/dhcpd6

/etc/sysconfig/dhcrelay

/etc/sysconfig/dhcrelay6

/var/lib/dhcpd/dhcpd.leases

/var/lib/dhcpd/dhcpd6.leases

[root@mini ~]# cat /etc/dhcp/dhcpd.conf

#

# DHCP Server Configuration file.

#  see /usr/share/doc/dhcp*/dhcpd.conf.sample

#  see 'man 5 dhcpd.conf'

#

查询dhcp sample文件(dhcpd.conf.sample文件为dhcp配置文件模板)

# rpm -ql dhcp

配置完成后的文件

[root@mini ~]# cat /etc/dhcp/dhcpd.conf

#

# DHCP Server Configuration file.

#  see /usr/share/doc/dhcp*/dhcpd.conf.sample

#  see 'man 5 dhcpd.conf'

#

# A slightly different configuration for an internal subnet.

subnet 172.16.1.0 netmask 255.255.255.0

range 172.16.1.10 172.16.1.30;

option domain-name-servers mini.localdomain;

option domain-name "mini.localdomain";

option routers 172.16.1.1;

option broadcast-address 172.16.1.1;

default-lease-time 600;

max-lease-time 7200;



查看配置是否正确

[root@mini ~]# /etc/init.d/dhcpd configtest

Syntax: OK

DHCP启动失败,并查询到如下报错信息(/var/log/messages)

Nov  6 06:37:24 mini dhcpd: No subnet declaration for eth0 (192.168.28.139).

Nov  6 06:37:24 mini dhcpd: ** Ignoring requests on eth0.  If this is not what

Nov  6 06:37:24 mini dhcpd:    you want, please write a subnet declaration

Nov  6 06:37:24 mini dhcpd:    in your dhcpd.conf file for the network segment

Nov  6 06:37:24 mini dhcpd:    to which interface eth0 is attached. **

Nov  6 06:37:24 mini dhcpd:

Nov  6 06:37:24 mini dhcpd:

Nov  6 06:37:24 mini dhcpd: Not configured to listen on any interfaces!

Nov  6 06:37:24 mini dhcpd:

Nov  6 06:37:24 mini dhcpd: This version of ISC DHCP is based on the release available

Nov  6 06:37:24 mini dhcpd: on ftp.isc.org.  Features have been added and other changes

Nov  6 06:37:24 mini dhcpd: have been made to the base software release in order to make

Nov  6 06:37:24 mini dhcpd: it work better with this distribution.

Nov  6 06:37:24 mini dhcpd:

Nov  6 06:37:24 mini dhcpd: Please report for this software via the CentOS Bugs Database:

Nov  6 06:37:24 mini dhcpd:    http://bugs.centos.org/

Nov  6 06:37:24 mini dhcpd:

Nov  6 06:37:24 mini dhcpd: exiting.

解决办法:

这是因为DHCP程序发现没有“Not configured to listen on any interfaces”,只需要配置相应的IP到目标网卡中便可以解决这个问题。

[root@mini ~]# ifconfig eth1 172.16.1.1/24

[root@mini ~]# /etc/init.d/dhcpd start

Nov  6 06:43:11 mini dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Nov  6 06:43:11 mini dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Nov  6 06:43:11 mini dhcpd: All rights reserved.

Nov  6 06:43:11 mini dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Nov  6 06:43:11 mini dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file

Nov  6 06:43:11 mini dhcpd: Wrote 0 leases to leases file.

Nov  6 06:43:11 mini dhcpd: Listening on LPF/eth1/00:0c:29:c5:2b:7e/172.16.1.0/24

Nov  6 06:43:11 mini dhcpd: Sending on  LPF/eth1/00:0c:29:c5:2b:7e/172.16.1.0/24

Nov  6 06:43:11 mini dhcpd:

Nov  6 06:43:11 mini dhcpd: No subnet declaration for eth0 (192.168.28.139).

Nov  6 06:43:11 mini dhcpd: ** Ignoring requests on eth0.  If this is not what

Nov  6 06:43:11 mini dhcpd:    you want, please write a subnet declaration

Nov  6 06:43:11 mini dhcpd:    in your dhcpd.conf file for the network segment

Nov  6 06:43:11 mini dhcpd:    to which interface eth0 is attached. **

Nov  6 06:43:11 mini dhcpd:

Nov  6 06:43:11 mini dhcpd: Sending on  Socket/fallback/fallback-net

[root@mini ~]# cat /var/lib/dhcpd/dhcpd.leases

注意:如果Linux开启了防火墙,那么需要对UDP 67和UDP 68放行。或者直接将放火墙关闭

Centos 搭建DHCP服务,新建独立网卡完成DHCP实验

文章目录

什么是DHCP

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

DHCP有三种机制分配IP地址:

  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  2. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  3. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
    三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

工作原理:
DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的68号端口,DHCP服务器回应应答消息给主机的67号端口。

实验信息:
虚拟机操作平台:VMware® Workstation 15 Pro
操作系统:Centos 7
拓扑图:

在虚拟机中添加一块用于测试DHCP的网卡

点击“编辑”菜单里面的“虚拟网络编辑器”选项,打开虚拟机网络配置器

添加一个网络,设置为“仅主机模式”并设置IP为 192.168.178.0 (后面会用到这个IP作为DHCP自动分配的网络)并关闭DHCP服务

进入虚拟机设置,将网卡添加进来

输入 ifconfig 命令可以看到,刚才的网卡已经成功挂载了进来

接下来我们要在这个接口上配置DHCP服务

配置服务器的IP

在安装DHCP服务之前需要先将服务器DHCP接口配置上静态IP
CentOS7默认网卡设备文件存放于 /etc/sysconfig/network-scripts/
目录下, 编辑 ifcfg-ens38(根据 ifconfig 命令结果里面的接口起名) ,如果没有请创建

TYPE=Ethernet                # 网卡类型:为以太网
PROXY_METHOD=none            # 代理方式:关闭状态
BROWSER_ONLY=no                # 只是浏览器:否
BOOTPROTO=static                # 网卡的引导协议:static[中文名称: 静态主机配置协议]
IPADDR=192.168.178.1         #ip地址
NETMASK=255.255.255.0        #子网掩码
GATEWAY=192.168.178.1          #默认网关
DEFROUTE=yes                # 默认路由:是, 不明白的可以百度关键词 `默认路由` 
IPV4_FAILURE_FATAL=no        # 是不开启IPV4致命错误检测:否
IPV6INIT=yes                # IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6]
IPV6_AUTOCONF=yes            # IPV6是否自动配置:是[不会有任何影响, 现在还没用到IPV6]
IPV6_DEFROUTE=yes            # IPV6是否可以为默认路由:是[不会有任何影响, 现在还没用到IPV6]
IPV6_FAILURE_FATAL=no        # 是不开启IPV6致命错误检测:否
IPV6_ADDR_GEN_MODE=stable-privacy            # IPV6地址生成模型:stable-privacy [这只一种生成IPV6的策略]
NAME=ens38                    # 网卡物理设备名称
UUID=f47bde51-fa78-4f79-b68f-d5dd90cfc698    # 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用
DEVICE=ens38                    # 网卡设备名称, 必须和 `NAME` 值一样
ONBOOT=yes                        # 是否开机启动, 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes` 

配置好后执行

systemctl restart network
ifconfig

此时可以看到ens38接口引脚配置上了IP

安装DHCP服务

yum install -y dhcp

修改配置文件

配置 /etc/dhcp/dhcpd.conf 文件

添加如下配置,注意DNS服务器请设置一个存在的DNS服务器,因为我已经在这个服务器上搭建了DNS系统,所以将DNS服务器设置成了本服务器地址

##网段和掩码
subnet 192.168.178.0 netmask 255.255.255.0  
  ##地址范围
  range 192.168.178.100 192.168.178.200;
  ## dns服务器地址 
  option domain-name-servers 192.168.178.1; 
  ##网关
  option routers 192.168.178.1;
  ##广播地址
  option broadcast-address 192.168.178.255;
  ## 租约时间
  default-lease-time 300;
  ## 最大租约时间
  max-lease-time 7200;

运行DHCP服务,设置开机自动启动

systemctl enable dhcpd
systemctl start dhcpd
systemctl status dhcpd

iptables 放行UDP 67接口

iptables -I INPUT -p tcp --dport 67 -j ACCEPT
service iptables save

验证结果

配置主机中对应的网卡为DHCP模式

保存后查看网卡信息,可以看到已经成功拉取到了IP地址了

此时在服务状态里可以看到,已经为我的宿主机分配了一个IP地址

注意做完实验记得禁用这个网卡,否则可能导致宿主机无法联网!

参考文档
centos7之dhcp服务部署、管理、配置详解
Centos7静态ip设置(亲测有效)
CentOS7搭建DHCP服务器

以上是关于Centos 搭建dhcp服务器的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7.3 搭建DHCP服务器

Centos 搭建DHCP服务,新建独立网卡完成DHCP实验

Centos 搭建DHCP服务,新建独立网卡完成DHCP实验

Linux / CentOs 7搭建DHCP服务

DHCP服务搭建

在GNS3+CentOS 7中 DHCP中继服务的搭建