OpenWrt之DHCP(动态主机配置协议)

本文围绕OpenWrt中的DHCP(动态主机配置协议)展开。介绍了DHCP产生的原因及好处,阐述其原理,即服务器有IP地址服务池,可动态分配IP等参数。还说明了DHCP报文格式和工作流程,包括客户端广播请求、服务器响应等步骤,以实现主机IP配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenWrt之DHCP(动态主机配置协议)

DHCP简介

在TCP/IP网络上,每台主机在访问网络及其资源之前,都必须进行基本的网络信息配置,包含IP地址、子网掩码、默认网关和DNS等。在大型网络中,如果每台终端主机的地址的都有不同的使用者来分配,那么就很容易出现地址相同的情况。对于经常移动的终端,重新配置可能需要很长时间,并且容易出错,如果IP配置错误将会导致不能访问网络。因此需要一种机制来简化主机IP地址的配置。动态主机配置协议DHCP应运而生。

采用DHCP的好处在于减少了网络管理员和用户的的负担。这将可以减少手工配置IP的地址导致的地址冲突,以及网关地址或DNS地址错误导致的不能访问网络的问题。

DHCP原理

  • DHCP服务器拥有一个IP地址服务池,当任何启用DHCP的 客户机连接到网络时,可从服务器哪里租借一个IP地址。不再使用的IP地址自动回收到地址池中,供再次分配使用。

  • DHCP保证同一时刻的任何IP地址只能分给一个客户使用。当DHCP客户机重新启动时,应配置为相同的IP地址。在DHCP服务器重启的情况吓,也应当给每一个客户机分配不同的IP地址,并且和手动分配的IP地址共存。这就要求DHCP服务器对已分配的地址进行保存,并且在客户端不使用时进行回收。

  • DHCP是一种动态的向网络终端提供配置参数的协议。在终端提出申请之后,DHCP服务器可以向终端提供IP地址及子网掩码、网关和DNS服务器地址等参数。

  • DHCP协议基于UDP协议,客户端的端口号是68,服务器的端口号是67。这样可以非常方便地区分是请求还是响应。

DHCP报文

DHCP的请求和应答封装在UDP报文中。

IP层在请求IP地址时采用链路层广播,链路层广播地址为"FF:FF:FF:FF:FF:FF"。网络层目的IP使用广播地址"255:255:255:255",源地址采用0.0.0.0,这是因为请求时自身没有IP地址,并且不知道服务器的IP地址。

报文内容格式如下图:

在这里插入图片描述

报文类型 字段为1表示请求,为2表示应答。

硬件类型 为1表示以太网。

硬件地址长度 以太网的硬件地址长为6字节。

跳数 字段由客户端设置为0 ,如果和DHCP服务器 之间有中继活动的话将被修改。

事务ID 是一个由客户端设置并由服务器返回的4字节整数。客户机使用它对请求和应答进行匹配。对于每个请求客户端首先将该字段设置为一个随机数。

秒数 客户端段开始进行DHCP请求时,将秒数字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着备用服务器接管DHCP服务。

flag BOOTP 标志位。只使用第 0 比特位,是广播应答标识位,用来标识 DHCP 服务器应答报文是采用单播还是广播发送。其中,0 表示采用单播发送方式,1 表示采用广播发送方式。其余位保留。

客户端地址字段 填0,如果上次成功配置过IP地址,它将写到"客户端IP地址"字段。

服务器返回应答时将客户的IP地址写入你的(客户端)IP地址字段。

并将自身IP地址填写到 服务器IP地址 字段,在同一网络 中继IP地址 填0。

客户端MAC地址 字段填写网卡硬件地址,不足部分填0。

服务器主机名 字段由服务器来填写,通常为0。

引导文件名 字段用于填充TFTP下载文件全路径,通常用于无盘启动工作站。选项字段用于扩展,但实际上有一些选项在终端接入互联网时是必须的。这些包含DNS地址、网关地址和子网掩码等。

可选字段 部分均以TLV(类型-长度-值)来表示。

子网掩码选项用于指定客户端的子网掩码。子网掩码的类型码为1,长度为4字节。

路有选项指定了客户端子网的下一跳地址。如果有多个,路由器将按照优先顺序排列,一般为路由器自身IP地址。类型码为3,长度为4的倍数。

域名服务器选项用于将名字服务器提供给 客户端,并且以优先顺序给出,选项代码为6,最长度为4字节,并且是4的倍数。

DHCP工作流程

DHCP通常由客户端发起广播请求,服务器收到请求后在配置文件中查询,如果符合要求则向客户端提供服务。

DHCP配置IP服务的报文流程。

在这里插入图片描述

客户端在以太网上广播"DHCP Discover"报文来发现DHCP服务器。

IP为10.0.2.2的服务器收到广播请求后,向客户端回应请求,发出单播"DHCP Offer"报文,并且目的IP为10.0.2.15。

客户端再次以广播形式发出"DHCP Request"报文。这是因为客户端可能受到多个服务器"DHCP Offer"报文,客户端会根据报文的内容来选择一个给予响应,采用广播形式可以让多个服务器均可收到。

当服务器收到"DHCP Request"报文后,服务器在将客户端的MAC地址同分配的IP地址绑定后,将IP信息(IP、掩码、网关地址和DNS等)发送客户机。

客户机收到"DHCP ACK"报文后,将IP信息设置到主机系统上。这时IP设置就完成了,客户机就可以是用IP来访问网络了。

### Hybrid环境下的DHCP配置方法 在Hybrid环境中,通常涉及IPv4和IPv6共存的情况。为了支持这种混合网络架构中的动态主机配置协议DHCP),需要分别针对IPv4和IPv6进行详细的规划与部署。 #### IPv4 DHCP服务器的配置 对于IPv4部分,在不同的场景下可以采用如下方式进行配置: - 当待配置设备与DHCP服务器不在同一网段时,需启用DHCP中继功能来完成跨网段通信[^1]。 ```bash ip helper-address 192.168.10.254 ``` 上述命令用于指定远程DHCP服务器地址,从而允许路由器转发来自客户端的请求至该特定IP位置。 另外,如果是在交换机上手动设定VLAN接口作为分配源,则可参照以下实例操作步骤[^2]: ```bash dhcp enable interface Vlanif10 ip address 192.168.10.254 255.255.255.0 dhcp select interface dhcp server lease day 2 hour 0 minute 0 dhcp server dns-list 222.88.88.88 8.8.8.8 ``` 此脚本定义了一个为期两天的有效租期,并指定了两个DNS服务器供客户使用。 #### IPv6 DHCP服务设置 关于IPv6方面,OpenWRT平台提供了灵活的选择方案——即stateful(有状态)、stateless(无状态)+RA消息广播以及纯SLAAC机制三种模式之一[^4]。下面重点介绍其中一种典型组合形式: ```bash config dhcp 'wan' option interface 'wan' option start '100' option limit '150' option leasetime '12h' config dhcp 'lan' option interface 'lan' option ra 'server' option dhcpv6 'hybrid' option ndp 'relay' list dnsmasq '-R ::1' ``` 这里设置了`option dhcpv6 hybrid`,意味着它会依据实际需求决定是否向终端提供完整的前缀长度还是仅仅传递辅助参数比如域名解析器列表等附加数据项而不干涉其自动生成全局唯一标识符的过程。 值得注意的是,在某些Linux发行版像CentOS7里构建类似的基础设施之前还需要先安装必要的软件包并调整默认模板文件路径[^3]: ```bash yum -y install dhcp cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf vi /etc/dhcp/dhcpd.conf ``` 编辑后的样例内容可能看起来类似于这样子: ```conf subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; default-lease-time 600; max-lease-time 7200; option routers 192.168.10.254; option domain-name-servers 222.88.88.88, 8.8.8.8; } ``` 最后一步启动守护进程并验证运行状况即可生效。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值