使った
Sudo tcpdump -v -i eth0 ether proto 0x0842 or udp port 9
WakeMeOnLan
からのNirSoft
がコンピュータをウェイクアップしても何も表示されませんでした。
Wireshark
と同じ
Wikipedia は、Wake-on-LANパケットの構造についてこれを述べています(私の強調):
マジックパケットは、すべての255(FF FF FF FF FF FFの16進表記)のペイロード6バイトを含むブロードキャストフレームであり、その後にターゲットコンピュータの48ビットMACアドレスが16回繰り返され、合計で102バイトになります。
マジックパケットは上記の文字列についてのみスキャンされ、完全なプロトコルスタックによって実際には解析されないため、任意のネットワーク層およびトランスポート層プロトコルとして送信できます、ただし、通常はUDPデータグラムとしてポート0、7、または9に送信されるか、Ethernetを介してEtherType 0x0842として直接送信されます。
したがって、現在のキャプチャフィルターがすべてのWOLパケットをキャッチすることは保証されていません。そして ドキュメントによると 、WakeMeOnLanアプリケーションにはWOLパケットを送信する複数の方法があるようです。そのため、アプリケーションが送信しているWOLパケットの種類を見つけるために、フィルタリングされていない短いテストキャプチャを作成する必要があるかもしれません。 、それに応じてフィルターを調整します。
このコマンドを使用すると、 tcpdump からの出力を、起こされようとした mac-address だけに減らすことができます。
tcpdump -UlnXi eth0 ether proto 0x0842 or udp port 9 2>/dev/null |
sed -nE 's/^.*20: (ffff|.... ....) (..)(..) (..)(..) (..)(..).*$/\2:\3:\4:\5:\6:\7/p'
これはetherwake
(ethertype 842)とwakeonlan
(UDP:9)からのウェイクアップをキャッチしますが、 promiscuous mode
で実行されるインターフェースが必要です。
この例の出力は次のようになります。
44:55:33:11:56:66
11:22:33:66:56:af
11:be:33:ef:56:af
たとえば、次のいずれかで別のコンピューターからテストするには:
wakeonlan 12:de:ad:be:ef:56
etherwake -i wlp2s0 -b 31:32:33:34:35:36
UDP(例:wakeonlan
コマンド)経由で送信されるものだけをキャッチするには、無差別モードを必要としない次のスクリプトを使用できます。
nc -dknl -p 9 -u |
stdbuf -o0 xxd -c 6 -p |
stdbuf -o0 uniq |
stdbuf -o0 grep -v 'ffffffffffff' |
while read ; do
echo ${REPLY:0:2}:${REPLY:2:2}:${REPLY:4:2}:${REPLY:6:2}:${REPLY:8:2}:${REPLY:10:2};
done
while read ... echo blabla
の代わりに、他のアクションを起動できます。