web-dev-qa-db-ja.com

クライアントモードを使用してDD-WRTのMACアドレスでWiFiアクセスポイントをブロックWAN接続

私のルーターのWAN接続は、サブスクリプションベースのパブリックWiFiネットワークに接続するように構成されています。私は事実上、パブリックWiFiネットワークを拡張しています。

パブリックネットワークには、ルーターの範囲内に3つの異なるアクセスポイントがあると判断しました(すべて同じSSIDを使用していますが、チャネルが異なります)

パブリックWiFiSSIDのパブリックWiFiAPの1つに障害があると判断しました。私のルーターのWAN接続は問題なく正常なAP間をローミングしますが、不良APにローミングすると、ルーターが正常なAPの1つにローミングするまでインターネットアクセスが切断されます。

良いAPと悪いAPのMACアドレスを特定しました。

パブリックWiFiネットワークが私の制御下にない場合、MACアドレスを使用して障害のあるアクセスポイントをブラックリストに登録/ブロックする方法はルーターにありますか?

私のルーターはNetgearWNDR3700v4で、DD-WRT06-23-2014-r24461でフラッシュしました。

http://manpages.ubuntu.com/manpages/hardy/man8/iwconfig.8.html

apiwconfigオプションは有望に聞こえます:

man iwconfig(8)ap

可能であれば、アドレスで指定されたアクセスポイントにカードを強制的に登録します。このアドレスは、ワイヤレススキャンによって報告されたアクセスポイントのセルIDであり、ネットワークMACアドレスとは異なる場合があります。ワイヤレスリンクがポイントツーポイントの場合は、リンクのもう一方の端のアドレスを設定します。リンクがアドホックの場合は、アドホックネットワークのセルIDを設定します。接続の品質が低くなりすぎると、ドライバーは自動モードに戻る可能性があります(カードは範囲内で最適なアクセスポイントを選択します)。また、offを使用して、現在のアクセスポイントを変更せずに自動モードを再度有効にするか、anyまたはautoを使用して、カードを現在最適なアクセスポイントに強制的に再関連付けすることもできます。例:iwconfig eth0 ap 00:60:1D:01:23:45

接続するAPを手動で設定した場合でも、接続は不正なAPにローミングします。

DD-WRTコントロールパネルのWireless-Securityの「WirelessMACFilter」オプションを使用してみましたが、保存しても効果がないようです。これは、アダプタがクライアントモードであるため、設定が適用できないためと思われます。

また、次のようなさまざまなiwコマンドを試しました。

iw dev ath0 station del aA:BB:CC:DD:EE:FF

私は/proc/net/に注いで、値を読み書きするための何かを見つけたいと思っていましたが、それでも運がありません。

ランニング:

iw dev ath0 disconnect

接続がリセットされ、私のテストでは、アダプタは常に適切なアクセスポイントの1つに自動的に再接続します。しかし、その後、不確定な時間が経過すると、アダプタはローミングして不良アクセスポイントに戻り、インターネットアクセスが停止します。

現時点で私が見ることができる唯一の解決策は、独自の接続マネージャーを作成することですが、ツールを使用してそれを適切に行う方法を理解しないと、困難になります。

4
jon

Danielのコメントによると、startup.shは_/tmp/ath0_wpa_supplicant.conf_を変更して_bssid=<mac of good ap>_宣言に変数_network{}_を含め、続いて# kill -HUP "$(pidof "wpa_supplicant")"を変更してwpa_supplicantに構成を再読み込みするように通知できます。 。

これにより、アダプタはアクセスポイントに接続されたままになり、他のアクセスポイントへのローミングがブロックされます。

1
jon

あなたに正解を与えるために、あなたは辞書全体を読むことに時間を費やす必要はありません:

ATHEROSベースのDDWRTデバイスでは、これはBroadcomでは機能しないため、ルーターにtelnetして「ps」を実行すると_wpa_supplicant_というプロセスが生成された場合に機能します。

[管理]、[コマンド]に移動し、これを入力してカスタムスクリプトとして保存します。

_sed -i '7ibssid=xx:xx:xx:xx:xx:xx' /tmp/ath0_wpa_supplicant.conf

kill -HUP "$(pidof "wpa_supplicant")"
_

最初の行は、_wpa_supplicant_の7行目にbssid=(mac address of upstream router)行を挿入します。これにより、ネットワークセクションに挿入されます。 _less ath0_wpa_supplicant.conf_を使用して、フォルダ_/tmp_のtelnetプロンプトでネットワークがどの範囲にあるかを確認できます。

最初の回答者が述べているように、2行目は_wpa_supplicant_を再開します。

コマンドはそのままコピーアンドペーストします。行う必要がある唯一の変更は、アップストリームAPのMACをxx:xx ...に置き換えることです。

1
user498498