DHCP服务
DHCP服务
王弘毅 发表于11个月前
DHCP服务
  • 发表于 11个月前
  • 阅读 19
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

Dynamic Host Configuration Protocol  动态主机配置协议

DHCP服务器工作原理:

DHCP Client发现阶段:

       即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。

注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址配置本机地址。

169.254.0.0/16是windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。

早先的Linux上并不会产生这条路由,现在有这条路由大概是为了和windows兼容。

[root@xuegod63 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

DHCP Server 提供阶段:

      DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息

DHCP Client 确认阶段:

      即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址

DHCP Server确认阶段:

      即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址

DHCP Client重新登录网络:

      当DHCP Client重新登录后,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

DHCP Client更新租约:

      DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

【安装之前,虚拟机环境,分别添加1块网卡,并且和主网独立的网卡】

安装DHCP服务:

[root@why188 ~]# yum install -y dhcp*
[root@why188 ~]# rpm -qa|grep dhcp
dhcp-common-4.1.1-51.P1.el6.centos.x86_64
dhcp-4.1.1-51.P1.el6.centos.x86_64
dhcp-devel-4.1.1-51.P1.el6.centos.x86_64

修改配置文件:

【此时服务是重启不起来的,启动失败的原因是 dhcp服务器配置的IP地址和默认配置文件里定义的地址段不相同。在启动DHCP服务之前,需要给DHCP Server配置一个静态的IP地址】

保证开机启动:

chkconfig dhcpd on   #配置的服务要保证开机启动

模版配置文件模版

/usr/share/doc/dhcp-4.1.1 /dhcpd.conf.sample【一切以.sample】
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

dhcpd.conf内容

说明:

dhcp 范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位

置,并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外

概念与协议:

作用域:可以分配IP的范围 subnet

地址池:可以分配给客户端的IP,range包括的IP

保留地址:指定某个客户端使用一个特定IP,通过host配置的

租约(时间):客户端可以使用这个IP地址的时间

root@why188 dhcp-4.1.1]# cat /etc/dhcp/dhcpd.conf
#dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0{-----------IP作用域,为地址分配
range 192.168.1.100 192.168.1.200;------------------地址池
option domain-name-servers 192.168.1.1;-------------指定DNS服务器
option domain-name "why";---------------------------指定默认域
option routers 192.168.1.1;-------------------------客户端指定默认网关
option broadcast-address 192.168.1.255;-------------广播地址
default-lease-time 600;-----------------------------租约时间最大值
max-lease-time 7200;--------------------------------默认IP续租时间
}

DHCP服务端配置静态IP:

[root@why188 dhcp-4.1.1]# ifconfig eth1 192.168.1.20/24

eth1      Link encap:Ethernet  HWaddr 00:50:56:3E:67:31

          inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::250:56ff:fe3e:6731/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:971 errors:0 dropped:0 overruns:0 frame:0

          TX packets:213 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:128066 (125.0 KiB)  TX bytes:37422 (36.5 KiB)

启动服务:

[root@why188 dhcp-4.1.1]# /etc/init.d/dhcpd start

Starting dhcpd:                                            [  OK  ]

添加开机启动服务:

[root@why188 dhcp-4.1.1]# chkconfig dhcpd on

[root@why188 dhcp-4.1.1]# chkconfig --list |grep dhcpd
dhcpd              0:off    1:off    2:on    3:on    4:on    5:on    6:off
dhcpd6             0:off    1:off    2:off    3:off    4:off    5:off    6:off

配置客户机网络环境:

【配置客户端虚拟机网络环境】

复制网卡配置文件:

cd /etc/sysconfig/network-script/
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1---------删除网卡mac地址,删除UUID,修改BOOTPROTO=dhcp
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
IPV6INIT=no
USERCTL=no

DHCP client重启网络服务,通过获取IP地址:

[root@why189 network-scripts]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 192.168.0.189 is already in use for device eth0...

                                                           [  OK  ]
Bringing up interface eth1:

Determining IP information for eth1... done.
                                                           [  OK  ]
[root@why189 network-scripts]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:69:8C:F9 
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:8cf9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:807 errors:0 dropped:0 overruns:0 frame:0
          TX packets:414 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:119950 (117.1 KiB)  TX bytes:50698 (49.5 KiB)

查看DNS和域名:

[root@why189 etc]# cat resolv.conf
; generated by /sbin/dhclient-script
search why
nameserver 192.168.1.1

服务端查看租约信息:

[root@why188 etc]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.1.1-P1
lease 192.168.1.100 {
  starts 6 2016/11/19 19:39:18;
  ends 6 2016/11/19 19:49:18;
  tstp 6 2016/11/19 19:49:18;
  cltt 6 2016/11/19 19:39:18;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:29:69:8c:f9;

}

固定DHCP client IP方法:【通过IP地址和mac地址绑定】

在DHCP Server dhcpd.conf 配置文件中添加:⒈host 声明;⒉hardware;⒊fixed-address

找到对应的子网范围:

在原有的subnet中添加一个host xxx

比如:

[root@why188 ~]# cat /etc/dhcp/dhcpd.conf
#dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "why";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
host why188{---------------------------------添加hostXXX
hardware ethernet 00:50:56:25:C1:78;---------添加mac地址
fixed-address 192.168.1.115;-----------------添加绑定的固定IP
}
}

修改完后重启服务:

[root@why188 ~]# /etc/init.d/dhcpd restart
DHCP Client:
[root@why189 log]# service network restart

DHCP在message中整个通信过程:

/var/log/message
Nov 20 05:30:43 why189 abrtd: Init complete, entering main loop
Nov 20 05:35:13 why189 dhclient[1389]: DHCPREQUEST on eth1 to 192.168.1.20 port 67 (xid=0x2fbe697e)
Nov 20 05:35:13 why189 dhclient[1389]: DHCPACK from 192.168.1.20 (xid=0x2fbe697e)
Nov 20 05:35:15 why189 dhclient[1389]: bound to 192.168.1.110 -- renewal in 285 seconds.
Nov 20 05:40:00 why189 dhclient[1389]: DHCPREQUEST on eth1 to 192.168.1.20 port 67 (xid=0x2fbe697e)
Nov 20 05:40:00 why189 dhclient[1389]: DHCPNAK from 192.168.1.20 (xid=0x2fbe697e)
Nov 20 05:40:00 why189 dhclient[1389]: DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 3 (xid=0x49194d03)
Nov 20 05:40:00 why189 dhclient[1389]: DHCPOFFER from 192.168.1.20
Nov 20 05:40:00 why189 dhclient[1389]: DHCPREQUEST on eth1 to 255.255.255.255 port 67 (xid=0x49194d03)

 

标签: Linux dhcp
共有 人打赏支持
粉丝 4
博文 3
码字总数 2427
×
王弘毅
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: