DHCP工作原理:

DHCP又称动态主机配置协议,它工作分为三步:

1. 寻找 Server。当 DHCP 客户端第一次登录网路的时候,也就是客户发现本机上没有任何 IP 资料设定,它会向网路发出一个 DHCPDISCOVER 封包。因为客户端还不知道自己属于哪一个网路,所以封包的来源位址会为 0.0.0.0 ,而目的位址则为 255.255.255.255 ,然后再附上Dhcpdiscover 的信息,向网路进行广播。
2. 提供 IP 租用位址。当 DHCP 服务器监听到客户端发出的 Dhcpdiscover 广播后,它会从那些还没有租出的位址范围内,选择最前面的的空置 IP ,连同其它 TCP/IP 设定,回应给客户端一个 DHCPOFFER 封包。由于客户端在开始的时候还没有 IP 位址,所以在其 Dhcpdiscover 封包内会带有其 MAC 位址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器回应的Dhcpoffer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,Dhcpoffer 封包会包含一个租约期限的信息。
3. 接受 IP 租约。如果客户端收到网路上多台 DHCP 服务器的回应,只会挑选其中一个 Dhcpoffer 而已(通常是最先抵达的那个),并且会向网路发送一个Dhcprequest广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 位址。同时,客户端还会向网路发送一个 ARP 封包,查询网路上面有没有其它机器使用该 IP 位址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 Dhcpoffer ,并重新发送 Dhcpdiscover 信息。
 
LINUX系统配置DHCP服务器
案例一 (单作用域)
 1.
 
  
  1. mkdir /mnt/cdrom   
  2. mount /dev/cdrom /mnt/cdrom //挂载光盘镜像  
  3. cd /mnt/cdrom/Server //进入服务安装目录  
    ll dhcp* //查看以dhcp开头的软件包
 
  
  1. -r--r--r-- 69 root root 896083 2008-12-01 dhcp-3.0.5-18.el5.i386.rpm //dhcp服务器主程序  
  2. -r--r--r-- 79 root root 134641 2008-12-01 dhcp-devel-3.0.5-18.el5.i386.rpm//跟开发有关  
  3. -r--r--r-- 69 root root 197418 2008-11-05 dhcpv6-1.0.10-16.el5.i386.rpm //ipv6的  
  4. -r--r--r-- 69 root root 125998 2008-11-05 dhcpv6-client-1.0.10-16.el5.i386.rpm  
2. rpm -ivh dhcp-3.0.5-18.el5.i386.rpm  //安装dhcp服务包
 
  
  1. warning: dhcp-3.0.5-18.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186  
  2. Preparing...                ########################################### [100%]  
  3.    1:dhcp                 ########################################### [100%]  
 

    rpm -ql dhcp |less //查看安装之后所形成的文件信息

 
    
  1. /etc/dhcpd.conf //服务器主配置文档  
  2. /etc/rc.d/init.d/dhcpd //实现dhcp服务的控制脚本  
  3. /etc/rc.d/init.d/dhcrelay //实现dhcp中继的控制脚本  
  4. /usr/sbin/dhcpd //放置可执行应用程序名dhcpd  
  5. /usr/sbin/dhcrelay  
  6. /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample //配置脚本样例文件  
  7. /var/lib/dhcpd/dhcpd.leases //表示租约  
 
3.vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
 
   
  1. ddns-update-style interim; //dns记录动态更新  
  2.  
  3. ignore client-updates;    //忽略客户端地址更新请求  
  4.  
  5. subnet 192.168.2.0 netmask 255.255.255.0 {  
  6.            option routers                  192.168.3.254; //路由网关  
  7.         option subnet-mask              255.255.255.0; //子网掩码  
  8.    
  9.         option domain-name              "abc.com"; //设置dhs名称  
  10.         option domain-name-servers      222.88.88.88; //设置dns服务地址  
  11.    
  12.         range dynamic-bootp 192.168.2.1 192.168.2.253; //设置地址池范围  
  13.         default-lease-time 21600; //默认租用时间  
  14.         max-lease-time 43200; //最大租用时间  
  
4.  service dhcpd start  //启动dhcp服务
 
  
  1. 启动 dhcpd:                                               [确定]  
DHCP服务器配置完毕,打开一个dhcp客户端,启用自动获取地址
 演示结果:

案例二绑定客户端ip地址
vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
 
  
  1. host ns {  
  2.                 next-server marvin.redhat.com;  
  3.                 hardware ethernet 00:0C:29:4D:88:4E192.168;  
  4.                 fixed-address 192.168.2.99;  
演示结果:

案例三 ( 超级作用域)
vim /etc/dhcpd.conf //编译dhcp服务的主配置文件
 
   
  1. ddns-update-style interim;  
  2. ignore client-updates;  
  3.    
  4. shared-network zzdx{  
  5. subnet 192.168.2.0 netmask 255.255.255.0 {  
  6.         option routers                  192.168.2.254;  
  7.         option subnet-mask              255.255.255.0;  
  8.         option domain-name              "abc.com";  
  9.         option domain-name-servers      222.88.88.88;  
  10.         option time-offset              -18000;  
  11.         range dynamic-bootp 192.168.2.1 192.168.2.1;  
  12.         default-lease-time 21600;  
  13.         max-lease-time 43200;  
  14. }  
  15. subnet 192.168.3.0 netmask 255.255.255.0 {  
  16.         option routers                  192.168.3.254;  
  17.         option subnet-mask              255.255.255.0;  
  18. option domain-name              "abc.com";  
  19.         option domain-name-servers      222.88.88.88;  
  20.         option time-offset              -18000;  
  21.         range dynamic-bootp 192.168.3.1 192.168.3.1;  
  22.         default-lease-time 21600;  
  23.         max-lease-time 43200;  
  24. }  
  25. }  
演示结果:
 

  

案例四 (dhcp中继)
 

 

在dhcp服务器上:

1.vim /etc/dhcpd.conf //编译dhcp服务的主配置文件

 
  
  1. ddns-update-style interim;  
  2. ignore client-updates;  
  3.  
  4.  subnet 192.168.2.0 netmask 255.255.255.0 {}  
  5.  subnet 192.168.4.0 netmask 255.255.255.0 {  
  6.         option routers                  192.168.4.254;  
  7.         option subnet-mask              255.255.255.0;  
  8.         option domain-name              "bj.com";  
  9.         option domain-name-servers      222.88.88.88;  
  10.         option time-offset              -18000;  
  11.         range dynamic-bootp 192.168.4.1 192.168.4.253;  
  12.         default-lease-time 21600;  
  13.         max-lease-time 43200;  
  14. }  
  15. subnet 192.168.3.0 netmask 255.255.255.0 {  
  16.         option routers                  192.168.3.254;  
  17. option subnet-mask              255.255.255.0;  
  18.         option domain-name              "abc.com";  
  19.         option domain-name-servers      222.88.88.88;  
  20.         option time-offset              -18000;  
  21.         range dynamic-bootp 192.168.3.1 192.168.3.253;  
  22.         default-lease-time 21600;  
  23.         max-lease-time 43200;  
  24. }  

 

 2.配置ip地址和网关
 
 在路由器上:
 
1.vim /etc/sysctl.conf//打开路由转换功能

 

 
net.ipv4.ip_forward = 1 
2.sysctl -p  //执行路由转换
     net.ipv4.ip_forward = 1       net.ipv4.conf.default.rp_filter = 1       net.ipv4.conf.default.accept_source_route = 0        kernel.sysrq = 0        kernel.core_uses_pid = 1        net.ipv4.tcp_syncookies = 1       kernel.msgmnb = 65536       kernel.msgmax = 65536        kernel.shmmax= 4294967295    kernel.shmall = 268435456   
 

3.

mount /dev/cdrom /mnt/cdrom //挂载光盘镜像  cd /mnt/cdrom/Server //进入服务安装目录  rpm -ivh dhcp-3.0.5-18.el5.i386.rpm  //安装dhcp服务包
 
   

4.vim /etc/sysconfig/dhcrelay  //配置dhcp中继

 
   
  1. INTERFACES="eth0 eth1 eth2" 
  2. DHCPSERVERS="192.168.2.100" 
5.service dhcrelay start  //启动dhcp中继服务
 
   
  1. 启动 dhcrelay:                                            [确定]  

打开两个dhcp客户端,启用自动获取地址

演示结果:

客户端一

客户端二