Linux DHCP服务器

  DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。  

  功能:

   DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:

   1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

   2. DHCP应当可以给用户分配永久固定的IP地址。

   3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

   4. DHCP服务器应当向现有的BOOTP客户端提供服务。

  DHCP有三种机制分配IP地址:

   1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

   2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

   3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

     三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

  DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。

  DHCP客户端

   在支持DHCP功能的网络设备上将指定的端口作为DHCP Client,通过DHCP协议从DHCP Server动态获取IP地址等信息,来实现设备的集中管理。一般应用于网络设备的网络管理接口上。

  DHCP客户端可以带来如下好处:

   降低了配置和部署设备时间。

   降低了发生配置错误的可能性。

   可以集中化管理设备的IP地址分配。

  DHCP服务器

   DHCP服务器指的是由服务器控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。  

  DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如图。

wKioL1U4RH3DRBUrAADHgVOXtDc355.jpg

 Linux DHCP配置:

   1、设置DHCP固定IP (DHCP服务器必须使用固定IP)

[root@master dhcp]# ifconfig -a           #查看当前使用网卡,设置固定IP
eth1   Link encap:Ethernet  HWaddr 00:0C:29:52:46:0F  
     inet addr:192.168.8.7  Bcast:192.168.8.255  Mask:255.255.255.0
     inet6 addr: fe80::20c:29ff:fe52:460f/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
     RX packets:15330 errors:0 dropped:0 overruns:0 frame:0
     TX packets:9236 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:16260358 (15.5 MiB)  TX bytes:785794 (767.3 KiB)

wKiom1U4WzjByLkdAAGvOQECjTU757.jpg

   2、安装DHCP

[root@master yum.repos.d]# yum -y install dhcp    #以本地光盘为yum源安装DHCP
Error: Package: 12:dhcp-4.1.1-34.P1.el6.centos.x86_64 (Master)
           Requires: dhcp-common = 12:4.1.1-34.P1.el6.centos
           Installed: 12:dhcp-common-4.1.1-43.P1.el6.centos.x86_64 (@Master)
               dhcp-common = 12:4.1.1-43.P1.el6.centos
           Available: 12:dhcp-common-4.1.1-34.P1.el6.centos.x86_64 (Master)
               dhcp-common = 12:4.1.1-34.P1.el6.centos
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
   #提示版本不一致,要求安装dhcp-4.1.1-34版本,卸载dhcp-common-4.1.1-43包,再重新安装DHCP
[root@master yum.repos.d]# rpm -qc dhcp    #rpm查询DHCP配置
/etc/dhcp/dhcpd.conf                #IPV4配置文件
/etc/dhcp/dhcpd6.conf                #IPV6配置文件
/etc/openldap/schema/dhcp.schema
/etc/portreserve/dhcpd               #备用端口文件
/etc/sysconfig/dhcpd
/etc/sysconfig/dhcpd6
/etc/sysconfig/dhcrelay
/etc/sysconfig/dhcrelay6
/var/lib/dhcpd/dhcpd.leases             #IPV4租约文件
/var/lib/dhcpd/dhcpd6.leases            #IPV6租约文件

   3、编辑配置文件

[root@master ~]# cd /etc/dhcp/     #切换至配置目录
[root@master dhcp]# ll
total 12
drwxr-xr-x. 2 root root 4096 Oct 16  2014 dhclient.d    #DHCP客户端脚本文件
-rw-r--r--. 1 root root  193 Oct 16  2014 dhcpd6.conf   #IPV6配置文件
-rw-r--r--. 1 root root  112 Oct 16  2014 dhcpd.conf   #IPV4配置文件
[root@master dhcp]# cat dhcpd.conf     #查看配置文件为空,提示有模板可用
# 
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
[root@master dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample dhcpd.conf
    #Copy模板覆盖当前配置文件
    
[root@master dhcp]# vim dhcpd.conf         #编辑配置文件
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "example.org";                    #全局配置,定义区域名  
option domain-name-servers ns1.example.org, ns2.example.org;  #全局配置,定义域名服务器
default-lease-time 600;                #全局配置,定义默认租约时间,单位为秒
max-lease-time 7200;                 #全局配置,定义最大租约时间,单位为秒

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet 10.0.0.0 netmask 255.255.255.0 {     #subnet定义网络段,子网掩码
  range 10.0.0.3 10.0.0.254;       #使用range定义IP地址段,必须排除此DHCP服务器IP
  option domain-name-servers master.dove.com;  #使用option定义域名服务器
  option domain-name "master.dove.com";     #使用option定义区域名
  option routers 10.0.0.1;            #使用option定义路由器IP
  option broadcast-address 10.0.0.255;      #使用option定义广播地址
  default-lease-time 3600;            #定义此网段IP地址默认租约时间
  max-lease-time 7200;              #定义此网段IP地址最大租约时间
}

## This is a very basic subnet declaration.  #将配置中从此行开始,以下全部注释

  4、启动DHCP服务wKiom1U4ZZGjjZpdAAEBrQyDdc4824.jpg

  5、测试客户端

    环境:虚拟机CentOS6.4作为DHCP服务器,网络为Vmnet2

       虚拟机CentOS6.4作为DHCP客户端,网络为Vmnet2

   查看DHCP客户端获取IP

wKiom1U4pv-wCtVAAAFDvK4zYA4604.jpg

   查看DHCP服务器租约文件wKiom1U4qHWi6_TDAAHdBozIdLg720.jpg

  6、DHCP保留客户端IPwKiom1U4qGPzPi9zAAFwYiJPQzk996.jpg

   重新获取IP

 dhclient -d 也可重新获取IP,一般建议重启网络服务,因为网络服务本身会调用dhclient脚本.

wKioL1U4qo6TaJNhAAIMAeQIN9M321.jpg

  到此DHCP服务器搭建完成.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章