DHCP概念提出
为了实现网络可以动态合理地分配IP地址给主机使用,提出了DHCP协议。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。
DHCP相对于静态手工配置的优点:
(1)效率高
(2)灵活性强
(3)易于管理
把一个主机接入到tcp/ip网络,要为其配置网络参数:
- IP/mask:仅有此项时,只能进行本地通信,不能跨网段通信
- Gateway:非本地通信时配置
- DNS Server:可实现基于主机名通信
参数配置方式:
- 静态指定
- 动态分配
(1)BOOTP:BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管理员去为每个用户去设置静态IP地址。
(2)DHCP:引入了“租约”的BOOTP;也可实现为特定主机保留某固定地址;
DHCP:动态主机配置协议
DHCP应用场景- DHCP服务器能够为大量主机分配IP地址,并能够集中管理
- DHCP采用C/S模式
监听的端口:
服务端:udp/67 (源端口:接收客户端请求的)
客户端:udp/68(目的端口:向客户端发送请求成功或失败的回应)
DHCP基础工作过程
免费ARP用于检测冲突的IP地址,如果发现冲突IP地址,客户端会回Decline报文,重新发Discover报文,请求新的IP地址服务器端收到Decline报文后,会把刚才的IP地址列为冲突地址,当服务器没有空闲地址可用的时候,才会从冲突地址中选择进行分配。
DHCP租期更新
一般租约到达一半时50%,就开始续租;如果找不到dhcp,就续租到75%,再找不到就续租87.5%,再找不到dhcp就重新发起dchp请求;
IP地址释放
若IP租约到期前没有收到DHCP服务器响应,客户端会停止使用此IP地址。
若DHCP客户端不再使用分配的IP地址,也可以主动向DHCP服务器发送DHCP Release报文,释放该地址。
注意:dhcp服务器必须先提供本地dhcp服务,才能可以给另一网络提供服务,否则不允许直接向另一网络提供dhcp服务;每一个地址分配的范围叫一个作用域;
dhcp服务器可提供的服务不止是分配网络地址,还可提供文件路径;
DHCP服务
Linux DHCP协议的实现程序:
- dhcp:(ISC,named):只提供能提供dhcp服务;
- dnsmasq:dhcp & dns :轻量化,没有配置文件,通过命令行+选项参数进行指定;
dhcp程序包:提供两个程序,二者不同同时启用;
dhcpd:提供dhcp服务;
dhcrelay:提供中继服务;
部署dhcp服务
[root@promote ~]# yum info dhcp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
Installed Packages
Name : dhcp
Arch : x86_64
Epoch : 12
Version : 4.2.5
Release : 77.el7.centos
Size : 1.4 M
Repo : installed
From repo : base
Summary : Dynamic host configuration protocol software
URL : http://isc.org/products/DHCP/
License : ISC
Description : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
: individual devices on an IP network to get their own network
: configuration information (IP address, subnetmask, broadcast address,
: etc.) from a DHCP server. The overall purpose of DHCP is to make it
: easier to administer a large network.
:
: To use DHCP on your network, install a DHCP service (or relay agent),
: and on clients run a DHCP client daemon. The dhcp package provides
: the ISC DHCP service and relay agent.
[root@promote ~]# yum -y install dhcp 安装dhcp
...
[root@promote ~]# rpm -ql dhcp 查看安装dhcp生成的文件
其中:
/etc/dhcp/dhcpd.conf 提供dhcp服务的配置文件
/etc/dhcp/dhcpd.conf 为ipv4的配置文件
/etc/dhcp/dhcpd6.conf 为ipv6的配置文件
/usr/lib/systemd/system/dhcpd.service 启动dhcp服务(ipv4)
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service 启动中继服务器
/usr/sbin/dhcpd 主程序(启动包括了ipv4和ipv6)
/usr/sbin/dhcrelay 中继程序
/var/lib/dhcpd/dhcpd.leases DHCP的租约记录
编辑配置文件:
[root@promote ~]# vim /etc/dhcp/dhcpd.conf 显示复制文件即可;
[root@promote ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@promote ~]# cat /etc/dhcp/dhcpd.conf
显示部分内容:
default-lease-time 600; 默认租约期限,单位是秒钟
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30; 指明地址池
option domain-name-servers ns1.internal.example.org; 可有3个dhcp服务器
option domain-name "internal.example.org"; 搜索后缀
option routers 10.5.5.1; 指明默认网关
option broadcast-address 10.5.5.31; 指明广播地址
default-lease-time 600;
max-lease-time 7200;
}
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia"; 加载文件的文件名
server-name "toccata.fugue.com";
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com; 固定的分配一个地址,可直接指明IP地址;
}
其中:
option
定义选项,可定义在全局中也可定义在subnet中;
subnet
定义子网
host
表示在dhcp中主机名,并不代表真正的主机名,只是个标识;
[root@promote ~]# vim /etc/dhcp/dhcpd.conf
把没用的行注释:输入:.,$s/^[^#]/#/g
option domain-name "magedu.com";
option routers 172.18.100.1;
option domain-name-servers 172.18.0.1, 192.168.255.1; 设定DNS服务器
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
subnet 172.18.0.0 netmask 255.255.0.0 {
range 172.18.11.100 172.18.11.120;
option routers 172.18.0.1;
option domain-name-servers 1.1.1.1;
}
host passacaglia { 这种某主机使用固定ip地址
hardware ethernet 0:0:c0:5d:bd:95; 为要设定ip地址主机的mac地址
option routers 172.18.11.254; 指定网关
fixed-address 172.18.11.1; 注意不能使用地址池中的地址
}
[root@promote ~]# systemctl start dhcp.service
[root@promote ~]# ss -tnl
服务端监听在udp/67
dhcp已经分配的结果记录存放在:/var/lib/dhcpd/dhcpd.leases
[root@promote ~]# less /var/lib/dhcpd/dhcpd.leases
dhcp客户端
前提要网卡地址设为动态分配;
但不用把网卡改为dhcp,使用dhclient命令测试;
[root@promote ~]# dhclient -h 查看使用帮助
[root@promote ~]# dhclient -d 运行dhcp在前端,可观察工作过程
[root@promote ~]# ss -tunl 可查看客户端udp的68端口监听
[root@promote ~]# route -n 查看客户端的网关
[root@promote ~]# cat /etc/resolv.conf 查看客户端DNS服务器
如果不期望使用dhcp分配的DNS服务器地址,就想用自己指定的,可修改过客户端网卡配置文件:
[root@promote ~]# vim /etc/resolv.conf
nameserver 2.1.1.1 用自己指定的DNS服务器
[root@promote ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
PEERDNS=no
此时dhcp服务器搭建完毕
dhcpd程序
配置文件:/etc/dhcp/dhcpd.conf
主要配置ipv4的网络服务
注:启动对于Centos 6和7是不同的
option routers GW;
option domain-name-servers IP,IP,IP;
default-lease-time ...;
max-lease-time ...;
subnet NET netmask MASK {
range ;
...
}
host HOST_ID {
hardware ethernet MAC;
fixed-address IP; 不能是在地址池中的地址
}
分配信息库:/var/lib/dhcp/dhcpd.leases~
[root@promote ~ ]# man dhcpd.conf
其它配置选项:
filename:指明引导文件名称;可认为是基于网络引导的Bootloader文件;
next-server:指明引导文件所在的服务器主机的ip地址;
例如:
filename "pxelinux.0";
next-server 172.18.0.1;
通常next-server所指向的服务器为tftp服务器;
tftp:trivial ftp 简单文件传输协议,通过udp/69
网友评论