Linux下dhcp的配置
一.dhcp的介绍
1.做用
为电脑自动分配ip地址
2. dhcp做用:
1>减小管理员的工做量
2>减少输入错误的可能
3>避免IP的冲突
4>当网络更改IP地址段时,不须要从新配置每台计算机的IP
5>提升了IP地址的利用率
3.DHCP动做原理
1>DHCP的几个名词
DHCP客户:DHCP客户是经过DHCP来得到网络配置参数的Internet主机,一般就是所说的普通用户的工做站
DHCP服务器:DHCP服务器是提供网络设置参数给DHCP客户的Internet主机
2>租约的产生
客户端在启动时会发生租约的产生过程,它的工做原理可使用下图来归纳:

(1)客户端请求IP租约.
在客户端链接上网络时会在网络中广播一个DHCP Discover包,该数据包使用的是UDP的67端口,由于自己尚未IP地址,因此广播时它的IP地址是:0.0.0.0,目的IP地址是255.255.255.255,该包还包含客户端的MAC地址和计算机主机名
(2)服务器响应
当服务器收到客户端发送的请求IP地址的数据包以后,就会在本身的IP数据库中查找是否有可用的IP地址,若是有的话,DHCP服务器就广播一个DHCP Offer包,该数据包使用的是UDP的68端口,源IP地址为DHCP服务器的IP地址,目的IP地址为255.255.255.255,发送出去的Offer包内包含的内容有:DHCP客户端的MAC地址;DHCP服务器提供的合法的IP地址;子网掩码;租约期限;服务器IP地址
(3)客户端选择ip地址
有时一个网段内会有多个DHCP服务器,也就是说,在客户端发送Discover时会有多个DHCP服务器响应,这就须要DHCP客户端选择一个IP地址来使用,系统规定DHCP客户端会从接收到的第一个DHCP Offer包中选择IP地址,而且发送DHCP Request包进行广播,代表它使用ip地址的服务器,该数据包使用UDP的67端口,源IP地址0.0.0.0,目的IP地址:255.255.255.255
(4)服务器确认
DHCP服务器在收到DHCP Request包后,会以ACK包向客户端广播确认成功,该数据包使用UDP的68端口,源IP为DHCP服务器IP地址,目的IP为255.255.255.255,当客户端收到DHCP ACK后,就使用获得的IP地址,这时整个租约产生过程就成功结束.
3>关于租约的更新
当客户端从新启动时客户端会从新提出租约的租用
当租约到达50%时,也须要从新更新租约,这里客户端直接向服务器端发送DHCP Request包,要求更新租约,若是更新不成功的话,则客户端会再次等到租约的87.5%时,会再次进行租约的更新,但此次DHCP客户端是向网络上全部的DHCP服务器进行广播来更新现有的租约.
二. DHCP的配置
[root@localhost ~]# yum install -y dhcp
Loaded plugins: katello, product-id, security, subscription-manager
Updating certificate-based repositories.
[root@localhost ~]# rpm -ql dhcp
/etc/dhcpd.conf //dhcp的配置文件
/etc/rc.d/init.d/dhcpd //dhcp 的启动脚本
/etc/rc.d/init.d/dhcrelay
/usr/share/doc/dhcp-3.0.5 //帮助文档/var/lib/dhcpd/dhcpd.leases //dhcp租约
[root@localhost ~]# vim /etc/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcpd.conf
cp: overwrite `/etc/dhcpd.conf'? y
[root@localhost ~]# vim /etc/dhcpd.conf
ddns-update-style interim; //定义所支持的DNS动态更新的型{none|adhoc|interim
ignore client-updates; //allow/ignore容许/忽略客户机更新DNS记录
subnet 172.16.0.0 netmask 255.255.0.0 { //定义dhcp服务的子网
# --- default gateway
option routers 172.16.1.1; / /定义默认路由
option subnet-mask 255.255.0.0; //定义分配的子网掩码
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 192.168.1.1; #定义dns地址
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 172.16.1.20 172.16.1.200; //ip地址池,从大向小分配ip
default-lease-time 21600; //默认租约时间,单位:秒
max-lease-time 43200; //最大租约时间
# we want the nameserver to appear at a fixed address
host ns { //静态分配ip
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD; // 写一台固定机器的mac地址
fixed-address 207.175.42.254; //写这台机器的ip地址,分配固定ip
}
}
[root@localhost ~]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]
获取ip在另一个redhat linux上,把ip设置成dhcp主机的ip地址。[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eth0 ifdown-isdn ifup-aliases ifup-plip ifup-wireless
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp //这里改成dhcp方式
HWADDR=00:0c:29:9f:44:0a
ONBOOT=yes
NETMASK=255.255.0.0
IPADDR=172.16.63.3
TYPE=Ethernet
[root@localhost network-scripts]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:E6:BA:E8
inet addr:172.16.1.200 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fee6:bae8/64 Scope:Link
//Ip地址变成了172.16.1.200