|
|
8#

楼主 |
发表于 2015-11-30 23:11:32
|
只看该作者
本帖最后由 mick221 于 2016-4-8 17:51 编辑
八、 双剑合璧,内外网同时在线的终极奥义
上次写《升级篇》写到即将完成的时候,我发现新版的CD12B011固件居然有一个极其可喜的变化——有线与无线可以同时连接(出厂固件在有线连接后会自动关闭无线)。于是匆匆结束了《升级篇》的撰写,查资料、写脚本代码,再用了10天的时间来优化和改进,就有了最初一版的双网脚本,实现了有线IPoE加无线WIFI的下的自动策略路由配置。
让人惊喜的是,在这个双线双网脚本发布之后,华为悦盒交流群的一位网友 浙江-马哥 很快在此基础上试验了有线连接方式为PPPoE的双线双网并获得成功,更让人意想不到的是,另一位网友 成都-红海 提供了单线双网(仅有线)的实现办法。在加入了他们的成果后,双网脚本在功能上有了一个质的飞跃,已经到了可以日常使用的程度。
不过,更大的惊喜还在后面,网友 成都-别惹白牛 作为一名资深的安卓开发攻城狮首先提出并实践了新的双网切换方式,在他的启发下,双网功能升级至3.0版,可根据当前正在运行的APP自动更改默认路由,IPTVAPP走电信内网,第三方APP走宽带外网,不再辛辛苦苦地收集iplist文件,自动适应各地运营商(目前已测试四川电信、重庆电信、河北电信、浙江电信)。
它能做到什么呢?
无需人工插线拔线,也无需手动切换连接方式,电信IPTV和第三方应用可以做到无缝切换,畅快使用,再也不用担心家中的老小不会使用ROOT后的盒子了。
自认为这是《终结篇》中最有价值的内容,也是最不好写的一章,因为涉及到一些极为枯燥的知识点,比如路由表的操作。反复思考过后,为了向大众进行普及,我决定这里就不再深入讲解,只就使用条件、实现原理和后期维护进行说明。
代码上如何实现,请有兴趣的朋友自行查看 auto-rules.sh 脚本文件的内容,结合后文讲述的实现原理,相信你们理解起来也不困难。
8.1 严重警告
本人的双网补丁脚本与成都-别惹白牛开发的 NetChange 应用,在功能上存在重复之处,请不要同时使用,以免造成冲突。
脚本的开启/关闭方法,请看下文说明。
8.2 特别声明
1) 双网功能目前为测试阶段,可能会影响正常的使用,无耐心者、无网络基础者及计算机小白请绕道。
2) 无论是单线双网(仅有线)还是双线双网(有线+无线),都有一定的前提条件方能使用,请务必按照后文中“准备事项”中的说明进行操作。
3) 双网脚本已经包含在最新的ROOT工具中,但考虑到各地网络情况的不同及可能与其它应用的冲突情况,双网功能默认为不开启,开启的方法是修改 /system/etc/auto-config.ini 文件,将对应的功能开关设为“1”,关机重启后生效(后文有详细说明)。
4) 由于华为悦盒本身的缺陷,在使用双线双网功能时,特别是睡眠/待机唤醒后,容易出现WIFI无法使用的情况,对此介意者请勿开启。个人建议使用单线双网。
5) 双网功能并非必备功能,仅仅是ROOT后的锦上添花,如果你尝试过不成功,请不要反复尝试,以免浪费宝贵时间。
8.2 实现原理(以双线双网为例)
原理说起来挺简单的,脚本在后台即时检测当前APP窗口名称,根据条件决定APP使用何种方式进行数据连接:
1) 在检测到当前APP窗口为IPTV应用时,将默认路由设置为电信内网,即有线连接;
2) 当前APP窗口非IPTV应用时,将默认路由设置为宽带外网,即无线连接。
其中 /system/etc/auto-rules.sh 脚本负责监控APP及网络连接状态,自动设置路由规则。
8.3 准备事项
首先,请使用我提供的最新版本的工具ROOT盒子(如果之前已经ROOT过,建议你重刷固件后再ROOT一次)。
接下来,根据你的需要选择下面两种双线方式之一:
8.3.1 单线双网(推荐使用)
1)请务必满足以下两种条件之一,否则无须再进行后续步骤:
i. 在路由器中开启组播侦听(IGMP Snooping)功能;
ii.将路由器刷为Openwrt固件或基于Openwrt开发的固件(如潘多拉、石像鬼);
=====↑ 不满足条件就请放弃,不要不死心,特别是TPLINK用户 ↑=====
2) 已按照新方式接线(见附图),并确保在在此方式下IPTV直播(必须为直播)能够正常收看,且在收看IPTV直播时路由器未出现数据阻塞的情况(如WIFI无法连接、其它设备IP地址分配错误、电脑无法连接外网等)
3) 打开U盘“dual”文件夹中的 auto-config.in 文件,将其中的“enable_single_line” (开启单线双网)这一项设为 1 ;
4) 根据你的网络环境,继续修改 auto-config.ini 文件中的 single_ip(IP地址) 、 single_mask(子网掩码)、 single_gateway(网关) 、 single_dns(域名解析服务器) 四项内容;
提醒:如果你不清楚此步骤有何意义,请放弃后续操作,以免耽误大家时间
5) 在系统设置中关闭无线连接。
8.3.2 双线双网
1) 在系统设置中同时连接有线和无线(在网络连接状态处将会显示双网连接标志);
注:i. 目前仅四川电信 SCD12B011/SCD05B011 固件原生支持双线同时连接;
ii. 其它运营商用户若想尝试使用双网连接,可打开 /system/etc/build_hw.prop 文件,修改 presist.hw.sys.net.mode=3 (原始值为1),但不保证绝对有效;
2) 将 auto-config.ini 文件中的“enable_double_line”(开启双线双网)这一项设为 1 。
8.4 激活使用
1) 将U盘插入到盒子,使用盒子上安装的Root Explorer 文件管理器应用,将U盘(通常在 /mnt/sda )中的“dual”文件夹中的 auto-config.ini 文件复制到 /system/etc 目录下,若提示文件已存在,则选择覆盖原有的文件;
2) 因为盒子写入操作不太稳定,请务必检查刚才复制进来的文件内容是否为空 ,如果为空请重新复制(非常重要);
3) 按盒子背后的电源键关机(非遥控器上的电源键),重启后生效。
重启后请打开电信IPTV和任意一个第三方视频应用,若都能正常使用,则表示双网开启正常。
8.5 如何关闭
方法一:
修改 /system/etc/auto-config.ini 文件,将对应的双网功能设为 0 ,重启后生效。 这是最为标准的办法,日后还可随时开启,推荐使用。
方法二:
直接将 /system/etc/auto-rules.sh 文件删除,这是最为粗暴的办法,建议你心情不爽的可以用用。
提醒:删除以后如果需要再启用,可找到ROOT工具里面的 auto-rules.sh 文件,再复制到 /system/etc 里面就行了。记得关机重启才生效。
8.6 后期维护
20160108发布的3.0版双网补丁中已经不再需要自行收集IP,本节内容已过时,无需再看。
电信在IPTV页面上提供了不少附加的栏目,如音乐、阅读、游戏、教育、生活等等,这些栏目都存在于不同的内网服务器中,而且随着电信业务的扩展,未来肯定还会继续开设新的栏目。因此,后期维护的关键就在于随时把新栏目的内网服务器IP添加到 auto-iplist.ini 文件中,以确保这些栏目能够正常打开。
目前我是采用了一个比较笨的办法来寻找这些内网服务器IP:
1) 首先在盒子上安装一个应用:终端模拟器,用于在盒子上运行一些shell命令;
2) 关闭无线连接,仅保留有线连接,然后打开IPTV应用,选择一个栏目并尽可能多的浏览其中的内容;
3) 返回阿狸桌面,打开终端模拟器,运行命令 “netstat -rm”;
4) 在运行命令后显示的结果中查找类似于这样的连接信息,比如 10.X.X.X → 182.X.X.X (此信息说明盒子在访问内网服务器182.X.X.X),然后将182.X.X.X 加入IP地址列表(iplist.txt);
5) 按盒子背后的电源键关机并重启,然后同时打开有线和无线连接(即启用策略路由脚本),再次访问刚才的栏目,如果打开正常,则说明我们刚才添加的IP地址是正确的;
6) 如果打开时有任何错误(如提示帐号密码错误、播放黑屏、长时间无反应等等),则再次运行命令 “netstat -rm”,看看是否有 “192.X.X.X → 182.X.X.X )这样错误的访问内网IP的情况发生,若有,则把相应的IP添加进IP地址列表;
最近一段时间我都在不断重复上面的步骤,直到所有打开不正常的栏目都能正常访问为止,很是费时费力。目前我已经接受了网友的建议,建立了交流群,大家一起来进行维护,群策群力,互通有无。
|
|