DHCP

Posted amonos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DHCP相关的知识,希望对你有一定的参考价值。

DHCP概述:

  DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层之上的应用,本文来学习DHCP协议实现原理。

  DHCP服务器端使用UDP的67号端口; DHCP 客户端使用UDP的68号端口。

  为什么使用DHCP?

  1. DHCP服务器用于为客户机动态分配IP地址,避免了TCP/IP网络中地址的冲突,便于对网络的IP地址进行管理;
  2. 在使用TCP/IP协议通信的网络中,每台计算机都必须至少有一个IP地址,这样才能与其他计算机通信。对于一个较大规模的网络来说,逐个地为每台计算机分配和设置IP地址,将是一件很麻烦的事情,也不便于管理和维护;
  3. 对于像笔记本这样的移动用户,经常从一个子网移动到另一个子网,需要不断地手动更换IP地址,很不方便;
  4. DHCP服务器通过动态的IP地址分配还能解决IP地址资源不足的情况,因此DHCP产生了。

DHCP工作原理:

技术分享图片

1、客户发出的IP租用请求报文

  DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCP DISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。

2、DHCP Server回应的IP租用提供报文

  任何接收到DHCP DISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCP OFFER广播包,提供一个IP地址。该广播包的源IP地址为DHCP服务器IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。

3、客户选择IP租用报文

  客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCP OFFER包,并向网络中广播一个 DHCP REQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。 所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。

Nslookup(name server lookup)是一个用来查询Internet域名服务器基础架构的信息程序。

  Nslookup有两种模式:交互模式和非交互模式。

  • 交互模式:允许用户查询域名服务器,获取各种关于主机和域名的信息或输出一个域内的主机列表;
    • 如果需要查询多个数据,可以使用交互模式。为第一个参数键入连字符(-),为第二个参数键入DNS服务器名称或者IP地址。省略使用默认DNS服务器名称;
  • 非交互模式:用于输出一个主机或域名的名字和要求信息。
    • 仅需要查询单一数据。键入要查找的域名或者IP;对于第二个参数键入DNS服务器名称或者IP地址。省略使用默认DNS服务器名称;

Nslookup 交互模式:

  nslookup的子命令:

  • NAME:打印有关事宜默认服务器的主机/域NAME的信息;
  • NAME1 NAME2:同上,但将NAME2作为服务器;
  • Help或?:打印有关常用命令信息;
  • set all:列出nslookup工具的常用选项的当前设置值;
  • set debug :打开调试模式,查询过程中会显示完整的响应包以及其中的交互包;默认为nodebug(关闭)
  • set d2:开启高级调试模式,会输出很多nslookup内部工作的信息,包括许多函数调用信息。默认值是nod2(关闭)
  • set defname:将域名附加到每个查询(追加缺省域名到单一的组成部分的查询请求(不包含句点的请求),缺省值是defname(追加)将默认的域名系统(DNS)域名附加到单个组件查找请求。单个组件是指不包含任何复合的组件。)
  • set recurse:询问查询的递归应答(如果没有信息则通知名称服务器查询其他服务器。缺省值是recurse)
  • set serach:向请求追加DNS域搜索列表中的域名系统(DNS域名),直到收到应答为止。该命令应用于如下情况:
    • 当设置和查找请求包含至少一个时期,但不是以跟踪期结束时。如果设置了set search,那么当查询的字串中只包含一个句点,且结尾非句点时,nslookup会将domain设置的域追加到查询字串的尾部来尝试查询;
  • set vc:发送请求到服务器始终使用虚拟电路。缺省值是 novc(没有虚拟电路)。
  • set domain=Name:将默认域名设置为Name(对于不包含"."的查询请求,都会自动在尾部追查此域)。缺省域名追加到查询请求,取决于 defname 和 search 选项的状态。如果搜索列表在其名称中至少包含两部分则域搜索列表包含缺省域的父域。
  • set srchlist=Name1/Name2/...:更改缺省域名为 Name1 参数指定的值,并且更改域搜索列表为 Name1、Name2......参数指定的名称。可以指定由斜杠分开的六个名称的最大值。使用 set all 命令显示名称列表。缺省值是在系统的 hostname、/etc/resolv.conf 或 LOCALDOMAIN 文件指定的值。注:该命令覆盖缺省域名和 set domain 命令选项的搜索列表。
  • set root=NAME:将根服务器设置为NAME,缺省值是 ns.nic.ddn.mil。
  • set retry=X:将重试次数设置为X(当请求的应答没有在 set timeout 命令指定的时间帧之内接收,则超时周期加倍,请求重新发送。该子命令控制超时之前请求发送的次数。缺省值是 4。)
  • set timeout=X:将初始超时间隔设置为X秒,缺省值是 5 秒。
  • set type=X:设置查询类型(如A、AAAA、A+AAAA、ANY、CNAME、MX、NS、PTR、SOA和SRV)缺省值是 A。
  • set class="X":更改查询类,该类别指定信息的协议组。而不同的类设定了不同的协议族。IN:Internet类(默认),CH:Chaos类,HS:Hesiod类 , ANY 指定以前列出的任何通配符。一般我们最长使用IN。而Hesiod之前仅在M.I.T(Massachusetts Institute of Technology,即麻省理工学院)范围内使用,现在甚至已经无人使用。而Chaos也几乎灭绝,曾经BIND套装用Chaos来协助检查版本号信息。
  • set msxfr:使用MS快速区域传送。
  • set ixfrver=x:用于IXFR传送请求的当前版本;
  • set port = X:DNS默认的服务端口是53,当某些特殊情况需要改变此端口时,可以通过此命令;
  • server NAME:将默认服务器改到指定的域名系统(DNS)域,使用当前默认服务器;
  • lserver NAME:将默认服务器设置为NAME,使用初始服务器;
  • root:将默认的服务器更改为域名系统 (DNS) 域名空间的根服务器(通常使用 ns.nic.ddn.mil 名称服务器。该命令是 lserver ns.nic.ddn.mil 的同义词。可以使用 set root 命令更改根服务器的名称)。
  • view FILE:对ls输出文件排序,并使用pg查看;
  • set [no]ignore:忽略数据包截断错误;
  • set querytype=X:与type=X相同,不区分大小写。
A 主机的因特网地址(IPv4)
AAAA 主机的因特网地址(IPv6)
ADSDB  Andrew文件系统数据库服务器记录
ATMA ATMA地址记录
ANY 设置查询条件为所有类型的记录。
CNAME 与别名对应的正式名称
HINFO 主机 CPU 和操作系统(用来说明映射到特定 DNS 主机名的 CPU 类型和操作系统类型的 RFC-1700 保留字符串类型,这个信息可以被应用程序通信协议使用。)
ISDN 域名对应的ISDN号码
KEY 安全性密钥记录
MINFO 邮箱或邮件列表信息
MG 邮件组记录
MR 改名的邮箱记录
MB 存放指定邮箱的服务器
MX 邮件交换器信息
NS 为指定区域的命名服务器
PTR 如果查询因特网地址则指向主机名;否则,指向其他信息
SIG 特征符记录
RP 域负责人信息
SOA  域的start-of-authority信息
TXT 文本信息
UINFO 用户信息
SRV TCP服务器信息记录
WKS 支持众所周知的服务
X25 域名对应的X.25地址记录
  • ls:{ ls [opt] DOMAIN [> FILE] |  ls [opt] DOMAIN [> >FILE] };为指定的 Domain 列出可获得的信息,有选择的创建或追加输出到 FileName 参数指定的文件。缺省输出包含主机名和它们的因特网地址、列出DOMAIN中的地址(可选:输出到文件FILE)
-t QueryType 列出指定类型的所有记录。有关QueryType的具体意义,请参看【12.3.3.5.14、 set querytype=X】
-a 列出规范名称和别名
-d 列出所有记录
-h 列出域中 CPU 和操作系统信息(与 -t HINFO 选项同义)
-s 列出域中众所周知的主机服务(与 -t WKS 选项同义)

Nslookup 交互模式示例:

  1、将域名解析成IP地址:

Nslookup 回车
Set qt=A 回车
要解析的域名

技术分享图片

  2、将“IP地址”反解析成“域名”

Nslookup 回车
Set qt=ptr 回车
要解析的IP地址
注意:qt必须小写

技术分享图片

  3、直接从另一个名称服务器进行查询

  若要直接查询另一个名称服务器,请使用 server 或 lserver 命令切换到该名称服务器。lserver 命令使用本地服务器获取切换目标服务器的地址,而 server 命令则使用当前的默认服务器获取该地址。

技术分享图片

  4、使用Nslookup转移整个区域 

  通过使用 ls 命令,Nslookup 可用于转移整个区域。若要查看远程域中的所有主机,这将很有用。ls 命令的语法如下:

ls [- a | d | t type] domain [> filename]

  不带参数使用 ls 命令将返回所有地址和名称服务器数据的列表。-a 开关将返回别名和规范名称,-d 将返回所有数据,而 -t 将按类型进行筛选。

技术分享图片

  在 DNS 服务器中可以按块转移区域,以便只有授权的地址和网络才可以执行此操作。如果已设置区域安全,则将返回以下错误:

*** Can‘t list domain example.com.:Query Refused

  5、列出nslookup工具的常用选项的当前设置值:

技术分享图片

  6、进入调试模式,查询过程会显示完整的响应包以及其中的交互包;

set nodebug

技术分享图片

set debug

技术分享图片

  7、开启高级调试模式,会输出很多nslookup内部工作的信息,包括许多函数调用信息。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

  8、修改默认域名为8.8.8.8

技术分享图片

恢复域名的默认设置:set domain=.

技术分享图片

  9、将默认服务器更改到指定的域名系统(DNS)域,使用当前默认服务器。

 技术分享图片

Nslookup 非交互模式:

  非交互模式适用于仅需要查找一块数据。语法如下:

nslookup [-option] [hostname] [server]
  • option:将一个或多个nslookup子命令指定为命令行选项;注意:子命令之间的"-"必须存在,且以" "(空格)隔开。
C:Windowssystem32>nslookup -qt=A -timeout=7 www.baidu.com
服务器:  djins
Address:  10.15.1.41

非权威应答:
名称:    www.a.shifen.com
Addresses:  14.215.177.39
          14.215.177.38
Aliases:  www.baidu.com

C:Windowssystem32>
  • Hostname:如果未指定其它服务器,就使用当前默认 DNS 名称服务器查阅 Hostname的信息。要查找不在当前 DNS 域的计算机,请在名称上附加句点。
  • Server:键入DNS服务器名称或者地址;如果缺省将使用默认服务器

Nslookup 非交互模式示例:

  1、将域名解析成IP地址

Nslookup   -qt=a 域名
Nslookup   域名 指定进行域名解析的DNS服务器地址

技术分享图片

  2、将“IP地址”反解析成“域名”

Nslookup –qt=ptr  IP地址

技术分享图片

  3、查询邮件服务器信息:域管理员有时想查看域内邮件服务器的信息, 可以通过如下命令

技术分享图片

  4、查看命名服务器NS:NS就是一个域名对应多个服务器,由哪个服务器对域名及附属记录进行解析.

技术分享图片

  5、查看域名的缓存时间

nslookup -d[其他参数] 目标域名

技术分享图片

技术分享图片

技术分享图片

技术分享图片

  我们忽略其他的,看看Got answer后面几行,包括了一个ttl数值。这个数值就是域名记录的生存时间。

   6、正向解析域名,并设置超时为10s,并打开高级调试信息

nslookup -qt=A -timeout=10 -d2  域名

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

  7、更改缺省查询类型为主机信息(HINFO)并且初始化超时时间为10S

nslookup -query=hinfo -timeout=10

  8、设置域和搜索列表为三个名称,lcs.MIT.EDU、ai.MIT.EDU 和 MIT.EDU

nslookup -set srchlist=lcs.MIT.EDU/ai.MIT.EDU/MIT.EDU
#该命令覆盖缺省域名和 set domain 命令的搜索列表。使用 set all 命令显示列表。

  9、确定名称是否指定主机、域、或其他实体

nslookup -querytype=ANY austin.ibm.com
nslookup 命令返回有关名称 austin.ibm.com 的所有可用的信息,包括权限语句(SOA)、名称服务器、邮件交换器和主机因特网地址信息,如下:
C:Windowssystem32>nslookup -querytype=ANY austin.ibm.com
服务器:  djins
Address:  10.15.1.41

非权威应答:
austin.ibm.com  MX preference = 5, mail exchanger = mx0a-001b2d01.pphosted.com
austin.ibm.com  MX preference = 5, mail exchanger = mx0b-001b2d01.pphosted.com
austin.ibm.com
        primary name server = asia3.akam.net
        responsible mail addr = dnsteam.us.ibm.com
        serial  = 2013120610
        refresh = 3600 (1 hour)
        retry   = 600 (10 mins)
        expire  = 604800 (7 days)
        default TTL = 21600 (6 hours)
austin.ibm.com  nameserver = ns1-206.akam.net
austin.ibm.com  nameserver = usc3.akam.net
austin.ibm.com  nameserver = asia3.akam.net
austin.ibm.com  nameserver = eur2.akam.net
austin.ibm.com  nameserver = ns1-99.akam.net
austin.ibm.com  nameserver = eur5.akam.net
austin.ibm.com  nameserver = usc2.akam.net
austin.ibm.com  nameserver = usw2.akam.net

austin.ibm.com  nameserver = usw2.akam.net
austin.ibm.com  nameserver = usc3.akam.net
austin.ibm.com  nameserver = ns1-206.akam.net
austin.ibm.com  nameserver = eur2.akam.net
austin.ibm.com  nameserver = asia3.akam.net
austin.ibm.com  nameserver = usc2.akam.net
austin.ibm.com  nameserver = ns1-99.akam.net
austin.ibm.com  nameserver = eur5.akam.net
mx0a-001b2d01.pphosted.com      internet address = 148.163.156.1
mx0b-001b2d01.pphosted.com      internet address = 148.163.158.5
ns1-99.akam.net internet address = 193.108.91.99

C:Windowssystem32>

故障排查:

 技术分享图片

  1、默认服务器超时

#启动 Nslookup.exe 实用程序时,可能会出现以下错误: 
*** Can‘t find server name for address w.x.y.z:Timed out

#注意:w.x.y.z 是 DNS 服务搜索顺序列表中列出的第一个 DNS 服务器。 

*** Can‘t find server name for address 127.0.0.1:Timed out

#第一个错误指出,无法连接 DNS 服务器或者服务未在该计算机上运行。若要更正此问题,请在该服务器上启动 DNS 服务,或检查可能存在的连接问题。 

#第二个错误指出,尚未在 DNS 服务搜索顺序列表中定义任何服务器。若要更正此问题,请向此列表中添加有效 DNS 服务器的 IP 地址。 

#有关其他信息,请参阅以下 Microsoft 知识库文章:172060
#(http://support.microsoft.com/kb/172060/zh-cn/ )

  2、找不到地址 127.0.0.1 的服务器名称

启动 Nslookup.exe 时,找不到服务器名称
启动 Nslookup.exe 实用程序时,可能会出现以下错误: 

*** Can‘t find server name for address w.x.y.z:Non-existent domain

如果没有名称服务器 IP 地址的 PTR 记录,则会出现此错误。启动 Nslookup.exe 时,它会执行反向搜索,以获取默认服务器的名称。如果不存在 PTR 数据,则会返回此错误消息。若要更正此问题,请确保存在反向搜索区域且其中包含名称服务器的 PTR 记录。

有关其他信息,请参阅以下 Microsoft 知识库文章:172953
(http://support.microsoft.com/kb/172953/zh-cn/ )
如何安装和配置 Microsoft DNS 服务器

  3、Nslookup 在子域上无法执行

在子域上进行查询或执行区域转移时,Nslookup 可能返回以下错误: 

*** ns.domain.com can‘t find child.domain.com.:Non-existent domain
*** Can‘t list domain child.domain.com.:Non-existent domain


在 DNS 管理器中,可以在主区域下添加一个新域,这样就创建了一个子域。以这种方式创建子域不会为该域创建单独的 db 文件,因此查询该域或在其中进行区域转移将会生成以上错误。在父域上运行区域转移将同时列出父域和子域的数据。若要解决此问题,请在 DNS 服务器上为该子域创建新的主区域。

 


以上是关于DHCP的主要内容,如果未能解决你的问题,请参考以下文章

一键安装dhcp服务脚本

DHCP配置实例

DHCP实验

沁恒 CH32V208: CH32V208 网络DHCP示例代码分析

微信小程序代码片段

DHCP中的算法[关闭]