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号端口。详细的交互过程如图。
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)
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服务
5、测试客户端
环境:虚拟机CentOS6.4作为DHCP服务器,网络为Vmnet2
虚拟机CentOS6.4作为DHCP客户端,网络为Vmnet2
查看DHCP客户端获取IP
查看DHCP服务器租约文件
6、DHCP保留客户端IP
重新获取IP
dhclient -d 也可重新获取IP,一般建议重启网络服务,因为网络服务本身会调用dhclient脚本.
到此DHCP服务器搭建完成.