Linux配置DHCP服务器 简明教程

DHCP介绍

功能简介

DHCP是一个基于UDP的工作在应用层的协议,用来自动分配IP地址。
应用实例:一个办公室有十个人,每个人每天上下班都要带着自己的笔记本,所以每次都要手动配置IP地址,这样简直就不是计算机该干的事情是吧。。所以DHCP应运而生,它能够根据服务端的配置给连接到网络的客户机自动分配IP地址。

提供的服务

1.提供IP地址和子网掩码
2.提供IP地址对应的网络地址和广播地址
3.默认网关地址
4.DNS服务器地址

通俗的解释

你们寝室里有六个人(对应到客户机),每个人都需要用床(对应到IP地址)睡觉,所以每个人回到寝室都会需要一张床。这样的话每个人每次回到寝室的时候都需要宿管(对应到网络管理员)都需要给他分配一个床位,这样就很麻烦。
现在有一个“动态床位分配系统”(对应到DHCP服务器),你们每个人回到寝室的时候都会收到一张纸条,纸条上写了你可以使用哪个床位,这就简单多了。
再然后可能小明(对应到一个特定的客户机)有洁癖,他需要一个固定的床位(对应到一个需要固定IP的设备,比如打印机或者提供某些服务的服务器)。所以“动态床位分配系统”可以添加一条规则“叫小明的人来了就分配给他三号床位”,就解决了这个问题。

租约时间

DHCP分配给客户的IP是以租约形式分配的。当客户接入到网络中,DHCP便会分配一个IP给客户机,当租约时间到的时候如果客户机还在使用这个IP那么就可以续约,继续使用当前IP而不是从新分配一个。

在CentOS 7.x 下搭建DHCP服务

0X00 安装DHCP服务

使用yum、rpm、源码等方式进行安装

1
yum install dhcpd

0X01 配置服务器网络服务

首先我们要将本地的网络配置成静态地址,并重启网络服务

1
vim /etc/sysconfig/network-scripts/enp0s3

这里的enp0s3是我的网卡,你需要将这里修改成你的网卡,另外在CentOS 7.x 以前的版本中,使用的是ethx的命名方式。
修改如下选项

1
2
3
4
BOOTPROTO=static #之前很有可能是dhcp,现在我们修改它为静态
ONBOOT=yes #以前可能是no,改为yes、就是打开网络服务的时候启动这个网卡
IPADDR=192.168.233.1 #配置文件中可能没有这个,没有的话就自己添加这行
# 这里的IP地址可以自定义,不过最后一位最好是1,这样便于识别

然后重启网络服务,如果配置文件没有错误的话,就可以正常启动了

1
systemctl restart network.service

这时候我们检查一下IP是不是已经变成我们设置的静态IP了

1
ifconfig enp0s3

0X02 配置DHCP服务

配置文件在这里

1
vim /etc/dhcp/dhcpd.conf

打开之后会有三行注释,我们初次学习配置的时候可以先不管它,只有服务真的跑起来并生效了我们才会进一步学习是吧。

在配置文件最后添加如下内容

1
2
3
4
5
6
7
8
9
10
11
#设置DHCP于DNS服务器的动态信息更新模式。初学时完全可以不理这个选项,但是全局设置中一定要有这个选项,否则DHCP服务不能成功启动。
ddns-update-style interim;

#下面开始分配子网,网段是192.168.233.0 子网掩码是 255.255.255.0
#不能理解网段和子网掩码的可以去网上查一下。简单的说网段规定了分配IP的段(分配哪一段IP给客户机),子网掩码规定了网段的大小
subnet 192.168.233.0 netmask 255.255.255.0 {
range 192.168.233.100 192.168.233.199; #分配给客户机的IP从192.168.233.100开始到192.168.233.199
option routers 192.168.233.2; #设置网关
default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大租约时间
}

0X03 给特定客户分配特定地址

上面也说过,如果同一网络内有需要固定IP的设备,我们也可以通过DHCP来给他分配固定的IP。(就比如说那个有洁癖的同学)
首先要说一下DHCP识别主机的方式:
DHCP通过接入客户的网卡的MAC地址来判断客户,所以如果你的机器有两块网卡,并且两块网卡同时接入了网络,那么DHCP就会认为有两个设备接入了网络,并给你的机器分配两个IP

MAC地址并不是“苹果地址”。。。
MAC地址是“物理地址”,每块网卡在出厂的时候都会有一个全球独一无二的MAC地址,MAC地址是一个48位2进制的数字,通常表达为六段两位十六进制。

下面我们继续修改DHCP配置文件,在刚才的配置后面追加下面的内容

1
2
3
4
host Client_C { #有一个主机,叫Client_C
hardware ethernet 08:00:27:5e:04:27; #MAC地址是08:...:27的网卡
fixed-address 192.168.233.123; #分配给它192.168.233.123的IP
}

这样配置的话,不管何时,只要这个CLient_C接入到了这个网络中,那么它获取的IP就是固定的这一个,并不会变
然后重启一下DHCP服务就好了

1
systemctl restart dhcpd.service

好了,至此DHCP的基础配置就搞定了