我们已知道,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、配置需求
有三个网段VLAN10、VLAN20、VLAN30,DHCP服务器在VLAN10中,要求DHCP服务器为各个网段分配地址情况如下:
VLAN 10 |
192.168.10.0/24 |
VLAN 20 |
192.168.20.0/24 |
VLAN 30 |
192.168.30.0/24 |
其中为VLAN20、VLAN30分配地址依靠中继实现;
DHCP服务器的地址为192.168.10.254;
DHCP中继代理服务器需要三块网卡,分别连接三个网段,三块网卡的地址分别为192.168.10.1、192.168.20.1、192.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