首页 > 代码库 > 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服务