wpa_supplicant連接到了路由,但是 udhcpc會分配到不同網段的ip,路由器ip為192.168.0網段,板子分配ip為192.168.1的網段
你提到的情況:
-
使用
wpa_supplicant
成功連接到路由器; -
然后通過
udhcpc
(DHCP客戶端) 獲取到了192.168.1.x
的 IP; -
而 路由器本身是在
192.168.0.x
網段;
這說明:
你的 WiFi 接入點(SSID)并不是路由器
192.168.0.x
這個主網段的 DHCP 服務,而是另一個設備或另一個虛擬網絡提供了 DHCP(192.168.1.x
網段)。
🔍 可能原因分析
? 1. 連接到了錯誤的 WiFi 網絡
這是最常見的原因。你以為連的是 192.168.0.x
網段的路由器,其實 wpa_supplicant
連上了另一個 AP(如熱點、另一個路由器、中繼等),它的 DHCP 分配的是 192.168.1.x
網段。
解決:
bash
復制編輯
iwconfig wlan0 # 查看當前連接的 SSID iw dev wlan0 link # 查看連接狀態、AP MAC 地址
確認連接的是你想要的 SSID,再檢查 wpa_supplicant.conf
內容是否有多個網絡配置,如果有多個,模塊可能自動連接了其它網絡。
? 2. 同一個路由器但啟用了“訪客網絡”
很多路由器支持雙SSID,例如:
-
主網:192.168.0.x
-
訪客網:192.168.1.x(隔離網絡)
如果你連接的是訪客SSID,就會被分配到 192.168.1.x
網段。
? 3. DHCP 響應來自其他設備(誤接入了中繼/AP)
可能你網絡上有一個“無線路由器/中繼/老AP”接入主路由的 LAN 口,這些設備自帶 DHCP 服務,并分配的是 192.168.1.x
。
這種情況你雖然“物理上連的是主路由”,但是 DHCP 響應優先來自別的設備。
排查方法:
bash
復制編輯
cat /var/lib/misc/udhcp.leases
或者:
bash
復制編輯
udhcpc -i wlan0 -v
查看日志中 DHCP server 的 IP,比如:
nginx
復制編輯
Sending discover... Received offer from 192.168.1.1
說明你是從 192.168.1.1
獲取的 IP,這個就不是你的主路由(你說主路由是 192.168.0.1
)。
? 4. 路由器下接了另一個 NAT 設備
有些人用舊路由做二級路由(WAN 口接主路由 LAN),會造成子網不同。
🛠? 建議的解決方法
🔧 確認你連接的是目標路由器 SSID
bash
復制編輯
iwconfig wlan0
或
bash
復制編輯
iw dev wlan0 link
確認當前連接的 SSID、BSSID(MAC 地址)是否是你期望的那個。
🔧 固定連接目標網絡,避免誤連
修改 /etc/wpa_supplicant.conf
,明確只連接一個網絡:
conf
復制編輯
network={ ssid="YourCorrectSSID" psk="your_password" priority=100 }
確保只有這一個 network
塊。
🔧 臨時手動指定靜態 IP(測試用途)
你可以嘗試先靜態設置正確網段的 IP,看是否能與主路由通信:
bash
復制編輯
ifconfig wlan0 192.168.0.100 netmask 255.255.255.0 up route add default gw 192.168.0.1
然后測試連通性:
bash
復制編輯
ping 192.168.0.1
🧠 進階建議:禁用 udhcpc 自動連接到非目標 DHCP
-
使用
tcpdump
或udhcpd -v
加日志觀察誰是 DHCP Server。 -
如果網絡里有多個 DHCP Server,需要關閉多余設備的 DHCP 服務,或者用
dnsmasq
來指定。
? 總結
你的板子從 udhcpc
獲取了錯誤網段的 IP,核心問題在于 DHCP Server 的來源與連接的 SSID 是否正確。請重點檢查:
檢查點 | 建議 |
---|---|
當前連接的 SSID | iw dev wlan0 link |
DHCP Server 地址 | udhcpc -i wlan0 -v |
wpa_supplicant.conf 配置 | 是否含有多個 network 條目 |
網絡中是否有多個 DHCP 服務 | 路由器/AP/中繼等 |
是否是訪客網絡 | 路由器設置檢查 |