|
|
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地址列表;
最近一段時間我都在不斷重復上面的步驟,直到所有打開不正常的欄目都能正常訪問為止,很是費時費力。目前我已經接受了網友的建議,建立了交流群,大家一起來進行維護,群策群力,互通有無。
|
|