1、什么是dhcp
dhcp就是动态主机配置协议,dhcp服务器可以动态的为客户机分配IP地址,子网掩码,网关以及DNS等信息。主要用于在局域网中动态的为所有电脑分配IP地址。
2、dhcp-工作流程
1)dhcp客户机在局域网内以广播的方式发送dhcp discover封包,局域网内每一台安装了TCP/IP协议的电脑都能收到该封包,一般电脑直接丢弃,只有dhcp服务器予以响应。
2)dhcp收到dhcp discover封包后,会从地址池中挑出一个尚未出租的IP地址,然后附上其他的相关设置以dhcp offer的形式在该网段中广播。
3)若一个局域网中存在多台dhcp服务器,则这多台dhcp服务器在收到dhcp discover封包后,都会响应客户机,客户机只接受第一个收到的dhcp offer提供的信息,然后以广播的方式发送dhcp request数据封包,请求服务器分配改地址。同时客户机还会发送ARP广播数据包,查询网络上是否有其他客户机在使用该IP地址,若果发现该IP地址已经被占用,则向服务器发送dhcp decline数据包,拒绝接收器dhcp offer,并重新广播dhcp discover数据封包。
4)当dhcp服务器收到客户机的dhcp request信息后,便向客户机发送包含了IP地址和其他设置的dhcp ack数据封包,这个也是以广播的形式发送,然后租约正式生效。没有被选中的dhcp服务器想收回曾经发出的IP地址。
5)以后DHCP客户机每次重新登录网络时,就不需要再发送dhcp discover发现信息了,而是直接发送包含前一次所分配的IP地址的dhcp request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个dhcp ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个dhcp nack否认信息。当原来的DHCP客户机收到此dhcp nack否认信息后,它就必须重新发送dhcp discover发现信息来请求新的IP地址。
6)DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
下面来看一下如何在centOS6上搭建dhcp服务器
首先需要安装dhcp包
[root@beibei yum.repos.d]# yum install dhcp -y & [1] 2251
安装好后有这么几个文件需要关注
/etc/dhcp/dhcpd.conf #dhcpd服务的配置文件
/var/lib/dhcpd/dhcpd.leases #租约数据库文件,租约的相关信息都保存在这里
/etc/sysconfig/dhcpd #配置dhcp服务监听的端口
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample #dhcpd服务的配置文件样例
在配置环节主要是对/etc/dhcp/dhcpd.conf 这个文件进行相关的配置,为了省事,可以直接复制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample,然后进行相应的修改。
/etc/dhcp/dhcpd.conf的示例
#全局配置 option domain-name "baby.com"; option domain-name-servers 114.114.114.114; default-lease-time 600; max-lease-time 7200; option routers 192.168.10.1; log-facility local7; #局部配置,为指定的网段提供服务 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.199 192.168.10.255; option routers 192.168.10.1; option broadcast-address 192.168.10.255; #该网段中,为指定客户机绑定IP地址 host local1 { hardware ethernet 00:0c:29:82:43:8a; fixed-address 192.168.10.119; } } #为指定客户机绑定IP地址 host local2 { hardware ethernet 00:0c:29:83:65:3c; fixed-address 192.168.10.120; }
常用参数:
option domain-name #域名搜索列表,类似于/etc/resolv.conf中的search
option domain-name-servers #域名服务器地址,多个的话用逗号隔开
option routers #网关
option broadcasst-address #广播地址
option subnet-mask #子网掩码
default-lease-time #默认租约期限,一般这项生效(以秒为单位)
max-lease-time #最大租约期限(以秒为单位)
log-facility #日志存储文件
range START_IP END_IP #地址池(可以在subnet中指定多个range,但多个range所定义IP范围不能重复)
常用声明:
subnet NETWORK netmask MASK {........} #局部配置,为指定的网段提供服务
host hostname {.......} #为指定客户机绑定IP地址(这项通常写在subnet 中)
host 中的参数:
hardware ethernet #mac地址
fixed-address #为其绑定的ip地址
在配置完上述信息后最好在/etc/sysconfig/dhcpd中指定dhcpd服务监听的端口,配置完成后可使用相关命令检查配置是否正确。
[root@beibei yum.repos.d]# service dhcpd configtest Syntax: OK
若显示Syntax: OK,则表示配置不存在语法错误,若报错,根据提示修正即可。
若修改了配置,想让服务不重启的情况下重读配置文件,可使用:
[root@beibei yum.repos.d]# service dhcpd force-reload Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] [root@beibei yum.repos.d]# ss -tunpl .... udp UNCONN 0 0 *:67 *:* users:(("dhcpd",2441,7)) ....
服务已经启动,看一下效果:
[root@beibei ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:17:01:eb brd ff:ff:ff:ff:ff:ff inet 192.168.10.199/24 brd 192.168.10.255 scope global eth0 inet6 fe80::20c:29ff:fe17:1eb/64 scope link valid_lft forever preferred_lft forever [root@beibei ~]# ip route list 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.199 169.254.0.0/16 dev eth0 scope link metric 1002 default via 192.168.10.1 dev eth0 [root@beibei ~]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script search baby.com nameserver 114.114.114.114
客户端的配置与服务器端配置文件中的设置一致,再来看一下另一台客户机,该客户机的IP地址与其MAC地址绑定
[root@beibei ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:82:43:8a brd ff:ff:ff:ff:ff:ff inet 192.168.10.119/24 brd 192.168.10.255 scope global eth0 inet6 fe80::20c:29ff:fe82:438a/64 scope link valid_lft forever preferred_lft forever
ok................
原文地址:http://ljbaby.blog.51cto.com/10002758/1640987