Linux下dhcp服务器搭建

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................

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。