背景
在启动了外部子网,以后,旁路由有时会承担起来接远程子网的任务。为主路由分担压力,且不影响正常业务。
这时在需要在主路由上开通了个静态路由把对远程子的访问路由到旁路由的IP。
架构
一般来说家里主路由是通信公司的设备,有很强的固定性,不是通用的,当然这时用Openwrt就不会有这样的疑问。在路由表很容容加上一条定制的静态路由。
通过对两大公司,移动和联通的光猫的观察。他们几乎都是一样的内核, 我用的是中兴的。还有阿尔卡特的。
在静态路由中,只容许设目的IP,淹码,端口。不能有下一跳的地址。
解决
经过在AI中找,发现有超级用户的话的可以打开telnet后台。https://blog.csdn.net/gitblog_00622/article/details/161358003?f_link_type=f_linkinlinenote\&flow_extra=eyJkb2NfaWQiOiI0NWYwOGJhMTc0YWUyMzI3LWU4NWIyMGUyMjBkZTk1ZWQiLCJpbmxpbmVfZGlzcGxheV9wb3NpdGlvbiI6MCwiZG9jX3Bvc2l0aW9uIjowfQ%3D%3D
bash
zteOnu工具的完整使用教程
虽然让go 去得到了二进制,但是使用上还发生了点小问题,现在说一下。
原理
使用,ip rout. -table. ip. mask. gw.
这样的结构只能改变运行时的内存。且这样的结果是更改了路由本身的指向,对于代理过来的流量,不起作用。
但有个想法是,服务器作为中转,转发方,将流量发给旁路由。虽然不是最好的方法,但是在网关固定的情况下,也是折中的。于是还需要另外两条firewall
bash
ip r add t table.csp_main 192.168.10.0/24 via 192.168.1.13
iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.10.0/24 -j ACCEPT
iptables -I FORWARD -s 192.168.10.0/24 -d 192.168.1.0/24 -j ACCEPT
在内存中的中转。
但是我依然不能保存,虽然有结果可起作用。
于是我说
参考 zteOnu的源码,找到永久保存的办法
找到一个线路
这样发现,在1DB中存放着所有需要留存的可变参数。通过,对1 DB中各表格的操作,达到了openwrt中对,uci. config 的一样的结果。
以下是对自定义路由信息的作用,其中,p 中print 显示。 addr 对表加1行, delr减1行, 行号。
set 是对表中一行中的参数名值给定内容。这里的,value是一个能用的静态路由加码。
各大运营商没有去作这样的界面,可是内核有这样的功能。
bash
/ # sendcmd 1 DB p DHCPSOpts
<Tbl name="DHCPSOpts" RowCount="1">
<Row No="0">
<DM name="ViewName" val="sta"/>
<DM name="RViewName" val=""/>
<DM name="OptCode" val="121"/>
<DM name="OptValue" val="18C0A86400C0A8010D"/>
<DM name="OptTag" val="1"/>
</Row>
</Tbl>
上面的结果是下面的命令得到的
bash
sendcmd 1 DB addr DHCPSOpts
sendcmd 1 DB set DHCPSOpts 0 OptID 121
sendcmd 1 DB set DHCPSOpts 0 OptVal 1800A8010DC0A86400
sendcmd 1 DB set DHCPSOpts 0 Enable 1
结束后不要忘记
sendcmd 1 DB save
现在把那个初
ztx0nur的,导火索和工具箱拿出来
直接参考 zteOnu 的源码确实是解决这个问题的"终极答案"。
zteOnu 之所以能永久开启 Telnet,正是因为它没有去修改 /etc/rc.local 这种容易被重启还原的临时文件,而是直接使用了中兴光猫底层的 sendcmd 命令,将配置写入了设备的持久化数据库(DB)中。
通过分析 zteOnu 的源码(特别是 app/telnet/telnet.go 模块),我们可以找到它永久保存配置的底层逻辑:
. zteOnu 的核心原理:直接修改底层数据库
zteOnu 在获取 root 权限后,会向光猫发送一系列以 sendcmd 1 DB set 开头的命令,直接修改光猫闪存中的 TelnetCfg 数据库表。例如:
text
编辑
sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1
sendcmd 1 DB set TelnetCfg 0 TSLan_UName root
sendcmd 1 DB set TelnetCfg 0 TSLan_UPwd Zte521
修改完这些数据库参数后,它最后会执行一条灵魂命令:
text
编辑
sendcmd 1 DB save
这条命令会将刚才修改的数据库参数真正固化到闪存中。
好了今天到这果,