我们已知道,DHCP服务器能很好地为它所在的网段主机分配IP地址,可是如果在局域网中有多个网段主机均需要动态获取IP时,在每个网段中都架设DHCP服务器已显得很不明智。而只在一个网段中架设DHCP服务器时,由于多个网段是靠三层设备(如路由器)实现通信的,DHCP广播包是无法通过三层设备来传输到其他网段的,此时,通过配置DHCP中继便可解决问题。

一、DHCP中继原理

   如图,启动了DHCP中继的服务器的工作示意图:

1)DHCP客户机以广播的方式发送DHCPDISCOVER消息;

2)DHCP中继代理接收该消息并检测消息头中的网关IP地址字段(刚开始为0.0.0.0),如果该网关字段为0.0.0.0,代理文件会在其中填入中继代理的IP地址(即接收该消息的接口的IP),然后将消息以单播的形式转发到DHCP服务器所在的子网;

3)DHCP服务器接收到此消息后,会根据该消息的网关字段的地址标识来选取相应的作用域中的IP,产生DHCPOFFER包以单播的形式直接发送给中继代理服务器;

4)中继代理服务器再将该DHCPOFFER包以广播的形式转发给DHCP客户机(因为客户机无IP,所以必须在本地子网上广播);

5)同样,DHCPREQUEST消息从客户端中发出,经过中继代理服务器再到DHCP服务器,而DHCPACK消息从DHCP服务器发出,经过中继代理服务器再到客户端。IP地址等信息便分配完成。

二、DHCP中继代理配置举例

1、配置需求

有三个网段VLAN10VLAN20VLAN30DHCP服务器在VLAN10中,要求DHCP服务器为各个网段分配地址情况如下:

VLAN 10

192.168.10.0/24

VLAN 20

192.168.20.0/24

VLAN 30

192.168.30.0/24

其中为VLAN20VLAN30分配地址依靠中继实现;

DHCP服务器的地址为192.168.10.254

DHCP中继代理服务器需要三块网卡,分别连接三个网段,三块网卡的地址分别为192.168.10.1192.168.20.1192.168.30.1

2、拓扑图

3、配置步骤

   软件包:dhcp-3.0.5-18el5-i386.rpm

DHCP中继代理服务器】

(1)启动Linux的路由转发功能

 #vim /etc/sysctl.conf          

   net.ipv4.ip_forward=1                 //只需修改此行,将该值设为1即可

 #sysctl -p                             //加载/etc/sysctl.conf参数,使路由转发功能生效

(2)安装dhcp-3.0.5-18el5-i386.rpm

 #rpm -ivh dhcp-3.0.5-18el5-i386.rpm 

 或 #yum install dhcp

(3)配置DHCP relay

 #vim /etc/sysconfig/dhcrelay

   INTERFACES = "eth0 eth1 eth2 "        //指明要中继的子网所连接的接口网卡

   DHCPSERVERS = "192.168.100.100"    //DHCP服务器的IP

(4)语法检查

 #service dhcreplay configtest

(5)启动中继服务

 #service dhcreplay start 

DHCP服务器】

(1)安装dhcp-3.0.5-18el5-i386.rpm

 #rpm -ivh dhcp-3.0.5-18el5-i386.rpm 

 或 #yum install dhcp

(2)配置主配置文件/etc/dhcpd.conf

#vim /etc/dhcpd.conf

   ddns-update-style interim;      

   ignore client-updates;      

  subnet 192.168.10.0 netmask 255.255.255.0 {            //192.168.10.0子网分配地址

      option routers               192.168.10.1;            //为客户机指定默认网关

      option subnet-mask          255.255.255.0;           //为客户机指定子网掩码

      option domain-name         "domain.org";            //为客户机分配DNS

      option domain-name-servers   222.88.88.88;            //分配的DNS地址

      range dynamic-bootp 192.168.10.2 192.168.10.253;        //地址池

  }

  subnet 192.168.20.0 netmask 255.255.255.0 {            //192.168.20.0子网分配地址

      option routers              192.168.20.1;   

      option subnet-mask          255.255.255.0;  

      option domain-name         "domain.org";  

      option domain-name-servers   222.88.88.88;  

      range dynamic-bootp 192.168.20.2 192.168.20.254;   

  }

  subnet 192.168.30.0 netmask 255.255.255.0 {           //192.168.30.0子网分配地址

      option routers              192.168.30.1;   

      option subnet-mask          255.255.255.0;  

      option domain-name         "domain.org";  

      option domain-name-servers   222.88.88.88;  

      range dynamic-bootp 192.168.30.2 192.168.30.254;   

  }

  default-lease-time           21600;                  //默认租约时间(秒)

  max-lease-time             43200;                  //最大租约时间(秒)

(3)检查语法

#service dhcpd configtest

(4)启动DHCP服务

#service dhcpd start

(5)配置网卡参数

#vim /etc/sysconfig/network-scripts/ifcfg-eth0

  DEVICE=eth0

  BOOTPROTO=static

  IPADDR=192.168.10.254

  NETMASK=255.255.255.0

  GATEWAY=192.168.10.1

  ONBOOT=yes

(6)重启网卡

#service network restasrt