Tampilkan daftar komputer di LAN di Linux


62

Saya seorang web dev yang mencoba menangani keamanan dengan lebih baik. Saya mencoba mencari cara (pada distro berbasis Linux / Debian) untuk membuat daftar semua komputer di LAN yang sama dengan netbook saya. Saya mencoba "arp -n" tapi saya tidak merasa ini daftar lengkap, karena iPhone saya berada di router wi-fi yang sama dengan netbook saya, dan itu tidak muncul. Apakah ada cara yang lebih baik untuk mendapatkan daftar lengkap mesin yang semuanya berbagi gateway yang sama?


Jawaban:


58

Dapatkan nmap . Ini adalah program yang digunakan Trinity dalam Matriks dan Anda dapat melakukan pemindaian untuk menemukan semua perangkat yang terhubung ke LAN yang Anda gunakan dan lainnya.

Inilah panduan referensi.


16
BAIK. Sepertinya "sudo nmap -sL 123.123.123. *" Adalah yang saya cari, atau mungkin -sP bukan -sL. Terima kasih!
CaptSaltyJack

2
instal nmap dengansudo apt-get install nmap
saintali

1
Saya pikir ini sebenarnya adalah situs web yang serius, lol +1
user10089632

38

Ini yang saya gunakan, nmap, dan alamat yang menggunakan notasi blok CIDR dari jaringan yang ingin Anda pindai. Pertama, Anda perlu menginstal nmap karena mungkin tidak diinstal sebelumnya dengan distro Anda. Di Ubuntu:

sudo apt-get install nmap

Selanjutnya cari tahu alamat jaringan Anda dengan menggunakan ifconfig:

ifconfig

keluaran ifconfig untuk antarmuka yang ingin saya pindai:

wlan1     Link encap:Ethernet  HWaddr 00:1f:3b:03:d2:bf  
          inet addr:192.168.1.104  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link
          ...

Gunakan addr inet dan Mask untuk mengetahui alamat jaringan dalam notasi CIDR, lebih lanjut tentang CIDR di sini . Alamatnya adalah:

192.168.1.0/24

Jalankan nmap menggunakan parameter -sP, yang akan memindai tidak lebih jauh dari memeriksa apakah host online:

sudo nmap -sP 192.168.1.0/24

output nmap akan terlihat seperti ini:

Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST
Nmap scan report for 192.168.1.1
Host is up (0.013s latency).
MAC Address: -MAC ADDRESS- (Cameo Communications)
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds

Itu saja, jika Anda membutuhkan bantuan lebih lanjut dengan nmap, lihat dokumentasi resmi nmap , atau jalankan:

nmap --help 

2
nmap -sA 192.168.1.0/24 Opsi nmap -sAmenunjukkan hasil deskriptif yang sama dengan keterbacaan yang lebih baik, yang mencakup nama perangkat, IP, mac, dll seperti dengan opsi -sP.. Saya pribadi lebih suka -sA -sP untuk dibaca.
Jayzcode

17

arp -nhanya menampilkan mesin pada LAN Anda yang sudah Anda bicarakan dengan mesin Anda. Anda bisa membuat daftar itu terisi lebih baik dengan mem-ping alamat broadcast dan multicast semua-host:

Alamat broadcast "all ones" (dalam biner). Perhatikan bahwa sebagian besar tumpukan IP akan menerjemahkan ini ke alamat broadcast subnet untuk semua subnet yang Anda lampirkan:

ping 255.255.255.255

Alamat broadcast subnet untuk subnet Anda saat ini. Jadi dengan asumsi Anda menggunakan 192.168.1.0/24:

ping 192.168.1.255

Alamat multicast "semua host". Saya sangat menyukai yang ini karena lebih cenderung menemukan host yang dikonfigurasi untuk subnet IP lainnya, yang kebetulan terhubung ke LAN Ethernet yang sama dengan Anda:

ping 224.0.0.1

Perhatikan bahwa metode ini, dan metode lain yang saya lihat disebutkan dalam Jawaban lain sejauh ini, hanya mencari host yang dapat dijangkau IP di jaringan saat ini. Mungkin itu yang perlu Anda pedulikan, tetapi mungkin bagi penyerang untuk mengintip, atau melakukan hal-hal buruk pada, jaringan tanpa terlihat melalui IP.


8

ip neighdan hosts. TIDAK perlu nmap / TIDAK perlu sudo .

Berdasarkan ini, Anda bisa membuat skrip Python:

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

Unduh via

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py

(atau hanya arp... Saya tidak melihat itu sebelumnya)


atau hanyaip neigh | awk '{ print $1 }' | xargs -n1 host
blockloop

ip nSingkatnya. Mungkin lebih baik ip n | grep REACHABLE.
Pablo A

4

Saya tidak menemukan jawaban yang ada cukup memuaskan, jadi saya pikir saya akan mencoba. Lagi pula, FAQ menyarankan untuk menyediakan konteks untuk tautan .

nmapitu bagus, jika agak membingungkan untuk digunakan. Berikut adalah sesuatu yang saya jalankan untuk menemukan perangkat jaringan lokal yang sebagian besar dapat di-copy-paste. nmap -sP(atau nmap -sn) memindai dengan melakukan ping . Ada opsi lain untuk 'pencarian host', seperti dengan nmap -sLatau nmap -Pn.

Cara # 1.

ehtesh@x200arch:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1.
ehtesh@x200arch:~$ ip addr show wlp3s0 | grep "inet "
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
ehtesh@x200arch:~$ arp -a
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
ehtesh@x200arch:~$ nmap -sP 172.18.72.0/24
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-12-17 20:08 EST
Nmap scan report for 172.18.72.2
Host is up (0.017s latency).
<... 15 IP addresses snipped ...>
Nmap scan report for 172.18.72.253
Host is up (0.13s latency).
Nmap done: 256 IP addresses (17 hosts up) scanned in 5.74 seconds
ehtesh@x200arch:~$ arp -a | sort -n -k 1,1                            
? (172.18.72.126) at ec:35:86:4a:37:d2 [ether] on wlp3s0
? (172.18.72.148) at 10:9a:dd:b8:79:71 [ether] on wlp3s0
? (172.18.72.178) at 9c:20:7b:7b:08:ba [ether] on wlp3s0
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
? (172.18.72.253) at b8:78:2e:19:05:0b [ether] on wlp3s0
? (172.18.72.2) at 00:14:1c:da:e1:c2 [ether] on wlp3s0
? (172.18.72.40) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.43) at d8:c7:c8:ce:0f:60 [ether] on wlp3s0
? (172.18.72.44) at d8:c7:c8:ce:0f:68 [ether] on wlp3s0
? (172.18.72.45) at 6c:f3:7f:c6:71:16 [ether] on wlp3s0
? (172.18.72.46) at 6c:f3:7f:c4:4c:b3 [ether] on wlp3s0
? (172.18.72.47) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.48) at 24:de:c6:c6:b6:78 [ether] on wlp3s0
? (172.18.72.49) at 24:de:c6:c6:b6:e6 [ether] on wlp3s0
? (172.18.72.51) at 00:9c:02:d0:4c:4e [ether] on wlp3s0
? (172.18.72.54) at 00:23:76:99:99:bf [ether] on wlp3s0
? (172.18.72.62) at 8c:70:5a:0d:06:18 [ether] on wlp3s0
? (172.18.72.63) at 7c:e9:d3:51:86:55 [ether] on wlp3s0
? (172.18.72.64) at a0:88:b4:47:eb:c8 [ether] on wlp3s0

Cara # 2. Saya tahu ini bekerja, tetapi saya tidak bisa mengatakan apakah ini cara yang tepat untuk pergi.

ehtesh@x200arch:~$ #ifconfig | grep broadcast
ehtesh@x200arch:~$ ip address show wlp3s0 | grep brd
    link/ether 00:1e:65:bf:1b:42 brd ff:ff:ff:ff:ff:ff
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
ehtesh@x200arch:~$ ping -b -c 3 -i 20 172.18.75.255
<... similar output to above ...>

Saya akan senang mengetahui jika ada cara yang lebih efektif. Sampai saat itu, saya berpegang teguh pada ini.


4

Anda bisa mencoba ping semua subnet yang diberikan dengan skrip shell linux kecil misalnya

$ for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done

Dalam kasus saya mengatakan UP untuk semua dan kemudian ip nmengatakan GAGAL untuk semua.
Pablo A

3

Hunt adalah alat baris perintah yang mampu membuat daftar mesin saat mereka disiarkan melalui jaringan untuk mendapatkan informasi. Ini menggunakan data TCP, UDP, ICMP dan ARP untuk membangun daftar alamat MAC aktif di jaringan. Ini adalah alat pasif yang bekerja dengan mendengarkan pada kabel.


4
Saya tahu bahwa ada halaman manual, tetapi akan bermanfaat untuk melihat contoh dalam jawabannya.
Ehtesh Choudhury

2

Untuk daftar perangkat terhubung yang lebih ringkas:

nmap -sL 192.168.0.* | grep \(1

Penjelasan.

nmap -sL 192.168.0.* akan mendaftar semua IP di subnetwork dan menandainya, yang memiliki nama:

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

Karena semua catatan menarik dimulai dengan kurung (dan digit 1, kami memfilternya dengan | grep \(1(backslash diperlukan untuk keluar dari kurung)

Quirk
Berhati-hatilah bahwa jika dua perangkat memiliki nama yang sama, nmapakan menampilkan hanya satu, yang terhubung ke router lalu


2

Untuk memindai status berbagai alamat IP, ini bagus dan sederhana:

sudo nmap -sn 192.168.1.2-20

Dimana:

         -sn: Ping Scan - disable port scan

catatan:

  • Dalam rilis Nmap sebelumnya, -sndikenal sebagai-sP

Saya melakukan ini pada Mac OS X (yang didasarkan pada BSD). Saya tidak yakin apakah versi Linux memiliki perbedaan.


1
Brilliant, saya harus mengetikkan: sudo nmap -sP 192.168.178.0-255. Ini melakukan pemindaian di subnet saya.
Leo Gerber

1

1. Solusi alternatif jika siaran dan nmaptidak tersedia:

seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time=
arp -a

2a. atau tanyakan saja server nama domain Anda :

seq 254| awk '{print "192.168.2."$1}' |nslookup | grep name

2b. tanpa awk

echo -e 192.168.2.{1..10}"\n" |nslookup |grep name
  1. ping semua pingable Jaringan-Devices di 192.168.2.0/24 subnet secara paralel (untuk mengurangi run time). Setelah itu arpharus menampilkan setiap perangkat, yang menjawab.

  2. tidak memeriksa koneksi aktif atau saat ini, tetapi mencantumkan semua koneksi yang disediakan layanan domain lokal, bahkan yang lama.

Penjelasan lebih rinci:

  • seq 254untuk membuat semua angka dari 1 sampai 254 (untuk semua nomor 100-150: seq 100 150)
  • xargsmemanggil pingdan mengganti "IP" ( -iIP) dengan seqnomor uence dari stdin, jadi 192.168.2.IP berubah menjadi 192.168.2.1 untuk seqnomor pertama , -Pmenentukan jumlah pingproses bersamaan yang xargsharus dimulai, saya memilih jumlah yang sama +1 sebagai alamat ( = 254) saya tertarik.
  • pingdengan ip-address yang dimodifikasi oleh xargs ( 192.168.2.IP) dan hanya melakukan ping sekali ( -c1); Anda harus menggunakan pengidentifikasi yang sama seperti yang ditentukan untuk xargs atas -iargumen dalam kasus iniIP
  • grep time= untuk menghapus setiap baris yang berisi informasi berlebihan, kami hanya tertarik pada jawaban, yang memberikan waktu bolak-balik (= mendapat tanggapan)
  • arp -a untuk menampilkan pasangan nama (ip) yang valid

Saya menyebutnya perintah pingall saya dan membuatnya tersedia melalui alias di ~/.bashrc:

alias pingall='seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time='

1

Anda bisa menggunakan fping sudo apt-get install fping (dalam OS mirip debian).

fping mirip dengan ping, tetapi kinerjanya jauh lebih baik saat melakukan ping beberapa host. The r 1 bendera memberitahu fping untuk melakukan hanya satu putaran. Bagian 2> 1 memungkinkan grep untuk memfilter output.

$ fping -g -r 1 192.168.1.0/24 2>1 | grep "alive"

Akan menampilkan sesuatu seperti:

192.168.1.1 is alive
192.168.1.10 is alive
192.168.1.15 is alive
192.168.1.27 is alive

Ada juga flag yang menarik untuk nmap yang memungkinkan Anda melihat vendor MAC - jika diketahui. Gunakan dengan sudo untuk melihat alamat MAC.

$ sudo nmap -sP 192.168.1.0/24

Anda akan mendapatkan misalnya:

Starting Nmap 7.40 ( https://nmap.org ) at 2019-05-23 18:49 CEST
Nmap scan report for 192.168.1.14
Host is up (-0.036s latency).
MAC Address: 20:F4:1B:E5:8F:7B (Shenzhen Bilian electronic)
Nmap scan report for 192.168.1.15
Host is up (-0.084s latency).
MAC Address: A4:31:35:E8:58:9E (Apple)
Nmap scan report for 192.168.1.27
Host is up (-0.15s latency).
MAC Address: 34:8A:7B:38:E3:14 (Samsung Electronics)
Nmap scan report for 192.168.1.29
Host is up (0.010s latency).
MAC Address: 80:2B:F9:75:F8:FF (Unknown)
Nmap scan report for 192.168.1.10
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 25.52 seconds
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.