我們之前已經實作過把 Raspberry Pi 變成 Wi-Fi 無線基地台,若是我們只打算讓 Raspberry Pi 用 Wi-Fi 上網而已,要怎麼做呢?
事前準備
- Raspberry Pi Type A、B、B+ 均可。
- Raspbian 作業系統。
- USB 無線網卡,這裡用的是 Edimax EW-7811Un。
- 無線基地台 (AP,Access Point) 一台。
開始實作
先依 Raspberry Pi 的基礎 - 系統設定的調教 把 Raspbian 安裝並做好基本設定,接著把無線網卡插上 Raspberry Pi 的 USB 接孔。
如果是 Linux Kernel 支援的型號,就可以直接偵測的到已驅動的 USB 設備,elinux.org - RPi USB Wi-Fi Adapters 有列出 Raspbian 原生支援的清單。
lsusb
無線網卡 wlan0 直接被啟動了。
ifconfig wlan0
如果 Kernel 不支援的話,就必須到網卡製造商的官網下載 for Linux 的驅動程式,再自己編譯及安裝了。
目前可以看到無線網卡尚未連上任何一個 AP,
iwconfig wlan0
先來掃瞄一下附近可用的 AP 清單,這裡可以看到我附近有四個可連線的基地台。
iwlist wlan0 scan
以 SQM 這一台 AP 為例,我們來看一下這些資訊是什麼意思。
- Address - AP 的 MAC Address。
- ESSID - 基地台的連線名稱。
- Protocol - 支援的通訊協定,這台支援了 802.11b/g/n 三種協定。
- Frequency - 傳輸的頻率是 2.4GHz。
- Encryption key - 已啟用加密。
- Bit Rates - 傳輸速度為 144Mbps。
- IE - 加密法,我們用的是 WPA2-PSK + CCMP。
- Quality & Singal Level - 訊號強度。
為了讓無線網卡連上 AP,先看一下網路卡的主設定檔。
sudo vi /etc/network/interfaces
- allow-hotplug wlan0 - 支援熱插拔
- iface wlan0 inet manual - 手動指定網路設定
- wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf - 使用 wpa_supplicant 設定網路參數
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
預設的內容只有兩行。
開始輸入設定值,這邊就以 SQM 這個 AP 的設定值為例,它是用 WPA2 加密協定。
network={
ssid="SQM" # 基地台名稱
psk="No-Money-No-Wifi-Password" # 密碼
proto=RSN # WPA2 加密協定
pairwise=CCMP # WPA2 加密協定
key_mgmt=WPA-PSK # WPA2 金鑰管理協定
auth_alg=OPEN # WPA2 認證演算法
}
若加密協定用的是 WPA 時,設定值請改成
network={
ssid="SQM" # 基地台名稱
psk="No-Money-No-Wifi-Password" # 密碼
proto=WPA # WPA 加密協定
key_mgmt=NONE # WPA 未使用
auth_alg=OPEN # WPA 認證演算法
}
若加密協定用的是 WEP 時,設定值請改成
network={
ssid="SQM" # 基地台名稱
wep_key0="No-Money-No-Wifi-Password" # 密碼
key_mgmt=NONE # WEP 未使用
auth_alg=SHARED # WEP 認證演算法
}
重新啟動無線網卡。
sudo ifdown wlan0
sudo ifup wlan0
若需要 wpa_supplicant.conf 的進階設定說明,請參閱 wpa_supplicant Linux documentation page。
讓無線網卡與基地台進行驗證,並從 DHCP 取得 IP 位址。
sudo kill -9 $(ps -ef | grep wpa | awk '{print $2}')
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
無線網卡需要一點點時間通過基地台的驗證,稍等一下可以對外連線了。
ifconfig wlan0
無線網路卡的燈號亮起就代表連線成功了。
如果常常要讓 Raspberry Pi 在不同地點的無線基地台之間連線,可以直接把設定值全部寫在一起。
將密碼加密
可以正常連線了是很好,可是密碼這麼大剌剌的用明碼顯示出來,不會太危險了些嗎? 所以,我們把它加密處理一下吧!!!
使用 wpa_passphrase 指令加密,後面用「'」單引號把基地台名稱及密碼包起來。
wpa_passphrase 'SQM' 'NO-Money-No-Wifi-Password'
編輯 wpa_supplicant.conf 的內容,把密碼換下來,別忘了前後的「"」雙引號要刪掉。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
如此就可以安心的使用無線網卡連線,又不會被偷看密碼了。
系列文章
- Raspberry Pi 的基礎 - 使用 Wi-Fi 無線網卡連上網路
- Raspberry Pi 的應用 - Wi-Fi 無線基地台
- Raspberry Pi 的應用 - 可以隱藏上網足跡的 Tor 洋蔥路由器
- Raspberry Pi 的應用 - 加快上網速度的 Squid 快取伺服器
參考資料
- Raspberry Pi - Setting WiFi up via the command line
- 台灣樹莓派 - [基礎] 命令列設置無線網路
- 周丕中的生活技术博客 - CentOS 命令行下连接加密模式为 WPA/WPA2-PSK 的无线网络
- 玩具烏托邦 - 赤手空拳也要用 wpa_supplicant 接通無線網路
圖片來源
更新紀錄
- 2015/01/13 撰文。
請問要如何設定連線第一組SSID01對應固定IP1,第二組SSID02對應固定IP2
回覆刪除因為在家裡連無線網路SSID01,樹莓派固定IP假設為192.168.43.88
在外面用手機無線網路SSID02,樹莓派固定IP假設為192.168.1.89
要如何整合自動連線多組AP後,各自對應固定IP,因為兩地在用每天都要一直改很煩惱
因為樹莓派沒裝螢幕,GPIO直接輸出到設備,大多用筆電、桌機或手機連線,也常斷電開關機。另外也會讓別人手機裝xrdp遠端控制root權限到X-windows下當作人機介面操作。不使用DDNS,能達成兩組以上自動連線AP後對應設定不同固定IP嗎?
家裡可能有機會在 AP 裡設定 Static IP 對應,手機就無解了,所以最簡單的方法是寫成 Shell Script 來執行。
刪除請問要如何設定連線第一組SSID01對應固定IP1,第二組SSID02對應固定IP2
回覆刪除因為在家裡連無線網路SSID01,樹莓派固定IP假設為192.168.43.88
在外面用手機無線網路SSID02,樹莓派固定IP假設為192.168.1.89
要如何整合自動連線多組AP後,各自對應固定IP,因為兩地在用每天都要一直改很煩惱
因為樹莓派沒裝螢幕,GPIO直接輸出到設備,大多用筆電、桌機或手機連線,也常斷電開關機。另外也會讓別人手機裝xrdp遠端控制root權限到X-windows下當作人機介面操作。不使用DDNS,能達成兩組以上自動連線AP後對應設定不同固定IP嗎?
請問要如何設定連線第一組SSID01對應固定IP1,第二組SSID02對應固定IP2
回覆刪除因為在家裡連無線網路SSID01,樹莓派固定IP假設為192.168.43.88
在外面用手機無線網路SSID02,樹莓派固定IP假設為192.168.1.89
要如何整合自動連線多組AP後,各自對應固定IP,因為兩地在用每天都要一直改很煩惱
因為樹莓派沒裝螢幕,GPIO直接輸出到設備,大多用筆電、桌機或手機連線,也常斷電開關機。另外也會讓別人手機裝xrdp遠端控制root權限到X-windows下當作人機介面操作。不使用DDNS,能達成兩組以上自動連線AP後對應設定不同固定IP嗎?
請問Raspberry Pi B
回覆刪除不外接任何無線設備
可以直接連wifi嗎?
除了 3B 跟 Zero W 有內建 WiFi 功能之外,其他的型號都必須外接 USB WiFi 網卡才行。
刪除想請問連接網路時 開網頁很慢是CPU的問題嗎?還是網卡?
回覆刪除我ping google還蠻快的 不過google以外的都超慢回應..
都有可能,無線基地台跟對外頻寬也會有影響,
刪除而且 ping 的 response time 快,並不代表網路真的很快,那是兩回事。