
クライアントをインターネットに接続するためのアクセスポイントを持つWLANをインストールしました。クライアントが互いに通信できないことがわかるまで、当初はすべてがうまくいくようです。
詳細は次のとおりです。マシンはeth0を介してインターネットに接続され、wlan1を介してアクセスポイントに接続されます。実行中で、hostapd
NATdnsmasq
を使用して他のクライアントをインターネットに接続しています。
Client A Client B
192.168.1.143 192.168.1.235
\ /
\ /
\ /
Access Point, AP
wlan1: 192.168.1.1
eth0: 192.168.0.xxx
この時点で、クライアントは正常にインターネットに接続できます。アクセスポイントに接続できます(例:SSH経由)。そして、アクセスポイントはSSHを介してクライアントに接続できます。
これで問題は、クライアントAがクライアントBに接続できず、その逆も同様です。アクセス ポイントで使用すると、tcpdump
クライアント A がクライアント B に ARP 要求を送信することがわかります。ただし、クライアントBはこれらの要求をまったく受け取らず、応答することもできません。したがって、クライアントBのarpテーブルエントリは不完全です(その逆も同様です)。
テスト目的で、両方のクライアントに対してarpテーブルエントリを手動で設定しましたarp -s <ip> <hw_addr>
。今、すべてがうまくいっています。クライアントは互いに接続することも、インターネットに接続することもできます。しかし、実際には、すべてのクライアントシステムに対してarpテーブルエントリを手動で設定したくありません。
今私の質問は:問題はどこですか? arpテーブルを自動的に更新するには?調査するにはどこに行くべきですか?アクセスポイント(ルーティングテーブル、Hostapd、dnsmasq...)に問題がありますか?それともクライアントコンピュータに問題がありますか?
ps:どのマシンにもarptablesルールがインストールされていません。
$ arptables -L
Chain INPUT (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
編集する: ついに問題が見つかりました。
設定を再確認した後、別のUSB Wi-Fiアダプタを使用してテストを完了しました。私はその時すべてがうまくいくのを見て本当に驚きました。クライアントがARP要求を受信して応答しています。任意のクライアント間のPingとSSHもうまく機能します。
確実にするために、最初のUSB Wi-Fiアダプタに戻りました。今回も、クライアントはARP要求を受信(および応答)しません。したがって、これがHostapd構成またはカーネルarpテーブルの問題ではないことを確認できます。問題はWi-Fiアダプタのドライバにあります。
詳細は次のとおりです。
ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLANアダプタ
- 正常に動作できません。
- アクセスポイントはARP要求を受信しますが、クライアントはそれを受信しません。
ID 0bda:b812 Realtek Semiconductor Corporation
- 仕事は満足です。
- すべてのクライアント間のARP要求とARP応答は正常に機能します。
答え1
になるように設定を設定できます ap_isolate = 0
。
または、ap_isolate = 1
hair_modeを最初に設定します(ブリッジは同じインターフェイスを介してフレームを再送信する必要があります)。
echo 1 > /sys/devices/virtual/net/br-lan/lower_wlan.name/brport/hairpin_mode