DHCP(Dynamic Host Configuration Protocol),全称"动态主机配置协议",是一个简化主机IP地址分配关了的TCP/IP协议...只要在网络中安装和配置了DHCP服务器,用户就不再需要输入IP地址和子网掩码,还有其他一些参数信息,主机会自动去DHCP服务器上获取地址等信息,大大减少了管理员的工作量,如果一个公司的机器上百台,配置个DHCP服务器再好不过了...
主配置文件 /etc/dhcpd.conf
DHCP中继配置文件 /etc/sysconfig/dhcrelay
服务脚本 /etc/init.d/dhcpd /etc/init.d/dhcrelay
1.限定租期..
当DHCP客户端向DHCP服务器租用到IP地址,客户端可以使用该IP地址一段时间,当租约快到期时,客户端必须向DHCP服务器提出续约请求,请求成功后可以继续使用该IP地址,如果客户端没有续约或续约不成功,服务器就会将该IP地址收回,分配给其他DHCP客户端使用...
2.永久租用..
当DHCP客户端的MAC地址被绑定到服务器之后,与该MAC地址绑定匹配的IP地址将会给该客户端,且永久租用,这个地址其他机器自动获取不到的,除非你配置静态的IP...
DHCP server工作的原理...
(1)DHCPDISCOVER 在DHCP发现的过程中,客户端使用0.0.0.0作为自己的IP地址,255.255.255.255作为服务器的IP地址,然后以UDP的方式,在67或68端口广播出一个DHCPDISCOVER信息,该信息含有客户端网卡MAC地址和计算机的NetBios名称,此过程为广播的形式.如果找不到DHCP服务器的话,客户机会
使用169.254.0.0网段的IP,临时使用..
(2)DHCPOFFER 当网络中任何一个DHCP服务器收到客户端的DHCPDISCOVER信息后,会对自己的IP段地址进行检查,如果该DHCP服务器有空闲的IP地址
的话,就会将自己地址池中的IP随机抽取一个然后以广播的形式给客户端...
(3)DHCPREQUEST 当客户端收到第一个由DHCP服务器提供的应答信息后,就以广播的形式发送一个DHCP请求信息给网络中所有的DHCP服务器.在DHCP请求信息中包含已选择的DHCP服务器返回的IP地址...
(4)DHCPACK 一旦被选择的DHCP服务器接收到DHCP客户端的DHCP请求信息后,就将已保留的这个IP地址标示为已租用,然后也以广播方式发送一个DHCPACK信息给DHCP客户端,该客户端接收信息后就完成获得IP地址整个过程..
当DHCP客户租期达到50%的时候,重新更新租约,发送DHCPrequest包.当DHCP客户机租期达到87.5%时,进入重新申请状态,客户机发送DHCPrequest包.
下面我们进行DHCP SERVER的配置...
RedHat默认没有安装DHCP服务包,使用下面命令可查看本机已经安装的dhcp包...
[root@station195 ~]# rpm -qa |grep dhcp*
dhclient-3.0.5-21.el5
我们这只安装了dhcclient包,还需安装dhcp包.我们使用
yum
安装,你也可以挂载光盘安装.效果一样...
[root@station195 ~]# yum -y install dhcp
先来说下dhcpd.conf配置文件常用的功能和说明...
share-network 名称 {...} 定义超级作用域..
subnet 网络号 netmask 子网掩码 {...} 定义作用域(或IP子网)
range start-IP end-IP 定义IP范围...
host 主机名 {...} 定义要保定的主机...
group {...} 定义一组参数...
ddns-update-style 类型 定义所支持的DNS动态更新类型(必选)
allow/ignore client-updates 允许/忽略客户机更新DNS记录...
default-lease-time 数字 指定默认的租约期限...
max-lease-time 数字 指定最大租约期限...
hardware 硬件类型 MAC 地址 指定网卡接口类型和MAC地址...
server-name 主机名 通知DHCP客户端服务的的主机名...
fixed-address IP 地址 分配给客户端一个固定的IP地址...
其中ddns-update-style,allow/ignore client-update这两个参数只能用于全局...
subnet-mask 为客户端指定子网掩码...
domain-name 域名 为客户端指定DNS域名..
domain-name-servers IP 地址 为客户端指定DNS服务器的IP地址..
host-name 为客户端指定主机名...
routers IP 地址 为客户端指定默认网关...
broadcast-address 广播地址 为客户端指定广播地址...
netbios-name-servers IP 地址 为客户端指定WINS服务器的IP地址...
netbios-node-type 节点类型 为客户端指定节点类型...
ntp-server IP 地址 为客户端指定网络时间服务器的IP地址...
nis-server IP 地址 为客户端指定NIS服务器IP地址..
nis-domain 名称 为客户端指定所属的NIS域的名称...
如果不许DNS动态更新的话在网卡配置文件中写上PEERDNS = no即可...
我们接着来配置DHCP SERVER ...服务器IP:192.168.0.195,单个作用域非常简单,我们来配置一个192.168.0.0/24和192.168.1.0/24网段的超级作用域.超级作用域的名字叫zzu
[root@station195 ~]# cp -p /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
cp: overwrite `/etc/dhcpd.conf'? y
拷贝此文件将/etc/dhcpd.conf覆盖...
[root@station195 ~]# vim /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
shared-network zzu {
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option nis-domain "zzu.com";
option domain-name "zzu.com";
option domain-name-servers 202.104.226.68;
# option ntp-servers 192.168.0.10;
# option netbios-name-servers 192.168.0.11;
# option netbios-node-type 2;
range 192.168.0.2 192.168.0.2;
default-lease-time 21600;
max-lease-time 43200;
host ns {
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
}
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option nis-domain "zzu.com";
option domain-name "zzu.com";
option domain-name-servers 202.104.226.68;
# option ntp-servers 192.168.0.10;
# option netbios-name-servers 192.168.0.11;
# option netbios-node-type 2;
range 192.168.1.2 192.168.1.2;
default-lease-time 21600;
max-lease-time 43200;
}
}
写完后使用下面命令检测语法信息...
[root@station195 ~]# service dhcpd configtest (检测语法,如果报OK,证明语法正确)
[root@station195 ~]# service dhcpd restart (或者将restart改为reload,效果一样,都是重新启动服务)
在你每次修改过配置文件后一定要重新启动服务,否则不生效...大家切记....
我们这儿为了演示效果选了两个网段的地址,每个网段之选其中一个地址.当第一个网段的IP用完了,其他主机会自动去第二个网段去获取.还有救是
用Linux做DHCP服务器时,客户端获取地址都是从后往前一个个获取,而用windows做DHCP时,客户端获取IP是从前往后获取,这个大家注意一下...
我们使用windows2003进行测试...
client1:
C:\>ipconfig /release (释放一下地址)
C:\>ipconfig /renew (重新获取一下地址)
C:\>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : user1
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : Yes
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : zzu.com
Ethernet adapter vm2:
Connection-specific DNS Suffix . : zzu.com
Description . . . . . . . . . . . : VMware Accelerated AMD PCNet Adapter
Physical Address. . . . . . . . . : 00-0C-29-B0-73-00
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.1.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
DHCP Server . . . . . . . . . . . : 192.168.0.195
DNS Servers . . . . . . . . . . . : 202.104.226.68
Lease Obtained. . . . . . . . . . : 2010年3月6日 18:54:55
Lease Expires . . . . . . . . . . : 2010年3月7日 0:54:55
client2:
C:\>ipconfig /release (释放一下地址)
C:\>ipconfig /renew (重新获取一下地址)
c:\>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : user2
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : Yes
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : zzu.com
Ethernet adapter vm2:
Connection-specific DNS Suffix . : zzu.com
Description . . . . . . . . . . . : VMware Accelerated AMD PCNet Adapter
Physical Address. . . . . . . . . : 00-0C-29-49-4D-66
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
DHCP Server . . . . . . . . . . . : 192.168.0.195
DNS Servers . . . . . . . . . . . : 202.104.226.68
Lease Obtained. . . . . . . . . . : 2010年3月6日 18:55:34
Lease Expires . . . . . . . . . . : 2010年3月7日 0:55:34
测试结果我们可以看见是成功的....这儿只是做个测试给大家看看,在实际工作当中,在做DHCP中继的时候,会用到超级作用域...做DHCP中继也很简单,先编辑/etc/sysctl.conf..具体步骤如下..
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(此处默认是0,修改为1,表示允许转发..)
#sysctl -p(修改完配置文件不会立即生效,使用此命令读取一下配置文件,使其生效..)
然后编辑/etc/syayconfig/dhcrelay文件..
#vim /etc/sysconfig/dhcrelay
INTERFACES = "eth0 eth1" (将本机网卡的名字写上去)
DHCPSERVERS = "DHCP server IP" (写上DHCP server的IP地址)
#service dhcrelay restart(开启中继功能..)
这样DHCP中继就做好了,是不是很简单啊...
如果想把一个IP绑定到某个主机只需将客户机的MAC和相应的IP写入host选项中即可,还可同时将多主机绑定,需要复制host那个选项,
多写几行就搞定了so easy.这儿就不再演示了.如果你用linux客户端进行测试使用下面的命令
[root@station195 ~]# dhclient -d eth0 (假如我们这网卡的名字是eth0的话.使用此命令可显示网卡获取IP地址时的详细信息.此命令执行后不会退出,因为我们使用了-d选项,去掉-d就会自动获取IP地址,无论获取到还是获取不到都会退出,并且显示详细信息...)
如果你的网路中有多种操作系统,并且希望不同的操作系统获取不同网段的IP的话我们得这么定义,在/etc/dhcpd.conf文件中写入.我这儿只写让
windows操作系统获取到的IP...
class "windows" {
match if substring (option vendor-class-identifer,0,4)="MSFT";
}
pool { allow members of "windows";
range startIP endIP;
}