在实际应用中可能会遇到一个比较大的物理网络中存在多个ip子网,而每个ip子网的主机都需要DHCP服务器来动态分配ip地址,实现的方法有两种。第一种是在每一个子网中设置DHCP服务器,将其分别为每个子网分配ip地址,但此方法会增加开销,浪费资源;第二种就是只在一个子网内设置DHCP服务器,通过这台DHCP服务器来为所有的子网分配ip地址,这个方法比第一种节省,是可行的,这就要用到DHCP中继代理了。
在整个DHCP租约产生的过程中,DHCP服务器和客户端都是使用广播进行通信的,我们知道,网络上上的流量分为单播、广播、组播,单播和组播可以顺利的通过路由器,广播不可以通过路由器,路由器隔离广播,这样就会产生一个问题,如果DHCP客户端和DHCP服务器之间要跨越子网时,中间的路由器会进行阻拦,路由器看到是广播包立马就会扔掉,那怎么办呢?很简单,只需要让这个广播包在进入路由器之前变成单播就行了,这就是中继代理的原理。
DHCP中继代理的过程。(1)DHCP客户端广播dhcpdiscover包(2)DHCP中继代理将dhcpdiscover包以单播发送到DHCP服务器(3)HDCP服务器以单播发送DHCPoffer包给DHCP中继代理(4)DHCP中继代理广播dhcpffer包(5)DHCP客户端广播dhcprequest包(6)DHCP中继代理以单播转发dhcprequest包给DHCP服务器(7)DHCP服务器以单播发送dhcpack包给DHCP中继代理(8)DHCP中继代理广播dhcpack包。
一般情况下,DHCP中继代理监听所有接口上的DHCP请求。假如某个HDCP服务器位于网络接口为eth0的子网内,那么就可以用中继代理向eth1和eth2连接的子网内提供DHCP服务。
实验:
如图公司的三个子网处于三个网段内,现在只在人力部子网里面配置一天DHCP服务器,怎样同时为这三个子网实现DHCP功能?
1、首先在DHCP SERVER这台服务器上进行配置
(1)安装并开启dhcp服务。
(2)编辑主配置文档/etc/dhcpd.conf. 建立三个作用域如下:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.92.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.92.254;
option subnet-mask 255.255.255.0;
option domain-name "renli.org";
option domain-name-servers 222.222.85.85;
option time-offset -18000;
range dynamic-bootp 192.168.92.0 192.168.92.253;
default-lease-time 21600;
max-lease-time 43200; }
subnet 192.168.91.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.91.254;
option subnet-mask 255.255.255.0;
option domain-name "caiwu.org";
option domain-name-servers 222.88.88.88;
option time-offset -18000;
range dynamic-bootp 192.168.91.0 192.168.91.253;
default-lease-time 21600;
max-lease-time 43200; }
subnet 192.168.93.0 netmask 255.255.255.0 {
} //注意这里建了一个空的作用域,其实也可以比为空
(3)重新启动dhcp服务
到此服务器的上的配置就完成了,下面看在中继的配置。