Raspberry Pi 的基礎 - 使用 Wi-Fi 無線網卡連上網路

by 1月 13, 2015 8 意見        

我們之前已經實作過把 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 設定網路參數
所以基地台的相關設定值,就是在 wpa_supplicant.conf 輸入,別忘了必須用 root 權限才能編輯,否則一定打不開。
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

如此就可以安心的使用無線網卡連線,又不會被偷看密碼了。


系列文章


參考資料


圖片來源


更新紀錄

  • 2015/01/13 撰文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

8 則留言 :

  1. 請問要如何設定連線第一組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嗎?

    回覆刪除
    回覆
    1. 家裡可能有機會在 AP 裡設定 Static IP 對應,手機就無解了,所以最簡單的方法是寫成 Shell Script 來執行。

      刪除
  2. 請問要如何設定連線第一組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嗎?

    回覆刪除
  3. 請問要如何設定連線第一組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嗎?

    回覆刪除
  4. 請問Raspberry Pi B
    不外接任何無線設備
    可以直接連wifi嗎?

    回覆刪除
    回覆
    1. 除了 3B 跟 Zero W 有內建 WiFi 功能之外,其他的型號都必須外接 USB WiFi 網卡才行。

      刪除
  5. 想請問連接網路時 開網頁很慢是CPU的問題嗎?還是網卡?
    我ping google還蠻快的 不過google以外的都超慢回應..

    回覆刪除
    回覆
    1. 都有可能,無線基地台跟對外頻寬也會有影響,
      而且 ping 的 response time 快,並不代表網路真的很快,那是兩回事。

      刪除