arp-aとnmap-snの違いは?

これら2つのコマンドを使用して、ネットワークをスキャンしてIPアドレスを見つけています。

arp -a nmap -sn 192.168.1.0/24 

何らかの理由で、私のスマートプラグ(およびその他のAndroidデバイス)は、arp -aで実行されたスキャンでのみ表示されます。誰かが理由を知っていますか?

回答

arp -aはキャッシュされたリストを出力しますこのホストと通信しているホスト/デバイス。したがって、スマートプラグやその他のデバイスが出力に表示されている場合は、Piの最後の再起動またはの再起動以降、このホストと通信していたことを証明しています その「ネットワーキング

一言で言えば:

あなたの nmap はPiから指定されたサブネットのOUTWARDスキャンを実行しています。

あなたの arp 出力は IP:macアドレスマッピングのリストです あなたのPIがトラフィックを交換したホストの。

したがって、 nmap スキャンでは多くのホストを表示できますが、 arp キャッシュでは のみ Piが通信しているホスト

192.168.1.21のPiのarpキャッシュを以下に示します。

arp -av gateway (192.168.1.18) at d4:ca:6d:XX:XX:5e [ether] on eth0 gateway (192.168.3.126) at d6:ca:6d:XX:XX:26 [ether] on wlan0 pi3Bplus-2 (192.168.1.22) at b8:27:eb:XX:XX:3c [ether] on eth0 

arp出力には ip:macアドレス (2)タイプのホストのマッピング:

A)ホスト( “つまり、トラフィックを直接交換できるpiと同じサブネット内の pi3Bplus-2 “)と

B)ホストのサブネット外のホストにトラフィックをルーティングするために必要なルーター(「ゲートウェイ」)。

192.168.1に注意してください。 22 は192.168.1にあります。 21 “s cache:これは、.21から.22にpingを実行したためです。したがって、エントリi n arpキャッシュは、トラブルシューティング時にホスト間の正しい接続の証拠です。もちろん、ICMPがファイアウォールでブロックされている場合、pingは失敗し、ホストの IP:mac マッピングはarpキャッシュに存在しません。

また、arpキャッシュは NOT 永続的!Piまたはネットワークを再起動すると、arpキャッシュが吹き飛ばされます。テスト時に実際に実行することをお勧めします。

コメント

  • 回答には混乱を招く可能性のあるものがいくつかあります。引用:" it 'の証明Piの最後の再起動または'ネットワークの再起動以降にこのホストと通信していました。 "-いいえ、以前に' ta(新規、継続など)接続がなかった場合、IPアドレスは5分後にキャッシュから削除されます。10分後に接続を継続すると、新しいarpリクエスト。リモートデバイスはアクティブですが、5分間キャッシュに表示されません。
  • 引用:" したがって、arpキャッシュのエントリは次のようになります。ホスト間の正しい接続の証明 "-いいえ、リモートデバイスをシャットダウンして5分以内にarpキャッシュを見ると、そのIPアドレスが見つかります。これはすべて問題が発生する可能性があるため、トラブルシューティングを混乱させる可能性がありますが、しばらくすると' t、特に一方向のarpリクエストが'正しく機能しません。
  • @Ingo arp aging should はそのように機能するはずですが、私の経験では、ガベージコレクションは'パージしません定義された期間に応じた古いエントリ。私の回答のテストは、同じサブネット(同じスイッチに接続されている)でアドレス指定された2つのPi 'を使用して数回互いにpingを実行して行われました& pingを停止します。このテストを繰り返してip -statistics neighbourを定期的に実行すると、' "とマークされたarpエントリが表示されます。 stale "は、20分以上経過しても残ります。だから私はarpエージングがどのように機能すると想定されているかについてあなたの意見を聞きますが、繰り返してください。ただし、優れた点!!!
  • さまざまな経験をしました;)プロキシarpを使用しているときに、リモートデバイスからRasPiへの一方向でのみarp要求が機能する状況に遭遇しました。接続は、リモートデバイスがRasPiに接続されている場合にのみ機能しました-5分間。逆に、(リモートから接続してから5分以内に)機能することもあれば、機能しないこともあります' t。この断続的なエラーを見つけるのは非常に困難でした(プロミスキャスモードで解決しました)。
  • とにかく-私たちの議論が示していることと私が信じていること:IPアドレスのarpキャッシュを求めることは、あなたがいない限り、保存ソリューションではありませんarpキャッシュを確認する前に、ブロードキャストアドレスにpingを実行します。ただし、'ネットワークの負荷が原因で提案しない可能性があります。

回答

これは実際にはRaspberryPiに固有の質問ではありません。とにかく、Raspberry PiのIPアドレスを見つけることは、ここで非常によくある質問と問題であるため、詳細な回答を提供します。

nmap はネットワークスキャナーであり、期待どおりに動作します。ネットワークをアクティブにスキャンしてデバイスを探します。

コマンド arp ip neighborを使用することをお勧めします)はスキャナーではありません。ローカルarpキャッシュの内容のみが表示されます。

イーサネット接続を確立するには、arpプロトコルが使用されます。 Macアドレスを持つどのイーサネットデバイスがどのIPアドレスを持っているかを尋ねます。見つかったMACアドレスからIPアドレスへのマッピングは、デフォルトで5分間ローカルarpキャッシュに保存されます。このマッピングは、リモートデバイスがpingクエリに応答しない場合でも、確立されたすべての接続に対して行われます。ただし、これは、過去5分間に接続が確立されていなかった場合、arpキャッシュにデバイスが見つからないことも意味します。

コマンドnmap -sn 192.168.1.0/24ポートスキャンを無効にして単純なpingスキャンのみを実行します。これにより、ping応答を抑制するデバイスは検出されません。これにより、arpキャッシュでIPアドレスが検出されても、アクティブなpingスキャンでは検出されない場合があります。次を使用してみてください。

rpi ~$ nmap -Pn 192.168.1.0/24 

これにより、ネットワーク上のすべての255IPアドレスの最初の1000ポートがスキャンされます。もちろん、これには非常に長い時間がかかります。 1つのポートのみを使用してスキャンするか、nmapの他のオプションを使用してデバイスを見つけることを検討してください。

回答

参照他の回答はここにあり、私は自分のpiのIPアドレスを見つけるためにこのスクリプトを思いついた:

RASPI_MAC_ADDR環境変数が設定されることを期待している(のMACアドレスあなたのパイ)。これは、arpを使用してキャッシュされた値を検索します。それ以外の場合は、nmapを実行してそれを検出します。

#!/bin/bash search_for_pi() { PI_IP_ADDR_LINE="$(arp -a | grep -m1 "$RASPI_MAC_ADDR")" } # run `arp -a` to find the pi"s mac address readonly RASPI_MAC_ADDR="${RASPI_MAC_ADDR:?Could not find RASPI_MAC_ADDR environment variable}" search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { # if the pi IP is not in cache, run an outward nmap scan to try and find it nmap -sP 192.168.1.0/24 >&2 search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { printf "Couldn"t find a device on the network with the mac address: %s\n" "${RASPI_MAC_ADDR}" >&2 exit 1 } } grep -oP "\([\d\.]+\)" <<<"$PI_IP_ADDR_LINE" | tr -d "()" 

nmapの出力はSTDERRにリダイレクトされるため、次のことができます。

alias pi="ssh pi@$(findpi-ip)"

更新されたスクリプト here

コメント

  • 質問は次のとおりです:何らかの理由で、私のスマートプラグ(および他のいくつかのAndroidデバイス)は、arp-aで実行されたスキャンにのみ表示されます。誰かが理由を知っていますか?
  • それらは192.168.1 ….範囲または10.1.10 ….範囲にありますか?更新されたスクリプトはこちら

コメントを残す

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