樹莓派 Wi-Fi repeater - part 1

樹莓派 Wi-Fi repeater(part 1):使用網線直連樹莓派與 Ubuntu 系統筆記本

關鍵詞:樹莓派, Ubuntu, 網線, ssh, 靜態IP

在這裏插入圖片描述

起因

這天早上醒來突然發現自己的 MacBook Pro 連不上學校的無線網了。具體表現爲

Wi-Fi has the self assigned IP address 169.254.xxx.xxx and will not be able to connect to the Internet.

而且這個問題僅在學校這個特定無線網絡上發生,我的所有其他設備(手機,iPad 等)在此網絡上都可以正常工作。而偏偏我的 MacBook Pro 不行(也就是說在除校園網以外的所有其他網絡上,比如手機熱點,MacBook Pro 均正常工作)。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

發生了這個問題,我的第一反應是電腦的毛病。嘗試了網上針對這個問題的大部分解決方法,如:

  • 重啓
  • 關機再開機(冷重啓)
  • 刪除 network interfaces 相關的 plist 文件(com.apple.airport.preferences.plist,NetworkInterfaces.plist 等)
  • Renew the DHCP Lease
  • 刪掉網絡設置中的無線連接並重新添加

以上方法均宣告失敗。

所以做了兩手準備,一方面接着嘗試解決問題,另一方面開始懷疑問題並不出在我的電腦,而是學校的路由器。於是給學校發了郵件詢問,並且同時準備把塵封已久(快兩年了)的樹莓派拿出來,做一個 Wi-Fi repeater(也叫 Wi-Fi extender)。

簡單來說,就是:

MacBook Pro <~~~> Raspberry Pi 3B <~~~> Router

由樹莓派接收路由器無線網絡信號,並同時將網絡分享給 MacBook Pro。當然,我也不知道這種方法是否能 work,只是覺得應該嘗試一下。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

而要完成這個工作,首先就需要對樹莓派進行配置。因爲我的樹莓派 3B 並沒有配置顯示屏或輸入設備,只是一個光板,所以我尋求配置樹莓派的方法就是用網線將樹莓派與筆記本連接起來,通過 ssh(這也就是本文的內容)。這個方法兩年前我第一次拿到樹莓派的時候用 MacBook Pro 做過,當時也是磕磕絆絆勉強可以連,但現在是怎麼也連不上了。好在我今年年初的時候因爲對經典 ThinkPad 筆記本的執念,購入了一臺舊 T420,並安裝了 Lubuntu 系統,現在正好用來與樹莓派進行連接。

準備工作

如果不用網線直連樹莓派和電腦,還有一個方法是手動配置使樹莓派自行連接無線網,再通過網上 ssh 進行連接,但這個更麻煩,因爲學校無線網使用的是 WPA2-Enterprise 安全標準,在配置樹莓派中的 /etc/wpa_supplicant/wpa_supplicant.conf 文件的時候要填寫的就不僅僅是網絡用戶名和密碼了;SSID,phase1,phase2,各種參數都需要填寫。我最後放棄了這個方案。

而要將樹莓派通過網線與 Linux 筆記本直連,需要配置靜態 IP。至於準備工作,我將通過硬件與軟件兩方面介紹:

硬件:

  • 樹莓派及電源
  • 網線

軟件:

  • nmap: sudo apt install nmap
  • ifconfig: sudo apt install net-tools
  • dnsmasq: sudo apt install dnsmasq

注:安裝 ifconfig 是因爲 Lubuntu 18.04 並不自帶這個命令。另外對於 dnsmasq,安裝後可能會有服務無法啓動的報錯信息,這是因爲默認的 DNS 端口 53 是佔用狀態,衝突了。這個本文後面會解決。

在樹莓派中進行的操作

推薦使用全新的系統,我樹莓派上的 SD 卡還裝着兩年前的 Raspbian 系統,事後分析,我認爲這是在配置樹莓派時讓我耗費了很長時候卻依然無法成功的一個主要原因。所以我建議重新燒錄一個系統。我選擇的是 Raspberry Pi OS with desktop and recommended software - 2020-02-13,巧的是在我成功配置後的第二天,最新一版的 Raspberry Pi OS - 2020-05-27 就發佈了。不過本文操作應該不會受影響。

燒錄新的系統,我使用的是 Etcher。在燒錄成功後,會有兩個分區,bootrootfs

首先,我們要在 boot 分區中新建一個空白文件,名爲 ssh,不需要後綴名,也不需要內容,這個空白文件的作用就是在樹莓派通電啓動時告訴 OS 打開 ssh 服務,因爲默認該服務是關閉的。

接着我們需要爲 Pi 配置靜態 IP,這裏我選擇的是 A 類私有地址 10.42.0.x。

在命令行中打開樹莓派的 rootfs,修改 etc/dhcpcd.confsudo vim etc/dhcpcd.conf),將 44-48 行的 Example Static IP configuration 去掉註釋,改成下面的格式:

# Example static IP configuration:
interface eth0
static ip_address=10.42.0.64/24
static routers=10.42.0.1
static domain_name_servers=10.42.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

保存更改並退出 Vim,SD 卡此時也可以推出系統了,我們不需要再在 Pi 的系統文件裏做更多設置。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

在筆記本中需要進行的配置

Hosts

首先我們要解決 dnsmasq 的配置問題。因爲默認的 53 端口是佔用狀態,dnsmasq 並不能成功啓動(使用 systemctl status dnsmasq 查看 dnsmasq 當前運行狀態)。

所以我們首先去修改一下系統的 Host 文件(sudo vim /etc/hosts),在 127.0.0.1 下面添加一行:

127.0.0.1   localhost
10.42.0.1   dnsmasq

這裏 dnsmasq 對應的 IP 就是之前在 Pi 中設置的 routers 的 IP。保存修改後退出 Vim。

dnsmasq

接下來修改 dnsmasq.conf(sudo vim /etc/dnsmasq.conf):

首先是第 10 行,取消註釋,將端口號設置爲 5353:

port=5353

在這裏插入圖片描述

接下來取消第 111 行的註釋,改爲如下 2 行:

listen-address=127.0.0.1
listen-address=10.42.0.1

在這裏插入圖片描述

接着重啓 dnsmasq 服務(sudo /etc/init.d/dnsmasq restart),這回應該就能順利啓動了,然後我們關閉 dnsmasq 服務(systemctl stop dnsmasq)Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

在這裏插入圖片描述

Network Manager

雖然我認爲 Ubuntu 及其衍生系統默認已經安裝了 Network Manager(就是系統設置中的網絡),但對於特殊情況,這裏還是補充一下安裝 Network Manager 的命令:sudo apt install network-manager。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

我們需要修改的文件是 NetworkManager.conf(sudo vim /etc/NetworkManager/NetworkManager.conf),在 [main] 後面添加 DNS=dnsmasq

[main]
DNS=dnsmasq
plugins=ifupdown,keyfile

保存修改後退出 Vim。接着重啓電腦。

注:這裏對於不重啓電腦而選擇 重啓 dnsmasq 服務 + 重啓 Network Manager(sudo service network-manager restart)的方案,我並不清楚是否有效。所以還是建議直接重啓電腦。

新建有線連接

重啓後點擊網絡設置,選擇新建有線連接,將 IPv4 設置中 DHCP 改爲 “分享給其他電腦”:Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

在這裏插入圖片描述

保存修改。

正式連接樹莓派與電腦

將樹莓派通電開機,並用網線將 Pi 和電腦連接起來,等待一會後應該會提示剛剛建立的有線連接已經連接成功。

我們可以使用 ifconfig 查看當前的有線連接狀態,我們關注的應該是名爲 enp0s25 或是 eth0 的項:

enp0s25: [...]
        inet 10.42.0.1  netmask 255.255.255.0   broadcast 10.42.0.255
        inet6 [...]
        [...]

可以看到這個 IP 就是我們爲樹莓派設置的路由地址,接下來我們就需要確認樹莓派本身的 IP 地址,不出意外的話應該是 10.42.0.64

# 使用 nmap 查找樹莓派的 IP 地址
$> nmap -sn 10.42.0/24
Starting Nmap 7.80 (https://nmap.org) at 2020-05-29 16:31 PDT
Nmap scan report for dnsmasq (10.42.0.1)
Host is up (0.015s latency).
map scan report for 10.42.0.64
Host is up (0.015s latency).
Nmap done: 256 IP addresses (2 host up) scanned in 2.30 seconds

可以看到找到了 10.42.0.64,於是我們 ssh 過去:

$> ssh [email protected]

成功連接!至此本文結束。

參考資料

[1] https://stackoverflow.com/questions/16040128/hook-up-raspberry-pi-via-ethernet-to-laptop-without-router#answer-54374837
[2] https://graspingtech.com/dnsmasq-ubuntu-18-04/

在這裏插入圖片描述

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker
訪客追蹤插件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章