一.DHCP服务器指的是由服务器控制一段IP地址,在未绑定的情况下,客户端以此为服务器的时候可以自动的获取服务器设定的一段范围内的IP地址,或者是通过静态IP和子网掩码绑定分配给客户端IP地址。
首先你应该 yum install bind bind-chroot -y
     yum install dhcp -y

实验一:
   未绑定IP地址:
   cd /usr/share/doc/dhcp-4.1.1/
   cp dhcpd.conf.sample   /etc/dhcp/dhcpd.conf
   vi   /etc/dhcp/dhcpd.conf

      
    option domain-name "westos.org"
option domain-name-servers 192.168.0.46; //以IP为46的主机为DHCH服务器。
option broadcast-address 192.168.0.46;
(千万不可以将这一条加上,不可以有广播地址。否则,虚拟机获得动态IP的时候ping不通主机。。。。)
default-lease-time 600;

max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.135 192.168.0.145;//在未绑定的情况下客户端获得的IP为135-145之间。
option routers 192.168.0.46;
 
 option broadcast-address 192.168.0.131;
}
   vi /etc/named.conf
       添加:#    listen-on port 53 { 127.0.0.1; };(要么将里面改成localhost要么注释掉)
#       allow-query     { localhost; };(要么将里面改成all,要么注释)
     zone “westos.org” IN {
    type   master;
        file    "westos.org.zone";
        allow-update { 192.168.0.46;};//allow-update { key westos;};

};
cd /var/named
  cp -p  named.localhost  westos.org.zone
  vi westos.org.zone

$TTL 1D
@    IN SOA    @ root. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    @
    A    192.168.0.46
www    A       192.168.0.46

  chown named.named /var/named/chroot/var/named/ -R
    getsebool  -a | grep named
  setsebool -P named_write_master_zones  on

此时你 dig www.westos.org既可以出现解析。(不过要注意想要获得解析之前要改动vim /etc/resolv     nameserver 192.168.0.131 )
nsupdate
>server 192.168.0.46
>zone westos.org
>update delete www.westos.org
>send
(如果此时你send的时候报错:update failed: SERVFAIL说明你文件权限的问题没改好。chown named.named /var/named/chroot/var/named/ -R)
>quit
此时你 dig www.westos.org就不可以出现解析了,因为你以及删除了。。。。。

实验二:
dnssec-keygen  -a HMAC -MD5 -b 128 -n HOST westos(注意 HMAC-MD5中间的-前后不要有空格呢。。。。)
([root@desktop31 var]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos
Ksushan.+157+42306 dnssec-keygen:用来生成更新密钥。-a HMAC-MD5:采用HMAC-MD5加密算法。-b 128:生成的密钥长度为128位。-n HOST kevin:密钥主机westos
在当前目录: ls 即可出现:Kwestos.+157+42306.private Kwestos.+157+42306.key
[root@desktop46 var]# cat Kwestos.+157+42306.key
westos. IN KEY 512 3 157 N0BFgnR/9tJSDGAaWlWrFA==(这是公钥)
[root@desktop46 var]# cat Kwestos.+157+42306.private
Private-key-format: v1.3(这是私钥)
Algorithm: 157 (HMAC_MD5)
Key: N0BFgnR/9tJSDGAaWlWrFA==
Bits: AAA=
Created: 20120317031817
Publish: 20120317031817
Activate: 20120317031817 
nsupdate -k Kwestos.+157+37219.key
>server 192.168.0.46
>zone westos.org
>update add www.westos.org 600 A 192.168.0.46
>send
>quit


dig www.westos.org

 vi /etc/named.conf
    zone "westos.org" IN
    {
      type master;
      file  "westos.org.zone";
      allow-update { key westos; };
    };
    key "westos"
    {
       algorithm hmac-md5;    //所使用的加密算法。
       secret  "
N0BFgnR/9tJSDGAaWlWrFA==";//密钥串
    };

在服务器上  /etc/init.d/dhcpd restart
       rndc   reload
nsupdate -k Kwestos.+157+37219.key
>server 192.168.0.46
>zone westos.org
>update add www.westos.org 600 A 192.168.0.46
>send
(如果> send; TSIG error with server: tsig indicates error update failed: NOTAUTH(BADKEY) 出现类似的错误是因为你在named.conf中没有配置好!。)
>quit


在虚拟机上:
    vi /etc/resolv.conf
nameserver 192.168.0.46
        /etc/init.d/network restart
(同时你会在虚拟机上的/etc/resolv.conf中看到search westos.org)
测试:
拔掉网线,在客户端上测试,记得将客户端的IP获取为DHCP
dig  www.westos.org
ifconfig

 
实验三:
   动态绑定的IP和MAC地址:
   在  vi   /etc/dhcp/dhcpd.conf中增加:
     subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.120 192.168.0.130;
  option domain-name-servers 192.168.0.34;
  option routers  192.168.0.254;
  default-lease-time 600;
  max-lease-time 7200;
}


  host client1 {
hardware ethernet 52:54:00:21:3d:95;// 。。。。客户端上的主机的MAC地址.
fixed-address 192.168.0.125;// 。。。。。。。。要给客户端上动态绑定的IP
}

测试:
在客户端上测试,记得将客户端的IP获取为DHCP
ifconfig
此时得到的IP为刚才绑定的IP,而且MAC地址与之上绑定的一致。
实验四:
     vi   /etc/dhcp/dhcpd.conf
    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.123 192.168.0.133;
      option domain-name-servers 192.168.0.46;
      option routers 192.168.0.254;//注意不要有广播地址设成46 #@option broadcast-address 192.168.0.34;这样会ping 不通虚拟机
      default-lease-time 600;//
      max-lease-time 7200;
    }


        ddns-update-style interim;
     key westos {
    algorithm  hmac-md5;
    secret N0BFgnR/9tJSDGAaWlWrFA==;
}
    zone  westos.org
 {
   primary  127.0.0.1;
   key   westos;
}

在客户端:
 vi /etc/dhcp/dhclient.conf(dhclient.conf应该是新建的。)
 send fqdn.fqdn "server46.westos.org";
send  fqdn.encoded on;
send  fqdn.server-update on;

注意:vi /etc/sysconfig/network-scripts/ifcfg-eth0
中应该是动态获取IP 的。
在服务器上 : /etc/init.d/dhcpd restart
       rndc   reload

在虚拟机上:
        /etc/init.d/network restart

测试:
 dig     server46.westos.org
会看到有更新
在服务器上有
cat /var/lib/dhcpd/dhcp.lease
会看到更新。