接入點未將 DHCP 封包轉送到網關以分配 IP - Raspberry Pi Bridge

接入點未將 DHCP 封包轉送到網關以分配 IP - Raspberry Pi Bridge

我有一個帶有 2 個無線介面的 Pi,其中 1 個連接到網路網關,另一個充當存取點主機

AP 不執行任何 DHCP 或 NAT 軟體,僅執行 hostapt 以允許多個裝置連接到它。

我正在嘗試將我的筆記型電腦連接到此接入點。

使用靜態 IP 位址並手動輸入網關位址、DNS 等,效果非常好。

但是,當我嘗試使用 DHCP 連線時,它不起作用,從wireshark 中我可以看到初始 DHCP Discover 封包在嘗試連線時傳送到存取點。然而,儘管我有一些用 python 編寫的橋接軟體在 Pi 上運行,但該封包不會從連接到網關的介面轉發出去。

該軟體只是將資料包發送到接收資料包的相反介面上(其功能過於簡單化,但這是此場景的一般要點,它是一個網橋)。因此 AP 介面應該接收 DHCP 封包並將其轉送到網關,網關應該回覆 DHCP 提供等。

該軟體可以正常工作,因為我可以在我的筆記型電腦上看到已通過橋接軟體的其他DHCP 通知訊息,以及橋接軟體目前發送到我的筆記型電腦的其他DHCP 發現/提供/請求/確認,因為它們是廣播。

我想知道這些 DHCP Discover 封包未轉送到網關的原因是否是由於 hostapd 存取點的某些設定或功能所致?

我確信問題不在於我編寫的程式碼,因為它對於 DNS 等來說運作得非常好。

此外,如果我手動製作DHCP 發現封包,然後它會由連接到網關的介面轉送和輸出,不會出現任何問題,只有當我的筆記型電腦嘗試取得IP 位址自動發送DHCP 封包時,它們才不會會被轉送從它嘗試連接的接入點。

我假設存取點不需要直接提供 IP 位址,但可以聯絡網路上的實際 DHCP 伺服器來正確分配 IP 位址。

如果有人知道為什麼封包在轉發到其他介面之前似乎被接入點吸收,請告訴我!

答案1

我假設您在“上行鏈路”端使用 WPA2。這不起作用,因為 WPA2 在加密時與 MAC 位址綁定。所以中繼資料包將無法運作。

您需要使用代理 arp 或 IP 轉送來建立一些東西。

如果你嘗試在 python 中重新發明輪子,別擔心,一切都在 Linux 核心中。但請記住:DHCP Discover 是廣播,而答案是發送到發送 MAC 的第 2 層單播。因此,如果您在這裡進行翻譯,則需要在資料包內部進行重寫。嘗試 DHCP 中繼設定可能會更容易,因為 Raspi 就是一個交換機,可以實現這一點。

我的第一個建議是讓設定與中間盒上的 NAT 和 DHCP 伺服器一起工作,然後作為第二步,努力實現更透明的中間盒。

相關內容