web-dev-qa-db-ja.com

ネットワーク-他のコンピューターと共有-クライアントのIPアドレスを見つける方法

ハードウェアは次のようなものです。

  • WiFi経由でインターネットにアクセスできるラップトップ。ルーターは実際にはアクセスできません。
  • SDイメージといくつかの追加パッケージを必要とするヘッドレスバナナ/ラズベリー/ Your-Favorite-Flavor Pi。

そこで、Piとラップトップの間に一時的なクロスオーバーケーブルを用意し、ラップトップのイーサネットポートを「他のコンピューターと共有」(*)として設定し、SDカードのイメージを作成して、Piを起動します。さて、Piにはどのアドレスがあるので、SSHで接続できますか

特定のアドレスを強制する必要はありません この質問が望むように 。私はそれが何であるかを知りたいだけです。


(*)ネットワーク通知->接続の編集...->有線接続1->編集ボタン->IPv4設定タブ->方法=他のコンピューターと共有

5
AaronD

できることがいくつかあります。ラップトップからraspberryへの単一のイーサネット接続がある場合、arp-scanで十分です。まず、イーサネットインターフェースの名前を確認します。私の場合、それはeth3です。したがって、以下に例を示します。

bash-4.3$ Sudo arp-scan -I eth3 --localnet
[Sudo] password for xieerqi: 
Interface: eth3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.42.0.40  b8:27:eb:96:38:91   (Unknown)

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.459 seconds (175.46 hosts/sec). 1 responded

出力では、RaspberryのIPアドレスが10.42.0.40であることがわかります。

arp-scanは非常に単純なアプローチであり、あまり汗をかく必要はありません。別の方法も使用できます。それらのいくつかを次に示します。

  • ネットワークの最初の3オクテットを知っていれば(たとえば、私の場合はip addr show eth3コマンドを使用して)、ホストの範囲をpingする簡単なスクリプトを作成できます。 (それを行うpythonスクリプトについては以下を参照してください)。
  • fpingは、標準のpingコマンドの代替であり、ホスト範囲のプローブを許可します
  • nmapを使用して、さまざまな方法でホスト検出を実行できます。特に、次のコマンド:nmap -e eth3 -sn 10.42.0.0/24が最適です--snオプション(フードの下でARP要求をブロードキャストMACアドレスに送信する)のみでホスト検出を実行するようにnmapに指示します-eオプションで指定されたインターフェイス。 10.42.0.0/24は、ネットワークのCIDR表記です。とても簡単です。
  • Wiresharkは、イーサネットインターフェイスでパケットをキャプチャするためにも使用できます。もちろん、ラズベリーはキャプチャするために最初にいくつかのパケットを送信する必要があるため、「おしゃべりな」ラズベリーを持っていない場合は動作しない可能性があります。ただし、キャプチャを開始し、UDPプロトコルでフィルタリングし、Raspberryでプラグを抜き差しすることができます。 DHCPリクエストと応答が表示されるはずです

    enter image description here

  • デバイスは、ホストがネットワークに現れたり消えたりするときに、時間の経過とともにarpテーブルを構築するため、arp -aコマンドを使用することもできます。

  • 標準のUbuntuを使用していて、代替DHCPサーバーをインストールしなかった場合、デバイスにIPが割り当てられたdnsmasqリースファイルを確認できます。例えば:

    bash-4.3$ cat /var/lib/misc/dnsmasq.leases 
    1479095355 b8:27:eb:96:38:91 10.42.0.40 localhost *
    

    ここに関連する質問を参照してください: Raspberry PiのDHCPリースが見つかりません


複数のデバイスが接続されたイーサネットスイッチがある場合、nmapおよびWiresharkアプローチは非常に便利です。

pingを使用したスクリプティングに言及したので、ここに1つあります。

from subprocess import *
network = '10.42.0.'
for num in range(255):
    i = str(num)
    dn = open('/dev/null','w')
    try:
        print('checking ' + network + i)
        check_call(['ping', '-c','1', '-W',
                    '1','-q',network + i],stdout=dn)
    except CalledProcessError:
        pass
        #print('10.42.0.' + i + ' is down')
    else:
        print('>>> ' + network + i + ' is up')

これにより、ネットワークの256アドレスの範囲(10.42.0.x)がpingされ、どのホストが稼働しているかが示されます。 pingは1秒後にタイムアウトするため、すべてをスキャンするには256秒かかります。ラズベリーが1つしかない場合は、IPがpingに応答した場合に終了するようにスクリプトを編集して、プロセスを高速化できます。特定の数のスレッドを作成することもできます。 arp-scanただし、より高速な代替手段のままです。

5

このリンクは役に立つかもしれません: https://www.raspberrypi.org/documentation/remote-access/ip-address.md

コア部分は次のとおりです。

Nmapをインストールします。

apt-get install nmap

Pingスキャンを実行します。

nmap -sn <your-subnet>

例えば:

nmap -sn 192.168.1.0/24

次に、次のような出力が表示されます。

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-10 12:46 GMT
Nmap scan report for hpprinter (192.168.1.2)
Host is up (0.00044s latency).
Nmap scan report for Gordons-MBP (192.168.1.4)
Host is up (0.0010s latency).
Nmap scan report for ubuntu (192.168.1.5)
Host is up (0.0010s latency).
Nmap scan report for raspberrypi (192.168.1.8)
Host is up (0.0030s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.41 seconds

Wi-Fiが利用可能な場合、モバイルアプリも使用することがあります: https://play.google.com/store/apps/details?id=ua.com.streamsoft.pingtools

1
Lorenzo Pizzari