樹莓派開機自啟動熱點(使用有線eth0上網,使用wlan0進行熱點)

笑眯眯办大事發表於2024-11-08

一、背景內容

其實就是接了一單,有人需要我幫忙配置一下樹莓派開機啟動熱點。這邊做個記錄,該方式樹莓派4B、3B都可以使用。

二、實際操作

1、使用網線連線路由器和樹莓派

樹莓派的網路介面一共有三個,分別是:

  • eth0:有線網路介面(乙太網介面)
  • wlan0:無線網路介面(WiFi介面)
  • lo:本地迴環介面(用於本地通訊,localhost:127.0.0.1)

由於需要配置熱點,所以需要對wlan0進行配置,故其WiFi功能需要被關閉,這裡使用eth0進行網路的連線,其已經預設配置為透過DHCP來自動獲取IP地址。連上網線之後透過

ifconfig

檢視eth0是否有固定的IP地址,用於判斷網路是否連線。
image

2、關閉wlan0的網路連線

終端輸入:

ip route

可以看到:
image
說明我的裝置透過eth0和wlan0連線到了網路,第一點已經提到了需要用到wlan0來開啟熱點,故這裡需要斷開wlan0的wifi連線功能再進行配置。
終端輸入:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

刪除裡面的全部內容,然後儲存退出重啟服務,一鍵三連~~~

3、樹莓派換源

因為後續需要使用apt install來安裝Linux軟體包,請確保自己的樹莓派的apt源是沒問題的。這裡不過多展開,後續會新增一些其他連結。

4、hostapd

hostapd可以將裝置的無線網路介面配置為熱點模式,使其成為一個軟AP,接受其他裝置的連線。

(1)安裝且停止服務

終端輸入指令進行安裝:

sudo apt install hostapd

停止hostapd的服務:

sudo systemctl stop hostapd

(2)熱點引數的配置

終端輸入:(如果沒用這個檔案,在這個路徑下新建一個即可)

sudo nano /etc/hostapd/hostapd.conf

填入:

interface=wlan0
driver=nl80211
ssid=???
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=???
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

ssid是熱點名稱;wpa_passphrase是熱點密碼,根據需要修改。
填完之後如圖:
image

(3)給hostapd指定熱點配置檔案的路徑

終端輸入:

sudo nano /etc/default/hostapd

去掉DAEMON_CONF的註釋,並配置成/etc/hostapd/hostapd.conf,如圖所示。意思就是告訴hostapd要從/etc/hostapd/hostapd.conf讀取配置引數。具體如圖:
image
最後重啟hostapd服務,終端輸入:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

稍等就可以看到產生的熱點訊號了。但是此時熱點無法連線,因為此熱點訊號沒有連線網路,也無法給客戶端分配IP。
image

5、dhcpcd

dhcpcd是用於進行IP地址相關操作的軟體包,這裡我們用這個軟體包來進行熱點IP地址的固定。
終端輸入指令進行安裝:

(1)安裝dhcpcd

sudo apt install dhcpcd

(2)編輯配置檔案

編輯dhcpcd配置檔案,終端輸入:

sudo nano /etc/dhcpcd.conf

刪除當中的全部內容,然後輸入:

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

這裡設定的static ip_address最好不要和你周圍的無線網路在同一個網段,比如你家無線網路的網段是192.168.2.X,那麼這裡的靜態IP的第三位就設定成其他的就好

儲存好之後,重啟dhcpcd 服務,終端輸入:

sudo systemctl restart dhcpcd

(3)檢查

之後檢查wlan0的IP地址,終端輸入

ifconfig

可以看到IP地址被固定了,如圖:
image

6、dnsmasq

dnsmasq軟體包用於給連線熱帶的裝置自動分配IP地址

(1)安裝dnsmasq

終端輸入:

sudo apt install dnsmasq

停止其服務:

sudo systemctl stop dnsmasq

(2)配置引數

終端輸入:

sudo nano /etc/dnsmasq.conf

刪除其全部內容,填入:

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

含義:dhcp 服務會給客戶端分配 192.168.4.2 到 192.168.4.20 的 IP 空間,24 小時租期。
如圖:
image
之後重啟服務。終端輸入:

sudo systemctl reload dnsmasq

如果報錯了,就執行如下指令:

sudo systemctl unmask dnsmasq
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq

(3)嘗試連線熱點

服務重啟之後,熱點就可以連線了。因為樹莓派給連線熱點的裝置分配了IP。不過此時還無法上網。
image

7、啟用IP轉發

終端輸入:

sudo nano /etc/sysctl.conf

找到並且取消註釋以下行:

net.ipv4.ip_forward=1

如圖:
image

8、配置樹莓派防火牆

終端輸入:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

之後儲存防火牆規則:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

之後讓裝置每次重啟都過載這個防火牆規則:

sudo nano /etc/rc.local

將iptables-restore < /etc/iptables.ipv4.nat加到最後一行exit 0的前面,如圖:
image

9、重啟裝置,enjoy yourself~

重啟全部服務:

sudo systemctl unmask hostapd
sudo systemctl unmask dnsmasq
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
sudo systemctl start hostapd
sudo systemctl start dnsmasq

重啟裝置:

sudo reboot

相關文章