华为FTTR子光猫Telnet修改DHCP、自定义DNS与租期实战
手里这台 HN8156XR-10 我已经折腾了一周多前后试过 Web 后台、运营商默认下发配置发现真正要把 DHCP 的租期、自定义 DNS 这些细节改成自己想要的样子最直接的路子还是 Telnet 进维护终端。FTTR 从光猫这东西后台页面给到的选项实在太少很多参数只能通过命令行去碰。这篇文章把我实际操作的思路、命令、踩坑过程全部捋一遍给同样在折腾华为 FTTR 的朋友一个可以照着做的参考。先说明一点HN8156XR-10 是华为 FTTR 套装里的从光猫全称 Fiber to the Room光纤进房间。主光猫通过光纤把网络送到每个房间从光猫负责扩展 Wi-Fi 和有线口。它本身也是个完整的小型网络设备只是平时绝大多数人只把它当 AP 用根本没想过它自己身上也有一套 DHCP 服务。而在某些组网场景下你确实需要动它的 DHCP 参数。下面我从组网逻辑说起再到 Telnet 实操最后是问题排查一步步讲透。1. 动手前先搞懂FTTR组网下DHCP到底归谁管1.1 主光猫和子光猫的分工FTTR 这种组网方式本质上是把光猫的核心能力放在了主光猫那边从光猫则是通过光纤把信号延伸出去。HN8156XR-10 作为从光猫大多数情况下工作在 AP 模式或者桥接模式它自身不带拨号功能上行的管理、数据都从主光猫那边通过光纤链路获取。在这个分工下面正常情况下整个局域网的 DHCP 服务是由主光猫统一负责的。主光猫往下分配一个网段的地址从光猫只是把这份网络资源通过自己的 Wi-Fi 和 LAN 口再分发出去。所以你从子光猫的 LAN 口接一台设备拿到的 IP 其实还是主光猫下发的从光猫只是相当于一个透明转发。但问题是HN8156XR-10 这个型号本身是有独立 DHCP 能力的。在部分固件版本或者特定工作模式下它自己会维护一个小型的 DHCP 地址池。如果你把工作模式切到了路由模式它的 DHCP 服务就会开启这时候局域网里就会出现两个 DHCP 服务器一个在主光猫一个在从光猫冲突就会随之而来。1.2 为什么要动子光猫的DHCP真实场景拆解既然默认都是主光猫在下发地址那折腾子光猫的 DHCP 到底有什么用我自己遇到的场景比较典型主光猫在入户弱电箱里子光猫在二楼书房书房里接了一台打印机、一台桌面级交换机和一台自建的本地 DNS 服务器。直接接子光猫 LAN 口设备确实能上网但有两个明显不舒服的地方。第一所有设备从主光猫获取地址地址池谁都在用同一栋楼里设备一多IP 容易乱特别是打印机这种需要固定访问的设备比较麻烦。第二我想让书房这一小撮设备走本地自建的 DNS 服务做一些域名解析加速和广告过滤主光猫的 DHCP 设置界面又根本没有自定义 DNS 选项。这种情况下让子光猫在书房这一侧独立开一个 DHCP 服务自己管一小段地址池然后把 DNS 指向本地就非常干净。另外一个典型场景是有人把子光猫放在出租屋或者独立办公室里只有这一台设备前面没有额外的路由器。从光猫自己的 DHCP 地址池和 DNS 下发参数如果不调整终端设备会一直用运营商默认的 DNS解析体验不太理想租期也是默认 24 小时。有的人希望租期短一点让访客设备不要长时间占着地址有的人希望 DNS 指向自建解析服务。这些需求后台管理页面都给不了。1.3 必看合规前提与风险底线在正式说 Telnet 操作之前我必须把一些前提说清楚。华为设备开放 Telnet 维护通道主要目的是给运营商的装维人员和研发调试使用。用户自己能不能用取决于设备来源、地区对应固件版本以及运营商策略。如果是公开版设备有些版本会直接开放维护账户如果是运营商定制版Telnet 可能默认禁用。我的立场是只在你自己有权管理的设备上操作并且是在合理配置、维护自有设备网络参数的范围内使用。网传的一些所谓“使能工具”、开启 Telnet 的绕过手段风险都比较高轻则配置文件丢失重则设备变砖这并不值得。本文默认你已经通过正常渠道拿到了维护登录条件。下面的内容重点讲进入维护终端之后怎么调整 DHCP、自定义 DNS 和租期。注意修改从光猫的网络参数之前先拍照备份后台原有配置记录下来原来的 IP 网段、地址池范围。改错了还能照原样恢复这个习惯能帮你省掉非常多的麻烦。2. Telnet登录前置准备合规途径、网络拓扑与账号确认2.1 确认设备是否已开放Telnet维护通道拿到 HN8156XR-10第一步不是急着找命令而是先确认这台设备到底开没开 Telnet。常见的情况分三种默认开放、需要在后台开启、运营商定制固件屏蔽了。先试试从电脑上直接发起 Telnet 连接就知道大概情况了。在 Windows 的 CMD 或者 PowerShell 里用telnet 192.168.1.1这样连一下。如果端口通会出现黑色的命令行界面登录提示一般是Login:或者WAP直接出现。如果提示无法打开到主机的连接说明端口没开或者设备不在这个 IP 上。在某些固件版本里Telnet 服务默认是关闭的需要在设备管理后台的“安全”或“维护”页面里找到对应开关。后台入口的地址一般是192.168.1.1或192.168.100.1具体以设备背面标签为准。如果你在后台里看到“启用维护模式”“允许局域网内 Telnet 接入”之类的开关直接打开就行。如果后台也没有相应开关那就要联系运营商装维人员处理或者确认设备固件版本是否支持。这里我不推荐折腾非官方手段还是那句话风险高收益低设备搞坏之后恢复也麻烦。2.2 登录参数与电脑侧设置Telnet 登录最核心的三个信息管理 IP、登录端口、账号密码。HN8156XR-10 作为从光猫默认管理 IP 通常和主光猫是同一段常见是192.168.1.1或192.168.100.1。登录端口默认 23。电脑这边先把网卡的 IP 设置成和光猫同一网段。比如光猫是192.168.1.1那就把电脑 IP 手动指定为192.168.1.100掩码255.255.255.0网关填192.168.1.1。如果你本身就在这个局域网内上网那网卡自动获取的 IP 基本也在这个网段直接连就行不需要额外改。用 Windows 的话CMD 里直接输telnet如果提示找不到命令就先在“启用或关闭 Windows 功能”里把 Telnet 客户端勾上不同系统版本细节不太一样但都是这个思路。登录账号这块常见的维护账号是root密码是设备出厂维护密码或者运营商定制密码。我实际操作时用的是项目现场记录下来的维护账号。如果你手头没有可用账号优先找运营商装维同事确认。不要浪费时间用网上流传的万能默认密码去撞效率低还可能触发设备登录保护把自己 IP 封掉一段时间。2.3 维护终端的两种命令层WAP层和Shell层登录成功之后你看到的不是常见的 Linux shell而是华为光猫特有的维护命令层。提示符一般是WAP这一层里能用的命令是华为自己封装的比如查看配置、修改一些维护参数、保存配置。很多折腾过华为光猫的朋友对WAP提示符应该不陌生。要操作 DHCP、DNS 这种底层网络服务光靠在WAP层是不够的。华为设备内部本身是 Linux 系统文件系统和进程都可以通过 shell 访问。所以在WAP层需要执行shell命令才能进入真正的 Linux shell提示符一般会变成#或~ #。进入 shell 之后你就像是坐在一台小 Linux 机器前面可以看进程、看网络配置、改文件。文章后面说的所有操作基本都是在 shell 层完成的。要退出 shell 回到维护层敲exit就行要从WAP层完全断开连接敲exit或logout都可以。在实际设备上不同固件版本的命令名字可能略有差异。有的版本shell之后直接进 BusyBox shell有的版本还要再手工指定 shell 解释器。遇到进不去的情况先在WAP层敲help看有没有类似的维护通道命令。3. 实操修改DHCP、自定义DNS与租期的完整过程3.1 先摸清现状查看当前DHCP与DNS状态进入 shell 之后不要着急改先把眼前的局势摸清楚。我会按下面这个顺序做基础体检。先看设备上到底跑了哪些和网络地址相关的进程ps | grep -i dhcp ps | grep -i dns正常会看到dnsmasq或者华为自研的 DHCP 服务进程。如果出现dnsmasq后面改配置的核心就是它。再看当前系统下发 DNS 配置长什么样cat /etc/resolv.conf这个文件里记录了设备自己用的 DNS 服务器地址以及远端地址。看完设备侧还要看实际局域网里正在跑的 DHCP 服务情况。在电脑上用网卡工具查看当前分配到的 IP、网关、DNS、租期到期时间。Windows 下是ipconfig /all把你电脑获取到的 IP、子网掩码、默认网关、DNS 服务器、租约获取时间和过期时间记录下来。这些数据是后面修改前后的对照基准。特别是租期你在光猫侧改了参数之后客户端不会立刻生效必须续租或重连才能拿到新租期所以当前租期数据留个底很有必要。查看当前 DHCP 分配的活跃租约在 shell 层可以用cat /tmp/dnsmasq.leases如果文件存在里面每一行是一个分配记录包括租期过期时间、MAC 地址、IP 地址和主机名。这个文件虽然不是修改目标但能帮你确认当前业务网段到底是从光猫分配的还是透明转发到主光猫那边分配的。3.2 修改DHCP服务器范围与自定义DNS的通用方法在 shell 层华为光猫的 DHCP 服务配置最常见的是dnsmasq配置路径通常在/etc/dnsmasq.conf但/etc有时候是临时文件系统重启后会恢复原样。要确认持久化的配置目录先看这个ls /mnt/jffs2/华为设备的可写配置区一般挂在/mnt/jffs2很多东西放在这里面。我建议你在动手之前先把当前运行的配置备份到/mnt/jffs2下面这样至少有一个安全网cp /etc/dnsmasq.conf /mnt/jffs2/dnsmasq.conf.bak cat /etc/dnsmasq.conf配置文件里核心要看两行dhcp-range和dhcp-option。dhcp-range是 DHCP 地址池的定义格式大概是dhcp-range192.168.8.100,192.168.8.200,255.255.255.0,24h意思是从 192.168.8.100 到 192.168.8.200 这一段可以分配掩码 24 位租期 24 小时。如果这一行是注释状态说明这台从光猫当前没有启用 DHCP地址都由上级分配。你要做的就是把这一行的注释取消并且改成自己想要的一段网段。自定义 DNS 用的是dhcp-option标准 DHCP option 编号 6 就是 DNS 服务器dhcp-option6,192.168.8.2这行配置写在dhcp-range后面意思是当客户端通过 DHCP 获取地址时同时下发一个 DNS 服务器地址 192.168.8.2。如果你要下发多个 DNS用逗号分隔比如dhcp-option6,192.168.8.2,223.5.5.5这里我给的示例网段是 192.168.8.2实际改成你自建 DNS 服务的局域网 IP 就行。修改文件用sed比较高效我实际操作时常用sed -i s/^#dhcp-range/dhcp-range/ /etc/dnsmasq.conf sed -i s/^dhcp-range.*/dhcp-range192.168.8.100,192.168.8.200,255.255.255.0,24h/ /etc/dnsmasq.conf但sed正则写错容易把整行改坏新手我建议直接用vi打开配置文件手工修改。设备上一般自带vi操作习惯和服务器上一样按i进入编辑模式改完按Esc输入:wq保存退出。虽然从光猫的性能改配置文件不会卡但也要注意不要乱按快捷键。改完配置文件要让服务重新读取。常见两种方式重启进程或者直接重启光猫。重启进程更轻量killall dnsmasq dnsmasq注意不要一下子把进程杀掉而不重新拉起来否则整个局域网内依赖这台从光猫下发地址的设备都会断网。正确姿势是先启动一个新的或者用SIGHUP让 dnsmasq 重读配置不过最简单稳妥的办法还是重启整个设备等一两分钟让它自己拉起来。3.3 租期调整参数格式、续约机制和时间线租期是大家最容易忽略的一个参数但影响很大。默认配置常见是 24 小时也就是24h。如果你改成了12h格式上注意dnsmasq支持12h、1d、2h也支持纯秒数比如43200。用人类可读的格式最好避免换算错误。为什么租期值得调DHCP 的工作原理是客户端在租期到达 50% 的时候进入 T1 状态开始尝试续租如果续租失败到 87.5% 时进入 T2 状态广播寻找 DHCP 服务器如果整个租期用完仍然联系不上客户端就会放弃这个地址。简单说租期太短每台设备频繁续租会增加无谓的广播流量租期太长地址被长期占用的设备占据一些临时接入的访客设备会把地址池挤占掉。我测试时把租期从 24 小时改成了 12 小时原因是办公楼这边的访客设备流动性大12 小时的租期足够设备白天使用晚上所有设备离线之后地址池第二天就能释放出来。如果你的场景是稳定的小型办公室租期 24 小时完全没问题如果是公共场所的 Wi-Fi 覆盖建议 2 小时到 12 小时之间自己根据实际情况调。租期改完之后测试客户端不会立刻拿到新租期。已经获得地址的设备仍然按照老租期运行直到续租时才会请求新租期。所以验证时最快的办法是在电脑上执行ipconfig /release ipconfig /renew执行完再ipconfig /all就能看到新的租期和 DNS 生效了。Mac 和 Linux 平台也有对应的刷新命令原理一样。注意改了租期之后原来已经分配的租约表dnsmasq.leases里可能还留有旧租期记录。如果发现设备一直拿到旧租期可以在 shell 层清空租约文件再重启设备但清空之前确认一下当前在线设备数量少否则会导致所有设备瞬间断网重连。3.4 保存固化操作别让重启把配置打回原形很多人在这一步栽跟头命令行里改得好好的一重启立刻恢复原状。原因在于光猫系统有运行配置和固化配置两套体系。你直接改/etc/dnsmasq.conf只动了运行配置重启之后系统会从 flash 里的固化配置重新生成文件改动自然就没了。所以改完文件之后必须做两件事。第一在WAP维护层执行save命令。这个命令的作用是把当前的运行配置写入 flash 配置区。你从 shell 退出到WAP层输入save回车等它提示保存完成。第二如果在/mnt/jffs2下看到一个启动脚本目录那还要把自定义的 dnsmasq 配置同步过去。华为设备常见做法是启动脚本里写好了自定义配置的加载逻辑。你先看看ls /mnt/jffs2/ ls /mnt/jffs2/*.sh如果看到一个名字类似local_rcS或者equip.sh的脚本文件打开看看内容一般会有类似“如果文件存在则复制到 /etc”的逻辑。如果有你可以把自己修改好的 dnsmasq 配置文件复制到/mnt/jffs2下cp /etc/dnsmasq.conf /mnt/jffs2/dnsmasq.conf这样重启之后脚本就会把/mnt/jffs2/dnsmasq.conf重新复制到/etc/dnsmasq.conf你的自定义配置就不会丢了。这一步是纯经验总结实际遇到的设备版本不同自启动加载机制也有差异。最稳妥的验证方法就是改完保存后主动重启一次重启完再进来检查配置是否还在。我的习惯是至少连续重启两次确认配置是真的固化住了而不是碰巧第一次没覆盖到。4. 常见故障与排错速查命令失效、配置丢失、DNS不生效4.1 高频问题排查表我把自己实测中遇到的典型问题整理成了一张表应该能覆盖大多数情况。现象可能原因处理思路Telnet 连不上提示端口不通Telnet 服务未开放或设备 IP 不对确认设备后台是否有 Telnet 开关确认电脑与光猫同网段用 ping 测试设备 IP能登录但WAP层没有shell命令当前账号权限不够或是受限维护模式检查账号是否维护管理员角色查看help输出是否有其他通道命令改了 dnsmasq.confDNS 不生效配置文件改错位置运行的服务不是 dnsmasq用ps确认服务名检查配置里dhcp-option6是否放在了地址池配置之后租期修改无效客户端一直拿到旧租期客户端没有重新续租或租约表里有旧记录客户端执行 release 和 renew必要时清空租约文件重启设备重启后配置全部丢失修改没有固化到 flash或/etc是临时文件系统在WAP层执行save把配置同步到/mnt/jffs2并检查启动脚本改了地址池之后设备获取到错误网关子光猫开启了 DHCP 但网关没有正确设置dnsmasq 的dhcp-option3要指向实际上行网关或者关闭子光猫 DHCP 让主光猫统一分配局域网出现 DHCP 冲突主光猫和从光猫都开启了 DHCP网段重叠错开主从设备的地址池网段从光猫侧只分配独立网段4.2 命令失效的应对思路在实际操作中你可能会遇到一种情况在WAP层输入shell之后提示符虽然变成了#但很多常用命令比如grep、sed、vi都提示找不到。这不是因为你操作错了而是因为华为设备上的 shell 环境是一个精简的 BusyBox并且 PATH 环境变量可能没有包含全部命令目录。处理办法很简单先用绝对路径试图调用/bin/busyboxBusyBox 会把支持的命令列出来你看看里面有vi、sed、grep这些没有。如果有直接这样调用/bin/busybox vi /etc/dnsmasq.conf如果你折腾过嵌入式 Linux 设备会非常熟悉这种模式。本质上光猫就是一个小型嵌入式系统工具链能省就省能用绝对路径调用的命令绝不在默认 PATH 里放全。遇到找不到命令先不要慌用which查一下which busybox再看一下当前 PATHecho $PATH有些版本里/bin、/usr/bin、/sbin被精简了完整路径可能是/opt/bin/busybox这类。在设备的/bin、/usr/bin、/sbin三个目录下用ls翻一遍你一般能找到需要的工具。这一步虽然繁琐但算是华为光猫折腾的必经之路。4.3 配置回滚与资源占用风险控制改配置最容易出的问题是地址池配错导致整个局域网里的设备全拿不到正确地址。比如你把dhcp-range改成了和主光猫完全重叠的网段两台 DHCP 服务器就会互抢终端设备拿到的网关、DNS 时好时坏表现就是一会儿能上网页一会儿打不开。遇到这种情况我的恢复方法是立即回到 shell 层把备份的 dnsmasq 配置恢复回去cp /mnt/jffs2/dnsmasq.conf.bak /etc/dnsmasq.conf然后重启设备。如果手机或者电脑已经获取到了错误地址手动改成静态 IP 再操作避免因为 DHCP 冲突连不上设备。另外还要注意资源占用的问题。从光猫毕竟不是高性能路由器它的 CPU 和内存都很有限。开 DHCP 服务、跑 dnsmasq再叠加无线和光纤转发本身就有一定负载。如果你把租期调得非常短比如 5 分钟那设备会非常频繁地发起续租从光猫的 CPU 占用率会明显上升。我在测试时把租期改成过 5 分钟实测 CPU 曲线明显跳动而且有些 IoT 设备对短租期兼容性也差频繁续租失败导致掉线。所以租期不要追求极端值12 小时到 24 小时是绝大多数场景的健康区间。还有一点如果你在从光猫上开启了独立 DHCP千万不要在同一个交换机上再接另一个开着 DHCP 的路由器。这是组网里最常见的低级错误但确实容易在混乱的网络拓扑里踩进去。两个 DHCP 服务器同时抢答没有哪一方能稳定活下来。5. 进阶想法与我的实际体会5.1 一个更精细的配置思路把地址池和网关错开说句实话子光猫上做 DHCP 服务这件事做得好是锦上添花做得不好就是给自己挖坑。核心原则两个字错开。地址池要和主光猫错开DNS 要和运营商默认值错开租期要根据设备流动性单独设置。我在实际操作时把子光猫的 DHCP 地址池设置成了主光猫完全不同的网段比如主光猫是 192.168.1.x子光猫这边就用 192.168.8.x。这样做的好处是当你在子光猫 LAN口接设备时明确知道这个设备是从子光猫获取的地址排查问题时一眼就能看出设备挂在哪一层网络下面。如果设备拿到的 IP 是 192.168.1.x那它就是跨过光纤从主光猫听来的如果拿的是 192.168.8.x那说明子光猫的独立 DHCP 已经开始工作。网关设置这里有个容易忽略的点。子光猫如果开启了独立 DHCP它下发的默认网关应该是子光猫自己的局域网接口 IP即 192.168.8.1。如果网关写成了主光猫的地址设备无法直接路由转发出去就会出现“能拿到 IP 不能上网”的情况。所以改完 DHCP 之后记得还要检查 dnsmasq 配置里是否包含了dhcp-option3的网关参数dhcp-option3,192.168.8.1有这一行终端设备才能通过子光猫正常上网。DNS 就指向 192.168.8.2 这样的本地服务。这样一个独立、稳定的小网段就在书房里建立起来了。5.2 我的三个实测心得第一华为光猫设备本身是可玩性很强的小 Linux 系统但它的资源是真的紧张。我从光猫上同时改了 DHCP、DNS、租期还顺手开着 Wi-Fi 给好几台设备用整体运行了两天没出大问题。但如果你在上面拼命堆服务比如跑复杂的过滤规则、大流量转发那这台从光猫可能会吃力建议合理分配任务不要把太多功能都靠它承担。第二租期调整之后一定要保持耐心。我改完租期之后电脑刷新了三次才看到新租期生效中间有一次甚至还是旧值。后来排查才发现是电脑网卡没有真正执行 renew只 release 了一半。遇到这种“改了好像没改”的情况优先考虑客户端侧的问题不要急着怀疑光猫配置没生效。可以在 shell 层看/tmp/dnsmasq.leases里租约记录的时间戳是否已经更新这个文件能直接反映 DHCP 服务端的真实分配情况。第三备份这个动作永远不嫌多。我在操作过程中把原始 dnsmasq 配置、网络设置界面截图、甚至命令执行记录都存了一份。后面有一次不小心把配置改坏整个子光猫下所有设备都拿不到地址我靠之前的备份几分钟就恢复了。相比那些用旁门左道把设备搞坏的折腾花五分钟做备份性价比高得多。5.3 这个配置还能怎么扩展如果你已经把子光猫的 DHCP、DNS、租期都调顺了后面还可以尝试几个方向。一个是把 DHCP 下发的 DNS 指向局域网内的广告过滤工具这样所有从子光猫获取地址的设备自动就具备了广告拦截和域名解析加速能力不需要每台设备单独设置。我这边就搭了一个本地解析服务然后在dhcp-option6里指向它实测下来很多硬编码运营商的请求都被拦截了体验好了不少。另一个方向是把dhcp-range的租期和静态绑定结合起来。在/tmp/dnsmasq.leases里看到打印机、NAS 这类需要固定 IP 的设备之后可以用dhcp-host配置把 MAC 地址和 IP 绑定起来同时租期可以设得很短也不怕掉线因为静态绑定的设备每次都会拿到同一个地址。这个思路很适合给办公室的网络设备做固定 IP比登录后台手动配置静态 IP 要省事得多。我个人在实际操作中的体会是华为 FTTR 这套设备的底层能力其实比后台界面显示的强不少很多参数被藏起来了。Telnet 这个维护通道如果使用得当能解决真实的组网痛点但它始终是以合理维护自有设备为前提的。上面这些步骤你在自己设备上照着走一遍应该能顺利把 DHCP、自定义 DNS 和租期都调好。改完之后建议在设备连续运行一周观察租约文件变化和终端设备稳定性再决定要不要进一步调整。