nx54你别升级了

前言

前段时间,朋友微信上和我说,NX54升级固件了,升级后,debug模式进不了,telnet也打不开了。至此,我之前分享的ipv6纯定制的方案,失效了,只剩下一种方式:ipv6防火墙开关。当然,也是可以满足ipv6访问的,只不过不可以只开放指定的v6ip了。简单吐槽一下这次升级:

  1. 不可降级。上了v13后,就算你保存了旧固件,也不可以降级。
  2. 不可debug。加了密码被堵死了。
  3. telnet默认关闭。之前配置文件中关于telnet的设置,新版本上没有了。

本篇不算什么黑科技,就是找一找升级的网络,然后停掉,算是一个小思路,但凡懂点网络知识的,应该都能明白。这次升级后,老版本且用且珍惜吧。

如果你已经升级到V13,不用看了。

如果你已经升级到V13,不用看了。

如果你已经升级到V13,不用看了。

停止升级

我一般很少看版本,就没升级,就害怕背刺,一般先关注完升级内容,再点升级。这次有朋友提醒,更不敢升了。一直到现在,每次登录路由后台都小心翼翼,步步为营,生怕不小心点了那一步在线升级。它的首页默认还是进的mobile页,而一进去,就有一个很醒目的升级弹窗。只要一不小心点到升级,从此和路由器telnet无缘了。

这不行啊!!!万一哪天手滑了就全完了。

查源码,路由器的管理后台都保存在www目录,首页是mobile.asp,用vi查看,有一行var remote_version=的代码,这就是从环境中取服务器版本的。首先想到的思路是这样:只要发现路由有过重启,则手动在var remote_version=xxxx的下一行插入一行remote_version = ‘0;NX54V100R012’。前面的0代表是否升级,后面不重要,就是版本标识。在其它几个有升级的asp文件里都改一下。

这么一来,就算检测到升级,也不会有前端提示了。

绝杀

其实这个方案也没问题,但是因为好几个asp文件里都有var remote_version,就导致每个有升级提示的页面都要做处理,不合适,而且还要对人家的内容做修改,就想从根本上解决问题。既然路由器在我家,网也在我家的,h3c你就别联你的网了。

前面堵了前端版本升级提示显示后,旁边会有一个版本检测的按钮,点击这个按钮,会发起一个轮询ajax请求,最后返回四个数字,然后就出升级提示。猜测大致流程如下:

  1. 发起ajax
  2. 路由器web服务向服务器请求升级内容
  3. 请求完成后结果写入web服务
  4. 刷新页面

开tcpdump,明确找到了两条dns请求,www.h3c.com 和 magic.h3c.com,具体做了什么,不关心了,也因为做了https,盒子上做中间人比较复杂,可能不一定能行。经测试,主要还是magic.h3c.com。

/etc/hosts添加 127.0.0.1 magic.h3c.com

1
echo "127.0.0.1 magic.h3c.com" >> /etc/hosts

如果不放心 还可以iptables封ip

1
2
iptables -I OUTPUT -d 114.x.x.x -j DROP
iptables -I OUTPUT -d 114.x.x.x -j DROP

重启会恢复,至于什么时候运行这两条,我就不写了。