企业网DHCP服务器的应用
1. DHCP定义
DHCP的全称是Dynamic Host Configuration Protocol,是一个局域网的网络协议,使用UDP协议工作,主要是用来给网络客户机分配动态的ip地址。这些被分配的ip地址都是从DHCP服务器预先保留的一个或多个地址组成的地址集,并且它们一般都是一段连续的地址。
DHCP服务器提供DHCP服务使用的是UDP67端口。而客户机使用的是UDP68端口。
2.地址分配方式
Manual Allocation
人工分配,或得的IP地址也叫静态地址,网络管理员为在这个网络中某些少数特定的计算机或网络设备绑定固定的ip地址,且地址永不会过期。但是这种分配方式地址利用率低。
Automatic Allocation
自动分配,其情形是:一旦DHCP客户端第一次成功的从DHCP服务器获得这个ip地址后,就永久使用这个地址。这种分配方式地址使用效率也比较低。
Dynamic Allocation
动态分配,当DHCP客户端第一次从DHCP服务器端租用到ip地址后,并非一直使用该地址,只要足月到期,客户端就得释放这个ip地址,以给其它设备使用。这种分配方式利用率较高。
我们一般也最经常使用的就是第三种动态获得
3.分配过程
客户端从服务器获得IP地址经过四个步骤
(1)DHCPDISCOVER (DHCP 发现)
(2)DHCPOFFER (DHCP 提供)
(3)DHCPREQUEST (DHCP请求)
(4)DHCPPACK (DHCP 确认)
在Linux下实现DHCP服务器
Linux操作系统为:Centos 6.4
案例:
在192.168.3.0网段动态分配IP地址
地址池 192.168.3.200 ~192.168.3.240
子网掩码 :255.255.255.0
网关 :192.168.3.254
dns指向 :222.222.222.22
222.222.222.21
过程:
先安装DHCP服务:
[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp
我们查询一下DHCP的安装目录
[root@localhost ~]# rpm -qal dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf //这个就是dhcp服务的配置文件
/etc/dhcp/dhcpd6.conf
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample //这个文件是配置dhcp服务的样例文件,我们可以参考这个样例文件对dhcp进行配置
/usr/share/doc/dhcp-4.1.1/dhcpd6.conf.sample
我们来看一下这个配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
1 #
2 # DHCP Server Configuration file.
3 # see /usr/share/doc/dhcp*/dhcpd.conf.sample
4 # see 'man 5 dhcpd.conf'
5 #
~
这个文件里总共有五行并且都是注释。第二行指明这是一个dhcp服务的配置文件,第三行让我们参考 /usr/share/doc/dhcp*/dhcpd.conf.sample这个文件,就是我们刚才说的样例文件。
我们把这个样例文件读取到这个配置文件中
:read /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample //在/etc/dhcp/dhcpd.conf中的底行模式下执行这个读取命令
读取之后我们我们可看到N多行的配置说明,而今天我们做的这个是个简单的dhcp实现,所以我们不管那么多,只配置可以实现我们这个的案例的都可以了,我们根据样例改一下配置
修改后:
保存退出
配置完之后我们都要对这个配置文件进行语法检测,我们可以这样来做
[root@localhost ~]# service dhcpd //查看都有哪些选项
Usage: /etc/init.d/dhcpd {start|stop|restart|force-reload|condrestart|try-restart|configtest|status}
[root@localhost ~]# service dhcpd configtest //configtest 配置测试
Syntax: OK
启动dhcpd服务
[root@localhost ~]# service dhcpd start
Starting dhcpd: [ OK ]
[root@localhost ~]# chkconfig dhcpd on 设置为开机自启动
接下来,我们测试一下,我们用一台windows操作系统的机器从DHCP服务器来获得地址。
我是在VMware虚拟机上做的实验,需要把虚拟机的网卡编辑里,不能勾选使用本地DHCP服务将ip地址分配给虚拟机。否则的话测试时不能从我们配置的DHCP服务器上获取到IP地址。
在windows 2008 server测试结果:
我们可以看到获得的ip地址为:192.168.3.200 子网掩码为:255.255.255.0
网关:192.168.3.254 DNS:222.222.222.22 222.222.222.21
DHCP服务器搭建成功!
案例二:DHCP超级作用域(对于网络中大量主机使用)
DHCP服务器的搭建参考案例一
编辑DHCP服务器配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
测试语法是否正确,如果正确,重启DHCP服务器
[root@localhost ~]# service dhcpd configtest
Syntax:OK
[root@localhost ~]# service dhcpd restart
Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]
主机一获取地址:
主机二获取地址:
案例三:DHCP中继
dhcp中继
在大型的网络中,可能会存在多个子网。DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越子网的。因此,如果DHCP客户机和服务器在不同的子网内,客户机还能不能向服务器申请IP地址呢?这就要用到DHCP中继代理。DHCP中继代理实际上是一种软件技术,安装了DHCP中继代理的计算机称为DHCP中继代理服务器,它承担不同子网间的DHCP客户机和服务器的通信任务。
拓扑图:
所需设备:
H3C F100-C 防火墙1台
华为quidway S3526 交换机1台
CentOS(DHCP Server)配置:
编辑DHCP服务器配置文件
DHCP服务器在CentOS下实现,配置参考案例一
SW1配置:
[Quidway]sysname SW1
[SW1]vlan 10
[SW1-vlan10]port e0/10
[SW1-vlan10]vlan 20
[SW1-vlan20]port e0/20
[SW1-vlan20]vlan 30
[SW1-vlan30]port e0/24
[SW1-vlan30]quit
[SW1]int e0/22
[SW1-Ethernet0/22]port link-type trunk
[SW1-Ethernet0/22]port trunk permit vlan all
[SW1-Ethernet0/22]dis vlan
Now, the following VLAN exist(s):
1(default), 10, 20, 30
H3C配置:
<H3C>system-view
System View: return to User View with Ctrl+Z.
[H3C]int eth0/0.1
[H3C-Ethernet0/0.1]vlan-type dot1q vid 10
[H3C-Ethernet0/0.1]ip add 192.168.10.1 24
[H3C-Ethernet0/0.1]int eth0/0.2
[H3C-Ethernet0/0.2]vlan-type dot1q vid 20
[H3C-Ethernet0/0.2]ip add 192.168.20.1 24
[H3C-Ethernet0/0.2]int eth0/0.3
[H3C-Ethernet0/0.3]vlan-type dot1q vid 30
[H3C-Ethernet0/0.3]ip add 192.168.30.1 24
[H3C-Ethernet0/0.3]quit
[H3C]firewall zone trust
[H3C-zone-trust]add int eth0/0.1
[H3C-zone-trust]add int eth0/0.2
[H3C-zone-trust]add int eth0/0.3
[H3C-zone-trust]quit
[H3C]undo insulate
[H3C]ping 192.168.30.100
PING 192.168.30.100: 56 data bytes, press CTRL_C to break
Reply from 192.168.30.100: bytes=56 Sequence=1 ttl=64 time=13 ms
Reply from 192.168.30.100: bytes=56 Sequence=2 ttl=64 time=6 ms
Reply from 192.168.30.100: bytes=56 Sequence=3 ttl=64 time=5 ms
Reply from 192.168.30.100: bytes=56 Sequence=4 ttl=64 time=5 ms
Reply from 192.168.30.100: bytes=56 Sequence=5 ttl=64 time=5 ms
--- 192.168.30.100 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 5/6/13 ms
[H3C]dhcp enable
DHCP task has already been started!
[H3C]dhcp select relay interface eth0/0.1 to eth0/0.2
[H3C]int eth0/0.1
[H3C-Ethernet0/0.1]ip relay add 192.168.30.100
[H3C-Ethernet0/0.1]int eth0/0.2
[H3C-Ethernet0/0.2]ip relay add 192.168.30.100
技术部主机1获取地址:
市场部主机1获取地址: