DHCP原理:
DHCP动态主机配置协议,在一个小型局域网里可以通过手工指定ip地址的方式,但如有大量的主机,如果还是手工指定,那是一个很大的工作量,而且也容易出错,这时,就可以通过配置一台DHCP服务器来解决,为每台主机分配一个ip地址。
DHCP工作过程分为四个步骤:
第一步(DHCPDISCOVER):客户端发送广播查找可以给自己提供IP地址的DHCP服务器,
第二步(DHCPOFFER):DHCP服务器发送广播提供一个可用的IP地址,并在地址池中将该地址打上标记,以防再次分配。
第三步(DHCPREQUEST):客户端收到广播后再次发送一个广播请求该地址,如果有多台DHCP响应,则第一个收到的优先。
第四步(DHCPACK):DHCP服务器收到广播后再发送一个广播,确认该地址分配给这台主机使用,并在地址池中将该地址打上标记,以防再次分配。
更新的过程:
1.重新启动 dhcprequest 直接发送给提供地址的服务器
2.50% dhcprequest 直接发送给曾经提供地址的服务器
87.5% dhcpcover 广播(4个步骤)
100% 终止使用 此时地址变成169.254.x.y
dhcp单作用域和超级作用域
超级作用域是由多个DHCP作用域组成的作用域,单个DHCP作用域只能包含一个固定的子网,而超级作用域可以包含多个DHCP作用域,从而包含多个子网。超级作用域主要用于解决以下问题:
-
当前单个DHCP作用域中的可用地址几乎耗尽,而且网络中将添加更多的计算机,需要添加额外的IP网络地址范围来扩展同一物理网段的地址空间;
-
DHCP客户端必须迁移到新作用域,例如重新规划IP网络编号,从现有的活动作用域中使用的地址范围迁移到使用另一IP网络地址范围的新作用域;
-
希望使用两个DHCP服务器在同一物理网段上管理分离的逻辑IP网络。
DHCP中继原理:
如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的ip地址。如果不在同一个物理网段,则需要DHCP Relay Agent(中继代理)。用DHCP Relay代理可以去掉在每个物理的网段都要有DHCP服务器的必要,它可以传递消息到不在同一个物理子网的DHCP服务器,也可以将服务器的消息传回给不在同一个物理子网的DHCP客户机。
案例一 dhcp单作用域
[root@uodekoaix ~]# mkdir /mnt/cdrom
[root@uodekoaix ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@uodekoaix ~]# cd /mnt/cdrom/Server
[root@uodekoaix Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm //安装dhcp服务[root@uodekoaix ~]# vim /etc/dhcpd.conf
[root@uodekoaix ~]# service dhcpd configtest //检测配置文件
Syntax: OK
[root@uodekoaix ~]# service dhcpd start
启动 dhcpd: [确定]
[root@uodekoaix ~]# tail -f /var/log/messages
[root@uodekoaix ~]# service dhcpd restart
打开一台xp系统并配置如下
[root@uodekoaix ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
[root@uodekoaix Server]# yum list |grep wireshark
This system is not registered with RHN.
RHN support will be disabled.
wireshark.i386 1.0.8-1.el5_3.1 rhel-
server
wireshark-gnome.i386 1.0.8-1.el5_3.1
[root@uodekoaix Server]# yum install -y wireshark.i386
[root@uodekoaix Server]# tshark -ni eth0 -R"udp.port eq 67"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
35.019680 0.0.0.0 -> 255.255.255.255 DHCP DHCP Discover -
Transaction ID 0xe98a0bf8
36.411653 192.168.145.22 -> 192.168.145.253 DHCP DHCP Offer -
Transaction ID 0xe98a0bf8
36.420754 0.0.0.0 -> 255.255.255.255 DHCP DHCP Request -
Transaction ID 0xe98a0bf8
36.426779 192.168.145.22 -> 192.168.145.253 DHCP DHCP ACK -
Transaction ID 0xe98a0bf8
xp网卡先禁用再启用
[root@uodekoaix Server]# vim /var/lib/dhcpd/dhcpd.leases
[root@uodekoaix Server]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.145.253 ether 00:0C:29:44:F8:C4 C eth0
192.168.145.10 ether 00:50:56:C0:00:01 C eth0
[root@uodekoaix Server]# vim /etc/dhcpd.conf
host ftp {
next-server marvin.redhat.com;
hardware ethernet 00:0C:29:44:F8:C4;
fixed-address 192.168.145.99;
}
XP系统网卡禁用再启用
添加备用DNS
[root@uodekoaix Server]# vim /etc/dhcpd.conf
案例二 dhcp超级作用域
[root@uodekoaix Server]# vim /etc/dhcpd.conf //配置文件
打开xp
打开另外一台linux
案例三 DHCP中继
linux服务器模拟路由,其中有三块网卡分别为eth0 192.168.145.254 eth1 192.168.20.254 eth2 192.168.10.254
eht0网卡与dhcp服务器通过vmnet1连接;eth1与caiwu通过vmnet2连接;eth2与tec主机通过vmnet3连接
caiwu与tec需要从dhcp服务器上动态获得分别为192.168.10.0,192.168.20.0网段的地址
拓扑图如下
打开一台linux做服务器,配置如下
[root@uodekoaix ~]# vim /etc/dhcpd.conf //配置文件
[root@uodekoaix ~]# service dhcpd restart
打开另外一台linux做路由器并添加三块网卡,连接如下
配置eth0,eth1,eth2 ip地址及子网掩码
[root@statio n99 ~]# vim /etc/sysctl.conf //开启路由转发
[root@station99 ~]# sysctl –p //重新读取配置文件
挂载光盘,并安装dhcrelay服务
[root@station99 ~]# mkdir /mnt/cdrom
[root@station99 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@station99 ~]# cd /mnt/cdrom/Server
[root@station99 Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm
[root@station99 Server]# vim /etc/sysconfig/dhcrelay //配置文件
[root@station99 Server]# service dhcrelay start
测试 获取地址
打开xp系统,客户端tec选vmnet3网卡获得的ip
客户端caiwu连接vmnet2网卡获得的ip
小结:
在大型的网络中,可能会存在多个子网。DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越子网的。因此,如果DHCP客户机和服务器在不同的子网内,客户机就不能向服务器申请IP地址,这时就要用到DHCP中继代理。DHCP中继代理实际上是一种软件技术,安装了DHCP中继代理的计算机称为DHCP中继代理服务器,它承担不同子网间的DHCP客户机和服务器的通信任务。