DHCP

一、DHCP简介

1.什么是DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用户简化计算机IP地址管理的标准;

2.DHCP优缺点

优点:不需要手工分配IP、可以设定保留地址的客户及参数、安全可靠、客户机移动回释放旧的IP、路由器可以转发DHCP请求
缺点:不能发现非DHCP用户正在使用的IP

3.租约过程:DHCP协议使用UDP端口67(服务端口) 和 UDP端口68(客户端)进行通信,DHCP协议通信使用广播

1.IP地址租约申请阶段:
客户端发起DHCPDISCOVER广播消息,使用0.0.0.0作为源ip,请求中包含客户端的MAC地址和计算机名,用于DHCP服务器的识别
2.IP地址租约提供阶段:
接收到DHCPDISCOVER广播的服务器检测自己配置,如果有有效的DHCP作用于和富裕的IP,则发起DHCPOFFER广播来回应发起DHCPDISCOVER的客户端
3.IP地址租约选择阶段:
如果多台DHCP服务器返回DHCPOOFFER,则DHCP客户端只接受第一个收到的DHCPOFFER提供的信息,以广播的方式回答一个DHCPREQUEST请求
DHCPREQEST中包含DHCP客户端向它所选定的DHCP服务器请求IP的内容,之所以以广播回答,是为了通知所有DHCP服务器,DHCP客户端将选择某台DHCP服务器提供的IP
4.IP地址租约确认阶段
提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPREQUEST广播后,会发送最后的DHCPACK广播消息进行最后的确认;

4.相关术语

1.作用域:是一个完整连续的可用IP地址范围
2.地址池:包含可以分配给计算机使用的IP地址范围
3.租约:DHCP服务器指定的时间长度,再次租约期内,客户端可以使用分配给它的IP,如果租约到期,客户端必须更新IP租约
4.保留地址:将提供一个动态地址和其MAC地址相关联的手段,用于保证次网卡长期使用某个IP
5.选项类型:其他参数,如:网管、DNS服务器等
6.超级作用域:可以对多个作用域统一管理,包含多个作用域

二、安装和配置

1.所需安装包

1.dhcp
2.dhcp-common

2./etc/dhcp/dhcpd.conf文件详解

1.复制模板文件:cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf /etc/dhcp/dhcpd.conf

3.配置实例:

1.要求如下

①分配地址池:192.168.9.60 ~ 192.168.9.160
②子网掩码:255.255.255.0
③网关地址:192.168.9.1
④DNS服务器:192.168.9.2
⑤默认租约有效期:1天(86400秒)
⑥最大租约有效期:7天(604800秒)
⑦给主机名为Windows的客户机(MAC地址为:00:0C:29:51:AF:B8),保留使用192.168.9.150
⑧支持DNS动态更新模式
⑨忽略客户机更新DNS记录
⑩DNS域名:p-pp.cn

2.配置步骤

1.复制模板:cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf /etc/dhcp/dhcpd.conf

2.修改/etc/dhcp/dhcpd.conf

ddns-update-style interim; # 支持动态更新DNS
ignore client-updates; # 忽略客户机更新DNS记录
subnet 192.168.9.6 netmask 255.255.255.0 {
option routers 192.168.9.1; # 网关
option subent-mask 255.255.255.0; # 子网掩码
option domain-name "p-pp.cn"; # DNS域名
option time-offset -18000; # 格林威治时间的偏移时间,默认为秒
option domain-name-servers 192.168.9.2; # DNS服务器
range 192.168.9.60 192.168.9.160; # 服务器分配地址的范围
default-lease-time 86400; # 默认租约有效天
max-lease-time 604800; # 最大租约有效期
}
host windows { # windows只是一个名字
hardware ethernet 00-0C-29-51-AF-B8; # 保留地址的MAC地址
fixed-address 192.168.9.150; # 为计算机分配的IP地址
}

三、客户端获取IP地址

1.Linux

1.dhclient -d eth0
2./etc/sysconfig/network-scripts/ifcfg-eth0 修改配置文件,改为自动获取

2.Windows

1.设置自动获取IP、自动获取DNS
2.打开命令终端
1.ipconfig /renew # 申请IP
2.ipconfig /all # 查看IP地址
3.ipconfig /release # 释放IP

四、查看租约

1./var/lib/dhcpd/dhcpd.leases存放着DHCP地址租约数据库,租约数据库使用的格林威治标准时间

五、DHCP中继代理

1.DHCP代理简介

在大型网络中,存在多个子网,客户机通过广播获取IP,但是广播不能跨子网的,因此,如果DHCP服务器和客户端存在不同子网,就无法获取IP地址

2.DHCP中继配置实例

公司内部有两个子网,分别是,192.168.9.0 和 192.168.30.0,DHCP位于192.168.9.0的子网上,通过配置DHCP中继,使192.168.30.0的子网客户机可以获取IP
公司环境如图所示:

3.配置步骤

1.编辑/etc/dhcp/dhcpd.conf文件

shared-network 0-1 { # 用来告知一些子网是否分享相同网络,也就是超级域
subnet 192.168.9.0 netmask 255.255.255.0 {
option routers 192.168.9.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.9.255;
option domain-name "p-pp.cn";
option time-offset -18000;
option domain-name-servers 192.168.9.2;
range 192.168.9.60 192.168.9.160;
default-lease-time 86400;
max-lease-time 604800;
}
subnet 192.168.30.0 netmask 255.255.255.0 {
option routers 192.168.30.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.30.255;
option domain-name "p-pp.cn";
option time-offset -18000;
option domain-name-servers 192.168.30.2;
range 192.168.30.60 192.168.30.160;
default-lease-time 86400;
max-lease-time 604800;
}
}

2.重启dhcpd服务

3.配置路由转发功能

1.配置IP地址:ifconfig ens37 192.168.3.50/24
2.安装dhcp
3.编辑/etc/sysctl.conf 文件在文件添加一行内容为:

“net.ipv4.ip_forward=1”
开启路由转发功能
sysctl -p:立即生效

4.配置dhcp中继

1.dhcrelay DHCP服务器的IP
2. netstat -tunlp |grep dhcrelay

6、DHCP的更多相关文章

  1. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  2. 计算机网络九:IP地址、子网掩码、默认网关、DHCP服务器、DNS服务器、WINS服务器

    一.IP地址与子网掩码 1.IP地址 ipv4下,ip地址=网络号+主机号. 2.子网掩码         子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个I ...

  3. 【入门】广电行业DNS、DHCP解决方案详解(一)——历史及现状篇

    广电发展历史 单项网络 双向网络 智能网络 广电网络现状 广电网络典型特征 接入技术混杂 承载业务多样化 业务终端错综复杂 其他 网络现状模型 总结 广电发展历史 广电就是广播电视,广电发展可以分为三 ...

  4. 【入门】广电行业DNS、DHCP解决方案详解(三)——DNS部署架构及案

    [入门]广电行业DNS.DHCP解决方案详解(三)——DNS部署架构及案 DNS系统部署架构 宽带业务DNS架构 互动业务DNS架构 案例介绍 案例一 案例二 本篇我们将先介绍DNS系统部署架构体系, ...

  5. Linux系统学习 十一、DHCP服务器—相关文件、配置文件、服务器配置

    2.DHCP服务器相关文件 安装SHCP服务器 yum install dhcp 对应的端口 端口号: ipv4 udp67.udp68(不推荐改端口) ipv6 udp546.udp547(暂时还没 ...

  6. DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)

    原文https://blog.51cto.com/5167020/2312718 序:DHCP服务相对简单,写本文的目的是为了讲一些DHCP安全方面的技术. 1.DHCP基础 DHCP 全称动态主机配 ...

  7. Cisco基础(一):Vlan的划分、配置trunk中继链路、以太通道配置、DHCP服务配置

    一.Vlan的划分 目标: VLAN(虚拟局域网)是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段.一个VLAN可以在 一个交换机或者跨交换机实现 ...

  8. 18、DHCP

    Dynamic Host Configuration Protocol DHCP的前身:Bootstrap DHCP的封装 DHCP基本知识点 1 .DHCP协议在RFC2131中定义,使用udp协议 ...

  9. 24、dhcp服务搭建

    1.dhcp介绍: DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配 TCP/IP 信息的网络协 ...

随机推荐

  1. Smartmontools硬盘检测工具

    安装: 下载 命令使用: 查看驱动器信息: $ smartctl -i D: smartctl 6.6 2017-11-05 r4594 [x86_64-w64-mingw32-w10-b17134] ...

  2. SQL优化参考

    1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  3. 今天就整一个bug了

    BeanPostProcessor加载次序及其对Bean造成的影响分析 SSM整合出现not found for dependency: expected at least 1 bean which ...

  4. kubernetes 实战6_命令_Share Process Namespace between Containers in a Pod&Translate a Docker Compose File to Kubernetes Resources

    Share Process Namespace between Containers in a Pod how to configure process namespace sharing for a ...

  5. Transaction

    SqlTransaction——事务详解 事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态.在事务处理术语中,事务要么提交,要么中止.若要提交事务,所有参与者都必须保证对数据的任 ...

  6. Linux shell 计算两个文件的并集、交集、差集

    假设我们现在有两个文件 a.txt .b.txt a.txt 中的内容如下: a c 1 3 d 4 b.txt 中的内容如下: a b e 2 1 5 # Example 01 计算并集: [roo ...

  7. 记时,耗时,Stopwatch

    public static string InvokeStopwatch(Action function) { System.Diagnostics.Stopwatch sw = new System ...

  8. WebSocket 教程

    转载自:http://www.ruanyifeng.com/blog/2017/05/websocket.html WebSocket 是一种网络通信协议,很多高级功能都需要它. 本文介绍 WebSo ...

  9. glfw3native.h and glfw3.h

    https://www.glfw.org/docs/latest/files.html

  10. Django模板操作

    进行加减运算 def index(request): a = request.GET['a'] b = request.GET['b'] c = int(a) + int(b) return Http ...