hello world

          隨筆 - 2, 文章 - 63, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          【轉(zhuǎn)】Android 實現(xiàn)PPPoE撥號

          關(guān)于Android實現(xiàn)PPPoE撥號上網(wǎng)的問題。


          系統(tǒng)必須安裝有ppp和rp-pppoe程序。一般ROM自帶有ppp程序的、rp-pppoe就未必有了,需要交叉rp-pppoe到目標(biāo)機。我的開發(fā)環(huán)境已帶有rp-pppoe的二進制程序pppoe和一個shell程序pppoe-connect了。

          先來看看pppoe-connect里面是什么。。。

          [php]   view plain   copy
          1. #!/system/bin/sh  
          2.   
          3. PPPD_EXIT=""  
          4.   
          5. IFACE=$1  
          6. USERNAME=$2  
          7.   
          8. /system/bin/setprop "net.pppoe.ppp-exit" ""  
          9. /system/bin/setprop "net.pppoe.reason" ""  
          10. /system/bin/setprop "net.pppoe.interface" ""  
          11.   
          12. /system/bin/log -t aw-pppoe "Starting pppd"  
          13.   
          14. /system/bin/pppd pty "/system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \  
          15.             noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \  
          16.             usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \  
          17.             $USERNAME lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe  
          18.   
          19. PPPD_EXIT=$?  
          20.   
          21. #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"  
          22.   
          23. /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"  
          24. /system/bin/setprop "net.pppoe.reason" "gone"  
          25. /system/bin/setprop "net.pppoe.interface" ""  

          重點關(guān)注這句

          [php]   view plain   copy
          1. /system/bin/pppd pty  "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412"  \  
          2.             noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \  
          3.             usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \  
          4.             $USERNAME lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe  

          目前我對這句命令還不能完全看明白。了解幾個關(guān)鍵點就行。

          首先,pppoe-connect會運行pppd和pppoe。所以著眼這個就行了。

          $IFACE是填網(wǎng)卡名,Android網(wǎng)卡一般以太網(wǎng)卡是eth0、無線網(wǎng)卡是wlan0。

          $USERNAME是填pppoe的賬號。

          看著是不是感覺少了什么?沒錯!是密碼!有賬號那就必須有密碼的!這個pppoe-connect腳本沒帶有關(guān)于密碼的東西。

          一般密碼是用另外的pppoe-setup去設(shè)置的!既然沒有pppoe-setup那我就自己將密碼在這上面補上去!在前頭加入PSW=$3,把傳入的第三個參數(shù)存為變量PSW,然后再在命令user $USERNAME后面加上password $PSW。

          保存好文件。然后在shell 執(zhí)行命令

          [php]   view plain   copy
          1. pppoe-connect wlan0 賬號 密碼  
          這命令是阻塞的!如果幾秒后都沒返回些什么,那么pppoe程序已經(jīng)執(zhí)行成功,在工作了!然后再開一個虛擬終端輸入下面命令:

          [php]   view plain   copy
          1. netcfg  

          如果沒錯會多出個ppp0網(wǎng)絡(luò)接口,并且這接口已有ip地址了。到這里就是撥號成功了!

          不過不能上網(wǎng)!

          我們還要將默認(rèn)路由映射綁定到這個ppp0接口。

          [php]   view plain   copy
          1. ip route del  default   
          多調(diào)用幾次也無妨,確保刪除所有原有的default路由映射。

          然后

          [php]   view plain   copy
          1. ip route add  default  dev ppp0  

          把default路由映射綁到ppp0上

          這時候試試ping下外網(wǎng)的ip,如無意外應(yīng)該能ping通了!

          OK!能上網(wǎng)了!

          少俠!且慢!保險起見在ping域名試試?

          如果悲劇了!再修煉下面章節(jié)吧!

          ping通外網(wǎng)ip但ping不通域名的話。肯定是dns問題了!!

          [php]   view plain   copy
          1. getprop net.dns1  
          果然沒有返回dns地址吧?!

          其實在pppoe-connect里面的命令已經(jīng)用了usepeerdns選項的,ppp0已經(jīng)拿到dns,我們需要做的就是把net.ppp0.dns1的dns復(fù)制到net.dns1

          [php]   view plain   copy
          1. setprop net.dns1 $(getprop net.ppp0.dns1)  

          執(zhí)行此命令將net.dns1設(shè)置為跟net.ppp0.dns1一樣即可!一般你還會順手把dns2也設(shè)置一下的!你懂得!


          ping一下域名唄!能ping通么?

          不管你信不信!反正我行了!各種網(wǎng)頁、ftp、qq無壓力!

          再復(fù)制下我修改后的shell pppoe-connect程序吧,方便伸手黨

          [php]   view plain   copy
          1. #!/system/bin/sh  
          2.   
          3. PPPD_EXIT=""  
          4.   
          5. IFACE=$1  
          6. USERNAME=$2  
          7. PSW=$3  
          8.   
          9. /system/bin/setprop "net.pppoe.ppp-exit" ""  
          10. /system/bin/setprop "net.pppoe.reason" ""  
          11. /system/bin/setprop "net.pppoe.interface" ""  
          12.   
          13. /system/bin/log -t aw-pppoe "Starting pppd"  
          14.   
          15. /system/bin/pppd pty "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \  
          16.             noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \  
          17.             usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \  
          18.             $USERNAME password $PSW lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe  
          19.   
          20. PPPD_EXIT=$?  
          21.   
          22. #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"  
          23.   
          24. /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"  
          25. /system/bin/setprop "net.pppoe.reason" "gone"  
          26. /system/bin/setprop "net.pppoe.interface" ""  

          posted on 2017-06-02 21:22 聽風(fēng) 閱讀(1071) 評論(0)  編輯  收藏 所屬分類: 嵌入式

          主站蜘蛛池模板: 长海县| 遂川县| 息烽县| 双城市| 巩义市| 资中县| 塔城市| 本溪市| 和龙市| 砚山县| 双流县| 福泉市| 高州市| 油尖旺区| 简阳市| 化德县| 甘谷县| 千阳县| 屏东县| 庄浪县| 栖霞市| 闸北区| 红桥区| 万山特区| 阳东县| 凌源市| 中山市| 尚义县| 佛冈县| 台东市| 古田县| 都江堰市| 义乌市| 湘乡市| 孟连| 通辽市| 罗源县| 安溪县| 蛟河市| 临安市| 东丰县|