
私は2つのワイヤレスインターフェースを備えたPiを持っています。1つはネットワークゲートウェイに接続され、もう1つはアクセスポイントとして機能しています。ホストapd。
AP は DHCP または NAT ソフトウェアを実行しておらず、複数のデバイスが接続できるように hostapt を実行しているだけです。
ノートパソコンをこのアクセスポイントに接続しようとしています。
静的 IP アドレスを使用し、ゲートウェイ アドレス、DNS などを手動で入力すると、完全に正常に動作します。
しかし、DHCP を使用して接続しようとすると機能しません。Wireshark から、接続を試みると、最初の DHCP 検出パケットがアクセス ポイントに送信されていることが確認できます。ただし、Pi で実行されている Python で作成したブリッジ ソフトウェアがあるにもかかわらず、このパケットはゲートウェイに接続されたインターフェイスから転送されません。
ソフトウェアは、パケットを受信したインターフェイスの反対側にパケットを送信するだけです (これはソフトウェアの機能を単純化しすぎていますが、これがこのシナリオの一般的な要点です。ソフトウェアはネットワーク ブリッジです)。したがって、AP インターフェイスは DHCP パケットを受信してゲートウェイに転送し、ゲートウェイは DHCP オファーなどで応答する必要があります。
ソフトウェアは動作しており、ブリッジング ソフトウェアを通過した他の DHCP 通知メッセージをラップトップで確認できるほか、ブリッジング ソフトウェアがブロードキャストであるため現在ラップトップに送信している他の DHCP 検出/オファー/要求/確認メッセージも確認できます。
これらの DHCP Discover パケットがゲートウェイに転送されない理由は、hostapd アクセス ポイントの設定または機能によるものではないかと考えています。
私が書いたコードは DNS などでは問題なく動作しているので、問題はコードにないはずです。
さらに、DHCP 検出パケットを手動で作成すると、ゲートウェイに接続されたインターフェイスによって問題なく転送および出力されます。DHCP パケットが転送されないのは、ラップトップが接続先のアクセス ポイントから IP アドレスを取得しようとして自動的に送信された場合のみです。
アクセス ポイントは IP アドレスを直接提供する必要はなく、ネットワーク上の実際の DHCP サーバーに接続して IP アドレスを正しく割り当てることができると想定します。
パケットが他のインターフェイスに転送される前にアクセス ポイントによって吸収される理由について何かご存知の方がいらっしゃいましたら、ぜひお知らせください。
答え1
「アップリンク」側で WPA2 を使用していると想定します。WPA2 は暗号化時に MAC アドレスに関連付けられているため、これは機能しません。したがって、パケットのリレーは機能しません。
プロキシ ARP または IP 転送を使用して何かを構築する必要があります。
Python で車輪の再発明をしようとしても心配はいりません。すべて Linux カーネルにあります。ただし、DHCP 検出はブロードキャストであり、応答は送信 MAC へのレイヤー 2 ユニキャストであることを忘れないでください。したがって、ここで変換する場合は、パケット内を書き換える必要があります。Raspi はまさにそれを実行するスイッチであるため、DHCP リレー設定で実験する方が簡単かもしれません。
私の最初の推奨事項は、中間ボックスで NAT と DHCP サーバーを動作させてセットアップを動作させ、次に 2 番目のステップとして、より透過的な中間ボックスに向けて作業を進めることです。