写作目标
了解DHCP服务的工作原理
能够配置简单的dhcp服务器
一、DHCP服务介绍
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67号端口
主要用于动态管理分配IP地址
二、DHCP服务的工作原理
过程分析:
dhcpdiscover(发现):该过程中客户端开始建立请求,以0.0.0.0作为自己的ip地址
dhcpoffer(提供):当网络中的dhcp服务器收到dhcpdiscover信息后,对自身进行检查,并发送相应的地址。
dhcprequset(请求):当dhcp客户收到服务器的返回信息后,就以广播的方式发送一个dhcp请求信息给本网络中的存在或不存在的其他的dhcp服务器
三、DHCP服务器配置
环境准备:你需要一台云服务器,这里我用的是3A网络的,速度快,部署简单,适合新手。
步骤:
安装dhcp软件包
[root@server ~]# yum -y install dhcp
[root@server ~]# rpm -ql dhcp /etc/dhcp /etc/dhcp/dhcpd.conf //主配置文件 /etc/rc.d/init.d/dhcpd //启动脚本
修改配置文件
vim /etc/dhcp/dhcpd.conf
option domain-name "itcast.cc"; //域名
option domain-name-servers 192.168.1.110, 8.8.8.8; //DNS(可以写多个)
default-lease-time 3600; //缺省租约
max-lease-time 7200; //客户端最大租约
log-facility local7; //定义日志设备载体 (/var/log/boot.log输出)
subnet 192.168.2.0 netmask 255.255.255.0 { //子网<网段>
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.100 10.1.1.150;
option routers 10.1.1.1;
option broadcast-address 10.1.1.255
}
[root@MissHou ~]# service dhcpd start
Starting dhcpd: [FAILED]
//启动失败
原因分析:
当我们排除了所有可能的情况下还找不出原因的话,就需要通过日志去分析
日志错误信息
[root@server ~]# tail -f /var/log/messages
Apr 16 17:54:22 MissHou dhcpd: /etc/dhcp/dhcpd.conf line 16: semicolon expected.
Apr 16 17:54:22 MissHou dhcpd: }
Apr 16 17:54:22 MissHou dhcpd: ^
Apr 16 17:54:22 MissHou dhcpd: /etc/dhcp/dhcpd.conf line 16: unexpected end of file
Apr 16 17:54:22 MissHou dhcpd: }
Apr 16 17:54:22 MissHou dhcpd: ^
Apr 16 17:54:22 MissHou dhcpd: Configuration file errors encountered -- exiting
Apr 16 17:54:22 MissHou dhcpd:
通过查看日志发现,在}附近有报错,再次查看配置文件,发现少了一个分号;
更改如下: option domain-name "itcast.cc"; option domain-name-servers 8.8.8.8; default-lease-time 3600; max-lease-time 7200; log-facility local7; subnet 10.1.1.0 netmask 255.255.255.0 { range 10.1.1.100 10.1.1.150; option routers 10.1.1.1; option broadcast-address 10.1.1.255; //刚刚少了一个分号导致服务无法启动 }
测试验证
client端修改IP地址为动态获取:
[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
[ OK ]
查看IP地址是否是指定的IP范围:
[root@client ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:0C:29:41:A2:FC
inet addr:10.1.1.100 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe41:a2fc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17493870 errors:0 dropped:0 overruns:0 frame:0
TX packets:2271 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1319498963 (1.2 GiB) TX bytes:221741 (216.5 KiB)