1. 程式人生 > 其它 >樹莓派實現撥號上網(充當路由器)

樹莓派實現撥號上網(充當路由器)

前言

為了實現,能像路由器一樣建立熱點,還有撥號上網踩了一些坑,這裡記錄一下。

建立熱點

首先要實現的是 樹莓派建立 WIFI 熱點,否則讓樹莓派撥號上網也沒什麼意義。

git clone https://github.com/oblique/create_ap.git

root 使用者執行:

create_ap wlan0 eth0 wifi名稱 密碼

相當於把 eth0 介面的網路,共享給 wlan0介面,建立熱點的介面是 wlan0,也就是閘道器地址。

可以寫到 /etc/rc.local 中,這樣不需要每次開機都執行建立熱點的命令了。需要注意的是指定 create_ap 絕對路徑。

撥號上網

sudo apt-get install pppoe pppoeconf pppstatus

執行 pppoeconf 命令,會提示輸入寬頻賬號和密碼,如果中間提示不知道是什麼選擇 就可以了。

然後可以通過 ifconfig 命令看到多出一個介面,點對點連線:

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:210.122.21.75  P-t-P:202.101.ArrayArray.13Array  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:14Array2  Metric:1
          RX packets:1108 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:815436 (7Array6.3 KiB)  TX bytes:1581Array8 (154.4 KiB)

撥號上網不需要每次開機重新配置一遍,裡面有記錄,所以不需要寫什麼開機自啟動指令碼。

但是這裡有一個大坑,這個時候還是有可能上不了網,因為預設路由表的問題,路由表是決定你訪問哪個ip,走的是哪條鏈路,所以還需要新增一個路由表。

route add default gw 210.122.21.75

ip 地址就寫 ppp0 介面獲取到的IP地址。這裡我想通過命令指令碼獲取到例如:

ip=`ifconfig ppp0|sed -n '2p'|sed 's/.*inet //'|sed 's/ netmask.*//'`
route add default gw $ip

同樣將其做成開機執行一遍,但其實這裡有個問題,如果開機啟動後用來一段時間後重新撥號了,那麼ip地址會變化,那麼可能需要重新執行一遍這個指令碼。不過我用了幾天只是開機自啟動還沒遇到重新撥號。