首页 > 代码库 > linux学习之路之DHCP服务
linux学习之路之DHCP服务
DHCP服务
dhcp:英文全称是Dynamic Host Configuration Protocol,动态主机分配协议,之所以称为是动态,那是
因为该服务器可以自动的为某个客户端分配一个ip地址。
对于一个大型的公司或者局域网,如果里面含有成千上万个主机,如果我们一个一个的去配置,那岂不是会累死,而且也不能保证配置的准确性。因此,这时候就需要我们借助dhcp服务来自动完成为这些客户分配ip地址。
那么dhcp服务器是如何完成自动分配ip的呢?
dhcp的工作原理:
1、首先客户端以广播的形式发送DHCPDISPLAY报文。请求DHCP服务器给这个客户端分配一个IP地
址。
2、当服务器收到客户端发送的DHCPDISPLAY后,以广播的形式发送一个DHCPOFFER给客户端。
DHCPOFFER中包含了ip地址、子网掩码、网关、dns等信息。如果存在多个DHCP服务器,多个
DHCP服务器都会发送DHCPOFFER给客户端,此时客户端只会选择第一个收到的报文。
3、客户端收到offer后,选择自己想要的ip信息后,以广播的形式发送一个DHCPREQUEST,告诉
DHCP服务器,我就要这个ip地址。
4、DHCP服务器收到后,以广播的形式发送一个DHCPACK报文给客户端。告诉客户端你可以使用这
个地址了。
这就是DHCP协议工作的整个工作。
dhcp是基于udp来工作的,其中服务器端的端口号是67,客户端的端口号是68
dhcp服务器使用的软件是dhcp.i386
由于dhcp是动态来分配ip的,那么这些ip是来自哪里的呢?
在dhcp服务器的配置文件,专门定义了一个ip网段,这个ip网段就是我们常说的地址池,dhcp分配给客户端的ip都是从这个地址池中分配的。
那么通过dhcp分配的ip地址是不是永久都可以使用呢?
当然不是了,既然是动态分配的,DHCP会给这个ip分配一个使用期限,这就是我们常说的租约。一旦这个租约到期了,该地址会重新释放到DHCP服务器上的地址池中,在用来分配给其他用户。这个租约时间保存在/var/lib/dhcpd/dhcpd.leases文件中。
如果某个用户想要通过DHCP来获取ip,且每次获取的ip都是一样的,那么又该如何实现呢?
要想实现这些功能,我们可以直接在DHCP的配置文件中定义。
由于DHCP的配置文件/etc/dhcpd.conf中基本没有什么内容,但是dhcp服务器却提供了一个配置文件的模版,因此,只需要将这个模版重命名为/etc/dhcpd.conf就成了dhcp的配置文件,然后在修改该配置文件,这样一个DHCP服务器就手动建立起来了。
mv /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf -f
将这个模版文件重命名为/etc/dhcpd.conf
/etc/dhcpd.conf文件的内容是:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.108.0 netmask 255.255.255.0 { #定义一个网段,且DHCP服务器的ip在这个网段内
# --- default gateway
option routers 192.168.108.254; #定义网关
option subnet-mask 255.255.255.0; #掩码
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 192.168.159.1; #定义DNS服务器的IP
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don‘t change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range 192.168.108.128 192.168.108.150; #定义地址池,用来分配ip的
default-lease-time 21600; #定义默认租约时间
max-lease-time 43200; #定义最大租约时间
# we want the nameserver to appear at a fixed address
###下面这一段是用来给某个主机固定分配一个ip地址的。
host ns {
next-server marvin.redhat.com;
hardware ethernet 00:0C:29:9C:95:9B ;#这个MAC就是要分配主机的MAC-ADDRESS
fixed-address 192.168.108.159; #这个就是要分配的固定IP
}
配置完成之后,重启dhcpd服务,一个dhcp服务器就建立起来了。
本文出自 “linux学习之路” 博客,谢绝转载!
linux学习之路之DHCP服务