ネットワーク上に MAC アドレスが存在するかどうかの確認がまだ機能しません (ping -b および arp)

ネットワーク上に MAC アドレスが存在するかどうかの確認がまだ機能しません (ping -b および arp)

これは、これ私の投稿です。

私は自分の携帯電話の MAC アドレスを持っています (Samsung Galaxy S9。ただし、これは重要ではありません)。ネットワーク上にあるかどうかを確認したいのですが。静的 IP がないため、MAC アドレスを使用して確認する必要があります。

携帯電話の MAC アドレスを で参照します[1]

  • 私の携帯電話では、ネットワークのランダム MAC アドレスはオフになっています (前の投稿ではそうではありませんでした)。以前はネットワークに接続するたびにランダム MAC アドレスが生成されていましたが、今は生成されません。
  • MAC アドレスがネットワーク上にあるかどうかを確認するには、次のようにします。
    ping -b 192.168.2.255 -c 20
    arp | grep -i "[1]"
    

これはイベントの「ログ」です:

#phone connected to network
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful

#phone NOT connected to network (turned of wifi on phone)
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful

2 回目は成功しないはずです。電話はネットワークに接続されていませんが、ARP 出力にはまだ表示されます。

私の電話には静的 IP アドレスがありませんが、ネットワークに接続すると、ほぼ常に同じ IP アドレスが取得されます。それで問題ありません。出力はping -b常に正しいです。電話がネットワークに接続されている場合、ほぼ常に取得する IP アドレスが (コマンドのping) リストに表示されます。電話が接続されていない場合、出力に「標準」の IP アドレスが表示されることはありません。したがって、ping は機能し、「最新」です。

したがって、私は arp は ping のように「最新」ではないと想定しています (ただし、これは単なる推測です)。ping が新しいテーブルを「作成」したとしても、arp はテーブルを更新しないと思います。しかし、これは前回の投稿のコメントに基づいて私が考えていることです: "すでにブロードキャスト ping (ping -b 192.168.2.255) を実行しています。これにより、IP アドレス 192.168.2 を持つすべてのオンライン デバイスの ARP テーブルが補充されるはずです。.*"

ヘルプ!

答え1

使用している場合ARPお使いの携帯電話がネットワークに接続されているかどうかを判断するには、携帯電話のARPコンピュータからのエントリARPテーブル。そうしないと、以前のエントリがそのまま残るため、変更を判断できなくなります。

特定のARPコマンドでエントリを削除しarp -d <IP_ADDR>、 コマンドですべてのエントリを削除しますsudo ip neigh flush all

しかし、私はナンマップスキャン用で、掃除する必要もありませんARPテーブルはもう必要ありません。このスクリプトを使用できます。

#!/bin/bash

mac="$1"
# Scanning network, and obtaining IP address of specfied MAC address, if exists.
PHONEIP=$(sudo  nmap -sP -n 192.168.2.0/24 | grep -B2 "$mac" | grep -Eoi "192\.168\.2\.[0-9]+")
if [[ $PHONEIP == "" ]];then
    echo "$MAC not found."
else
    echo "$MAC found at $PHONEIP"
fi

ただし、最初の引数として携帯電話の MAC アドレスを指定するか、行mac="$1"を に変更する必要がありますmac="<your-phone-mac>"

注意: このスクリプトを使用するには、スーパーユーザー権限が必要です。

関連情報