DHCP

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时(基于rarp协议广播,rarp协议即由mac地址到ip地址的地址解析),才会根据实现定义的地址池向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

工作流程:基于广播的方式,dhcp不可以跨网段工作

1、Client:dhcp discover
    客户端发送请求报文
2、Server: dhcp offer
    服务端响应报文,向客户端提供IP/Netmask,GW, DNS Server,还可以有 NTP Server, Wins Server。。。
3、Client:dhcp request
    客户端发送确认报文,确认使用dhcp服务器提供的哪个地址。
4、Server:dhcp ack
    服务器端确认客户端可使用此地址

lease time:租约期限;

客户端从服务端获取地址以后,此地址的可使用时长,客户端在使用期限到达一半的时候向服务器端发送续租请求,如果第一次请求为得到响应,则继续使用此地址待剩余租期的一半时间时再次向服务端发送续租请求,依次类推,直到获得续租响应为止,得到续租响应以后租期会重新从最初租约期限开始,再次到达租约期限一般的时候重新发起续租请求。如果直到租约到期还为得到续租响应的话,客户端则会在租约期限的93.75时再次向服务端发送申请新的地址请求。

dhcp relay:dhcp中继

由代理服务路由器隔开的两个局域网,且两个局域网之间可以相互通信,其中局域网1启动一个dhcp服务器,局域网2的地址请求统统发往中间代理,这个中间代理接收到局域网2广播地址的请求之后,由单播形式将请求转发至局域网1中的dhcp服务器,然后得到dhcp服务器的单播形式的响应。继而中间代理再通过广播形式向局域网2中响应请求。整个工作流程中中间代理和局域网1中的dhcp服务器通信都是单播形式的,和局域网2的通信都是广播形式的。就就叫做dhcp relay server

dhcp协议的实现

dhcp:(isc.org) – The dhcp package provides the ISC DHCP service and relay agent.
dnsmasq:(dns, dhcp) – Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server. It is designed to provide DNS and, optionally, DHCP, to a small network.

程序环境

dhcp server:dhcp服务
    /usr/sbin/dhcpd
    IPV4网络:
        /etc/dhcp/dhcpd.conf
        /usr/lib/systemd/system/dhcpd.service
    IPV6网络:
        /etc/dhcp/dhcpd6.conf
        /usr/lib/systemd/system/dhcpd6.service
dhcrelay:dhcp代理
    /usr/sbin/dhcrelay
    /usr/lib/systemd/system/dhcrelay.service

监听的地址和端口:

Server: 67/udp
Client: 68/udp

配置文件:/etc/dhcp/dhcpd.conf

配置指令:
    option选项:配置给客户端的相信息
    指令:定义dhcp server的工作特性
配置级别:
    全局配置
    子网配置
    主机配置
常用的配置:
    default-lease-time 600; 默认租约期限
    max-lease-time 7200; 最大租约期限
    option domain-name "search_domain.tld"; 指定搜索域
    option domain-name-servers DNS_SERVER1, DNS_SERVER2, DNS_SERVER3; 指明配置给客户端的dns服务地址
    option routers GW1, GW2, ...; 配置给客户端的默认网关
    option broadcast-address BROADCAST_ADDRESS; 配置给客户端的广播地址

定义网络作用域,即一个子网,主要用于指明地址池;
    subnet NETWORK  netmask MASK {  IP和掩码
        range START_IP END_IP; 起始地址IP和结束地址IP
    }  

为某一个地址固定分配一个地址,固定ip的优先级比subnet优先级高,切subnet的网关配置对固定ip不生效
    host passacaglia { 
        hardware ethernet 0:0:c0:5d:bd:95; 主机的mac地址
        fixed-address IP_ADDR; 要分配给主机的固定IP地址
    }

其他配置指令
    filename:指明引导文件名称;
    next-server:指明引导文件所在的服务器的主机IP;

        filename “pxelinux.0";
        next-server 10.1.0.6;
            tftp server
配置示例:
]# yum install dhcp -y 安装服务程序
]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 复制配置文件样本到配置文件目录
]# vim /etc/dhcp/dhcpd.conf
    option domain-name "ali.com"; 搜索域
    option domain-name-servers 192.168.25.138,8.8.8.8,114.114.114.114; 指明配置给客户端的dns服务地址
    option routers 192.168.25.138; 指明配置给客户端的网关


    default-lease-time 3600; 默认租约期限
    max-lease-time 7200;最大租约期限

    log-facility local7; 日志发送位置

    subnet 192.168.25.0 netmask 255.255.255.0 { 定义一个子网网段和网关
    range 192.168.25.143 192.168.25.150; 指定起始ip和结束ip
    option routers 192.168.25.200; 在子网中指明的网关优先级高
    }

    :.,$s/^[[:space:]]*[#&]/#/g 在配置文件中使用vim命令注释掉其他行

]# service dhcpd start 启动服务
]# ss -unl 查看udp67号端口是否已经打开
]# 手动设置虚拟机服务器端和客户端的网络接口为vmnet1 然后启动客户端主机
]# dhclient -d 客户端执行命令进行测试 查看是否获得地址池中的地址,注意测试时需要关闭虚拟机的dhcp服务
]# route -n 客户端执行命令进行测试 查看是否获得指定的网关,注意测试时需要关闭虚拟机的dhcp服务
配置示例,给一个地址固定的ip地址
]# ifconfig  先查看一个主机的mac地址
    ether 00:0c:29:5f:86:eb
]# vim /etc/dhcp/dhcpd.conf 编辑配置文件
    host fantasia {
        hardware ethernet 00:0c:29:5f:86:eb; 主机的mac地址
        fixed-address 192.168.25.155; 需要给其配置的固定ip可以是地址池之外的ip
        option routers 192.168.25.100;指明配置给客户端的网关
    }
]# service dhcpd restart 重启dhcp服务   
]# dhclient -d 响应的mac地址的客户端进行测试
]# route -n 客户端执行命令进行测试 查看是否获得指定的网关

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/58173

(1)
M20-1马星M20-1马星
上一篇 2016-11-07 10:51
下一篇 2016-11-07 10:57

相关推荐

  • M20 – 1- 第二周博客(2):Linux的文件系统与结构

    Linux系统对于一个初学者来说,其实并不那么容易.所以了解其系统的结构,及其表示的含义是非常重要的.否则安装好系统后,都无从下手.也不知道怎么办。下面介绍一下Linux 的目录结构.及每个目录表示的含义.方便初学者学习和使用Linux系统。 从上图可以看出Linux的目录结构属于树状型的,是否已经对Linux的结构有个大概的认识了呢,接下来讲的是这些目录中…

    Linux干货 2016-08-02
  • 相关练习

    1、请使用命令行展开功能来完成以下练习:    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d  mkdir /tmp/{a,b}_{c,d}    (2)、创建/tmp/mylinux目录下的:  mkdir -pv /tmp/mylinux/{bin,boot/grub,de…

    Linux干货 2016-11-05
  • Linux网络配置基础二(网络模块与nmcli命令)

    Linux网络配置基础二 相关命令 lsmod命令 lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。第一列:表示模块的名称第二列:表示模块的大小第三列:表示…

    Linux干货 2016-09-09
  • 集中练习4-bash脚本、计划任务

    集中练习4-bash脚本、计划任务

    Linux干货 2017-10-27
  • find—查找条件

    find—查找条件    目 录 一、根据时间戳查找: 二、根据权限查找 三、根据文件所属人owner,文件所属组group查找 四、根据搜索层级查找 五、根据文件名查找 六、根据文件类型查找    find实时查找工具,通过遍历指定路径完成文件查找 (1)工作特点: 查找速度略慢 精确查找 实时查找 可以只…

    Linux干货 2017-08-13
  • 在CentOS7.3上编译安装httpd-2.4.27

    在CentOS7.3上编译安装httpd-2.4.27     在实际生产中,软件厂商并不总会提供针对Linux平台的rpm软件包,有时会以源码的形式发布软件。源码,比如c语言的源码,可以跨平台运行。在只能获得源码的情况下,那么就需要用户根据自己的平台,进行手动的编译安装。此时,需要借助一些专门的编译工具,而Linux…

    Linux干货 2017-08-06