SSIDまたはMACアドレス(両方が知られている)を「PING」して、特定のAPアドレスが存在するかどうかを検出したいと思います。
これを達成するためにどのプログラムを使用できますか?ルートとして実行される単純なスクリプトを作成しています。
(このようなことをしないことを願っていますiwlist scan | grep XX
)
答え1
この機能は、iw(list) scan
宛先SSIDを指定せずに、すべてのチャネルでProbeRequestメッセージを1つずつ送信することです。チャネル範囲内のすべてのAPはProbeResponseを使用して応答します。
必要なのは、特定のSSIDにProbeRequestを送信することですiw wlanx scan ssid xxx
。iw wlanx scan freq xxxx ssid xxxx
iw
出力を解析したくない場合は、次のように単純なプログラムを作成できます。NL80211スキャンを実行するためのインターフェイス(NL80211_CMD_TRIGGER_SCANコマンド)とネイティブスキャン結果にアクセスするか、次のものを使用できます。これあなたのために働く
答え2
通常、APはレイヤ2デバイスなので、pingできません。つまり、データリンクレイヤで動作します。このレイヤはICMPエコーに応答しません。このレイヤでAPが機能しているかどうかを知る唯一の方法は、ネクストホップ(通常はゲートウェイ)をpingできることを確認することです。 APを具体的に確認するには、トラフィックが着信するかどうかをレイヤ2の方法で把握する必要があります。
メモ:APに接続できれば、通常はAPが良いという意味です。
ただし、APが正しく機能していることを確認してください。まず、APのSSID(MACアドレス)を見つけてくださいiwlist
。これを実行したら、tcpdump
SSIDがコンピュータのMACアドレスにパケットを受信していることを確認して実行します。
例:
tcpdump -i wlan0 -e -nn 'ether src XX:XX:XX:XX:XX:XX && ether dst FF:FF:FF:FF:FF:FF'
このトラフィックを見ると、APからトラフィックを受信しており、正しく接続されていることがわかります。
tcpdump -i wlan0 -e -nn 'ether src XX:XX:XX:XX:XX:XX && ether dst YY:YY:YY:YY:YY:YY'
XXをAP(SSID)のMACアドレスに置き換え、YYをワイヤレスインターフェイスのMACアドレスに置き換えます。ここにトラフィックが表示される場合、AP は特に無線インターフェイスにトラフィックを送信します。これにより、リンクされたアイテムをより明確に把握できます。
この回答は、あなたが経験しているエラーがAP接続に関連していることを確認したいと仮定しています。
他のものが必要な場合(利用可能なSSIDに接続されているNetworkManagerに似たアプリケーションなど)、質問に追加してください。