樹莓派實現撥號上網(充當路由器)
阿新 • • 發佈:2022-03-09
前言
為了實現,能像路由器一樣建立熱點,還有撥號上網踩了一些坑,這裡記錄一下。
建立熱點
首先要實現的是 樹莓派建立 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地址會變化,那麼可能需要重新執行一遍這個指令碼。不過我用了幾天只是開機自啟動還沒遇到重新撥號。