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

by 1月 13, 2015 10 意見        

我們之前已經實作過把 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 / 業界講師 / 資訊顧問 / 部落客

10 則留言 :

  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. Great Article Cloud Computing Projects

      Networking Projects

      Final Year Projects for CSE

      JavaScript Training in Chennai

      JavaScript Training in Chennai

      The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

      刪除
  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 快,並不代表網路真的很快,那是兩回事。

      刪除
  6. "Your style is unique in comparison to other people I have read stuff from.
    Thanks for posting when you have the opportunity, Guess I’ll just bookmark this
    web site."
    Regards: Eve Hunt

    回覆刪除