DHCP看着像是晦涩的技术名词,日常上网却一直在用到。全称Dynamic Host Configuration Protocol,中文叫动态主机配置协议。可以把它当成网络里的接待人员。手机、电脑接入WiFi,设备本身不会自动知道IP地址、网关、DNS地址,DHCP负责把整套网络参数下发给设备,不用手动填写一堆数字。
没有DHCP的场景,每台设备都要手动配置IP、子网掩码、默认网关、DNS。家里少量设备还好,公司几十台电脑、打印机,逐个配置工作量巨大,填错就断网,两台设备IP重复还会产生地址冲突。笔记本从公司带回家里,网络环境变更,静态地址不再适用,又要重新修改。DHCP刚好解决这类重复配置和IP冲突问题。

DHCP下发核心参数一共四项。IP地址相当于设备在局域网内的编号。子网掩码用来判断目标地址是否属于同一局域网。默认网关是对外访问的出口,外网数据必须经过它转发。DNS服务器负责把域名翻译成IP。四项参数全部配置完成,设备才能正常访问互联网。DHCP同时下发租约时长,代表这个IP分配给设备的使用时限,到期前设备自动续约;不续约的话,地址会被回收,分配给其他接入设备。
工作流程分为四个阶段:发现、提供、请求、确认。设备接入网络,广播消息寻找DHCP服务器。收到请求的DHCP服务器返回地址分配提议。设备确认选用这个地址,发送请求报文。服务器最终确认,锁定租约。整套流程耗时几毫秒到几秒,用户基本感知不到。同一网络内如果有多台DHCP服务器,设备一般选用最先响应的那一台。
家用路由器默认开启DHCP。网线直连或者WiFi接入,设备自动获取192.168.1.x或者192.168.0.x这类内网地址,底层就是路由器的DHCP服务在工作。登录路由器后台,可以找到DHCP服务器选项,开启或是关闭。启用状态下可以设置地址池范围,例如192.168.1.100至192.168.1.200,路由器自身占用192.168.1.1,池内地址分配给终端。地址池范围不要设置过小,设备数量多会出现地址耗尽。还要避开手动设置静态IP的设备,比如NAS固定192.168.1.50,如果地址池起始从50开始,NAS的静态IP有可能分配给其他设备,造成网络故障。
电脑开启DHCP的操作,Windows和macOS操作路径不一样。Windows打开设置,进入网络和Internet,找到更改适配器选项,右键当前网卡选择属性,双击Internet协议版本4,勾选自动获得IP地址、自动获得DNS服务器地址,保存即可。macOS进入系统设置-网络,选中当前网络连接,点击详细信息,切换TCP/IP页面,IPv4配置选择使用DHCP。手机端更简单,Android在WiFi高级设置把IP设置从静态改成DHCP;iPhone进入WiFi详情页,配置IP选择自动。Linux桌面版一般在网络管理器把IPv4方式设为自动,命令行可以使用dhclient或是NetworkManager重新获取地址。
部分设备不适合启用DHCP。服务器、网络打印机、监控摄像头、NAS这类需要固定网络地址的设备,建议配置静态IP,或者在路由器设置DHCP保留,把指定IP和设备MAC地址绑定。这样设备每次接入网络,拿到的IP固定不变,端口映射、远程访问、共享文件夹不会因为IP变动失效。普通手机、笔记本、平板使用DHCP就足够,切换网络不会受影响。
设备连上网络却获取不到IP,优先检查路由器DHCP服务是否被关闭。很多人误操作关闭DHCP,所有终端都无法正常上网。再看地址池是否耗尽,租约时间设置过长,旧设备下线地址不释放,新设备无法分配IP。重启路由器和终端,通常可以清理过期租约。网卡驱动异常也会造成DHCP请求发送失败,设备管理器禁用再启用网卡可以尝试修复。公共WiFi一直卡在获取IP,大概率是网络拥堵或者DHCP服务器响应缓慢,可以更换热点或者稍后重试。
DHCP本身没有鉴权机制,无法区分接入设备是否可信。同一局域网内如果存在私自搭建的DHCP服务器,可能下发错误网关、DNS地址,把流量劫持到其他站点。家庭网络风险很低,企业内网一般会部署DHCP snooping防护。普通用户尽量不要随意连接陌生公共WiFi,如果接入后发现DNS被篡改、网页频繁跳转广告,立刻断开网络。