MACでNICにpingを実行できますか

DebianマシンのどこかにNICカードがあります。マシンの電源はオフになっていますが、後で(別のDebianマシンから)wake-on-lanマジックパケットを送信してウェイクアップできるように、NICカードがオンになっているかどうかを知る必要があります。カードのMACアドレスを持っています。 MACでイーサネットカードにpingを実行して、イーサネットカードがオンになっているかどうかを確認する方法はありますか?

ARPエントリを作成してみました:

arp -s 192.168.2.2 00-0c-0d-ef-02-03 ping 192.168.2.2 

NICカードにこのIPアドレスがないため、機能しませんでした。そのため、NICカードはping要求を受信しますが、応答しません。これを回避する方法はありますか?

Iイーサネットウェイクパッケージを使用してwake-on-lanメッセージを送信しています。

回答

ツールを使用した方が幸運かもしれません。代わりにarping。ツールpingは、 OSIモデルのレイヤー3レベルで機能します。 arpingはレイヤー2で機能します。

ただし、このツールを使用する場合は、システムのIPを知る必要があります。2つのバージョンがあります。それは、ほとんどのUnix(Alexey Kuznetsov)に含まれている標準のものであり、IPアドレスのみを処理できるバージョンです。 他のバージョン(Thomas Habets “)は、おそらくMACアドレスを使用してクエリを実行できます。

$ sudo arping 192.168.1.1 -c 1 ARPING 192.168.1.1 from 192.168.1.218 eth0 Unicast reply from 192.168.1.1 [00:90:7F:85:BE:9A] 1.216ms Sent 1 probes (1 broadcast(s)) Received 1 response(s) 

arpingpingと同様に機能しますが、ICMPパケットを送信する代わりに、ARPパケットを送信します。

システムの取得 ” ■MACのみを使用するIP

MACからIPへの逆ルックアップを実行する方法はいくつかあります。

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    次に、arpキャッシュで対応するマシンarp -anを探します。

  2. fping

    $ fping -a -g 192.168.1.0/24 -c 1 

    次に、上記と同じように、arpキャッシュを調べます。

  3. ping

    $ ping -b -c1 192.168.1.255 

    次に、上記と同じように、arpキャッシュを調べます。

  4. nbtscan(Windowsのみのホスト)

    $ nbtscan 192.168.1.0/24 Doing NBT name scan for addresses from 192.168.1.0/24 IP address NetBIOS Name Server User MAC address ------------------------------------------------------------------------------ 192.168.1.0 Sendto failed: Permission denied 192.168.1.4 MACH1 <server> <unknown> 00-0b-12-60-21-dd 192.168.1.5 MACH2 <server> <unknown> 00-1b-a0-3d-e7-be 192.168.1.6 MACH3 <server> <unknown> 00-21-9b-12-b6-a7 

コメント

  • arping MACアドレスをパラメータとして使用できます:arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek-誰かが基本的に私の答えをコメントとして投稿し、’ 2つのバージョンのarpingについて私が言ったことを読んでいなかった後にそれを行いました。他の回答は削除されたようですので、大胆な欲求不満を解消してくれてありがとう。
  • 助けてくれてありがとう。これを解決済みとしてマークします。 BIOSセットアップで’ WOLオプションが見つかりませんでした。これは私の推測です。BIOSではWOLがオンになっていませんでしたが、NICではオンになっています。そのため、NICは最初のWOLパケットでウェイクアップし、BIOSにメッセージを送信していました。しかし、BIOSでオンになっていないため、BIOSは何もしませんでした。この瞬間以降、NICは起動していたためpingに応答しましたが、マシンは応答しませんでした。簡単な質問:BIOSでWOLをオフにし、NICで同時にオンにすることは可能ですか?
  • @ AlastorMoody-あなたは’ NIC ‘のWOLがオンの状態でBIOSWOLをオフにすることはおそらく許可されています。ただし、BIOSがWOLをサポートしていない場合は’ ‘あなたは’ NICが使用している場合でも使用できるようになります。 WOLに関するウィキペディアの記事 en.wikipedia.org/wiki/Wake-on-LAN を参照してください。 “マジックパケットのトラブルシューティング”セクションで私と同じことを言います。
  • @niervol:arpingからMACアドレスへ:はい、Linuxからの arping 1。の2つの実装があります iputils 2。 ThomasHabetsによるarping 。 — 2。実装のみがMACアドレスにpingを実行できますが、そのようなpingは非常に注意が必要です。pingされたマシンにはTCP / IP(少なくともIPアドレス)が構成されている必要があり、ブロードキャストIPアドレスへのpingに応答できます。

回答

NICだけでは応答が送信されないため、通常のNICにpingを実行できません。

実行中のコンピューターのみが応答を送信できます

通常のネットワークインターフェイスカードは、それ自体では応答を送信しません。そのためには、常にコンピューター上で実行中のソフトウェアが必要です。

コンピューターのCPUの電源がオフの場合、pingに応答する実行中のソフトウェアはありません。

Wake-on-LANは単方向です

Wake-on-LAN を使用すると、コンピュータはNICのみの電源を部分的にオンにして受信できますイーサネットフレームとその中の魔法のウェイクアップシーケンスを探しますが、NICはそれでも応答を送信しません。 Wake-on-LANは厳密に単方向です。応答は送信されません。

例外

たとえば、完全な TCPハンドシェイクオフロードを実装するもののように、それ自体で応答を送信できる特定の特別なNICがあります。 a>。

コメント

  • +1 —これがOP ‘の質問。 ” Wake-on-LANは単方向です”。

回答

ether-wakeコマンドはMACアドレスで機能するため、(a)IPアドレスは必要ありません。(b)害を及ぼすことなくコマンドを送信できます(すでに起動している場合、起動しても影響はありませんか?)

arp -anを実行し、MACをgrepして、ターゲットホストのIPを取得します。ただし、arpはキャッシュであるため、キャッシュから「タイムアウト」した可能性があります(それでも「アウェイク」している可能性があります)。次に、ブルートフォース方式を使用してIPを検索する必要がある場合があります。たとえば、次のようになります。

 sudo nmap -sP 192.168.2.0/24 | less 

(次に、00:0c:0dを探します。 ef:02:03)-ファイアウォールなどが邪魔にならない場合に限ります!

コメント

  • 私は’今すぐマシンをウェイクアップしたくない。しかし、NICがメッセージを受信できるようにしたいので、オフサイトに移動してWOLパケットを介してマシンの電源を入れたときに、電源が入ることがわかります。そのため、’ IPまたはMACでpingを実行し、ウェイクアップしないようにします。
  • スリープマシンはpingに応答しません。マシンの電源がオンになっていて、IPでpingを実行すると(そしてホストが応答すると)、arpキャッシュにエントリが配置されます。そこにあるエントリがホストのMACアドレスと一致する場合、それが機能する合理的な可能性があります(ether-wakeが機能しない原因となる可能性のある他のネットワークファイアウォール、ルーター、およびその他の物理的な問題を除くそれに達する)。実際にオンサイトで別のホストにアクセスし、ターゲットマシンをスリープ状態にして、ether-wakeを試行します。 WOLの動作の性質上、リクエストはホストと同じサブネット上で送信する必要があります。
  • @DravSloan Bonjourプロキシ(例: Apples Time Capsuleは、この問題を処理するための非常に独創的な方法です。マシンはスリープしますが、ルーターはそれに応答し、プロキシが’処理できなくなった場合にのみウェイクアップします。
  • しない’最初にテストせずにWOLに依存しないでください。その場合は、IPMIカードを入手してください。

回答

私のアプリケーションは、ワークステーションにRSYNCするサーバーでした。ワークステーションのドキュメントディレクトリを取得します…しかし、ワークステーションには保証されたIPアドレスはありませんでしたが、既知のMACアドレスがありました(IPアドレスはDHCPによって実行されました)。このコードはpingのみを使用します。

export COUNTER=1 while [ $COUNTER -lt 255 ] do #ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" & # activate all 254 addresses in the subnet.. dont really need to grep the ping output ping 192.168.0.$COUNTER -c 1 -w 4 2> /dev/null | grep -B 1 " 0\% packet loss" > /dev/null & COUNTER=$(( $COUNTER + 1 )) done # wait till 254 background processes finished wait # the arp cache will automatically flush it"s incomplete entries in about 10 minutes... #echo "finished" # #SRC_SERVER_IP="192.168.0.160:873" SRC_SERVER_IP=$(arp -a | grep "00:22:4d:81:8f:76" | awk "{print $2}" | sed "s/[()]//g")":873" if [ $SRC_SERVER_IP == ":873" ] ; then echo "ws1.example.com is not on the network... exiting..." exit 0 fi 

回答

これはMACアドレスを介してpingを実行する簡単なスクリプトです。保存して実行するだけです。例
macping aa:bb:cc:dd:ee:ff

結果をデイジーチェーン接続して、条件付きで他のことを行うこともできます。例:

macping aa:bb:cc:dd:ee:ff && echo do something if online || echo do something if offline 

#!/bin/bash network=192.168.1.1/24 if [ "$#" -ne 1 ]; then echo Usage example: $0 aa:bb:cc:dd:ee:ff; exit 2; fi; nmap -sP $network >& /dev/null ip=$(arp -n | grep $1 | awk " { print $1 }") ping $ip -n -q -c 2 -i 0.2 -w 1 >& /dev/null if [ $? -eq 0 ]; then echo Device is online \($ip\) else echo Device is offline exit 1 fi; 

回答

これは異なることに依存しませんarpingのバージョンまたは複雑なbashスクリプト:

ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk " { printf $1 } ") 

実行速度がはるかに速いように見えるため、arpではなくarp-scanを使用しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です