用sed命令拯救无法访问的路由器

/ 0评 / 0

事情是这样子的:
主力路由用的 Asus ACRH17,内存256MB,接入联通宽带,LAN 192.168.10.0/24;备用路由用硬改的 K2P,内存 512MB,接入移动宽带,LAN 192.168.11.0/24。
为了方便管理,两台路由都加入了 ZeroTier 的网络。
今天远程添加磁力链接下载发现同时下载任务一多 ACRH17 的 aria2 就崩溃,毋庸置疑这就是内存小了的缘故,所以决定晚上回家后把路由器调换一下。
由于 ACRH17 下我还接入了两台 NAS,为了减少更改 IP 的次数,我直接在终端里把两台机器的 IP 地址给改了,10 改成 11,11 改成了 10,然后换网线开机,故障就开始了。
接在 LAN 口的台式机能获取到分配的 IP 地址,可是无法上网,WIFI 不能用、终端访问不了、ping 网关也不通。
开着 cmd ping 网关,断电上电时发现 K2P 这台机器大概只有 2-3 秒左右的时间能 ping 通网关,之后就显示网络故障,但是本地连接能获取到 IP 地址。我突然想到之前我也曾出现过一次这样的故障,当时是恢复了错误的 ZeroTier 配置造成的,这次一定又是这个原因。ZeroTier给连上的设备分配了另一个内网地址,当我更换设备位置并且改变了 LAN 口地址后,ZeroTier在启动完成后还是给路由分配的是原来的内网地址,正是因为这个原因造成路由器的网络一团混乱,网络自然也就不通了。
解决的办法有两个:
1.恢复路由器原来的 IP 地址。
2.重新刷机。
很幸运,这两个办法我在两台路由器上都试验成功了。
趁 K2P 开机后能正常 ping 通的那一瞬间,快速用 putty 连上路由器,在终端里运行下列命令执行:

sed -i 's/192.168.11.1/192.168.10.1/g' /etc/config/network && reboot //192.168.11.1 为修改后的 IP ,这里我需要把它替换成修改之前的 192.168.10.1

路由器重启后,K2P 终于恢复了正常。
然而另外一台 ACRH17 就没这么好命了,网络正常的一瞬间连 1 秒都不到,神仙可能才能在这么短的时间内执行上面的命令吧,没办法只能重新刷机了。
断电,按着路由器的 reset 按键通电,等几秒后松开在电脑上查看本地连接的地址,获取到了 192.168.1.x 的 IP 地址后就可以访问 192.168.1.1 的 PB-Boot 重新刷固件了,刷完固件机器重启,等本地连接正常后再重新配置,或者恢复以前的备份。
看来十分有必要请人帮忙把 ACRH17 的内存升级到 512MB 了。

Leave a Reply

Your email address will not be published. Required fields are marked *