Bagaimana saya menggunakan Linux untuk menemukan alamat IP yang tidak digunakan di jaringan saya?

28

Saya punya akses ke dua komputer (A dan B) di jaringan. Keduanya telah mendapatkan alamat IP statis dengan subnet mask dari 255.255.255.128 (saya memeriksa bahwa server DHCP tidak digunakan). Saya ingin mengkonfigurasi beberapa alamat IP ke mesin yang sama dan karenanya saya ingin tahu apa semua alamat IP yang sudah digunakan dalam subnet.

Dari pertanyaan sebelumnya , saya mencoba nmap -sP -PR 172.16.128.*perintah, tetapi, saya ragu tentang hasilnya karena perintah yang sama memberikan hasil yang berbeda pada dua komputer saya (A dan B). Pada A, menunjukkan hasil, daftar alamat 8 IP yang (seharusnya) sudah digunakan, termasuk dari A dan B .

Nmap done: 256 IP addresses (8 hosts up) scanned in 1.23 seconds

Tetapi pada B, hasilnya berbeda yaitu,

Nmap done: 256 IP addresses (0 hosts up) scanned in 0.00 seconds

Hasil pada B bahkan tidak menunjukkan alamat IP sendiri dan juga alamat IP A!

Apa yang sebenarnya saya lakukan salah di sini? Apakah ada cara yang sangat mudah di Red Hat Linux (RHEL) untuk menemukan semua alamat IP yang digunakan di subnet di mana komputer saya menjadi bagian darinya?

RHEL: 6.5
Nmap version: 5.51
Vishal Sharma
sumber
9
Siapa yang mengelola jaringan? Apakah Anda memiliki izin untuk menetapkan alamat IP sewenang-wenang ke host Anda?
Roger Lipscombe
4
Ya saya punya izin. Itu pertanyaan yang bagus.
Vishal Sharma
11
Satu-satunya cara untuk mendapatkan jawaban yang tepat adalah bertanya kepada administrator jaringan Anda. Apa pun yang Anda lakukan berisiko tidak akurat karena perangkat mungkin dimatikan, reboot, tidak responsif, dll.
Jon Bentley
7
Untuk melengkapi komentar Roger dan Jon, jika IP di jaringan Anda ditetapkan secara manual dan tanpa DHCP, harus ada register di suatu tempat (biarkan itu menjadi database, lembar Excel atau direktori kertas lama) di mana setiap alokasi IP dicatat dan orang-orang mengelola jaringan harus memiliki dan menggunakan informasi ini. Tidak ada solusi teknis yang akan memastikan bahwa Anda tidak mau mencuri IP mesin lain (biarlah server atau laptop pengguna jarak jauh). Jika register ini hilang atau tidak ada, inventaris lengkap diperlukan.
zakinster
Anda harus mengutip alamat IP wildcarded untuk memastikan bahwa shell Anda tidak mencoba mengembangkannya sebagai nama file yang mungkin. Misalnya,nmap -sP -PR '172.16.128.*'
roaima

Jawaban:

39

Perangkat berperilaku baik pada LAN Ethernet bebas untuk mengabaikan hampir semua lalu lintas, sehingga PING, pemindaian port, dan sejenisnya semuanya tidak dapat diandalkan. Perangkat, bagaimanapun, bebas untuk mengabaikan permintaan ARP , afaik. Mengingat Anda menentukan pemindaian jaringan lokal, saya menemukan metode paling rapuh untuk melakukan apa yang Anda inginkan adalah mencoba menyambungkan ke alamat jarak jauh, kemudian lihat di cache ARP saya.

Berikut ini adalah perangkat sederhana yang tidak difilter (mis., Yang tidak dikonfigurasikan untuk mengabaikan beberapa kelas lalu lintas IP):

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.351 ms
[...]
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.1
? (192.168.3.1) at b8:27:eb:05:f5:71 [ether] on p1p1

Berikut adalah perangkat pemfilteran (yang dikonfigurasikan dengan satu baris iptablesuntuk mengabaikan semua lalu lintas):

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.31
? (192.168.3.31) at b8:27:eb:02:e4:46 [ether] on p1p1

Inilah perangkat yang baru saja rusak; perhatikan kekurangan alamat MAC:

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.241
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.241
? (192.168.3.241) at <incomplete> on p1p1

Metode ini tidak sempurna - itu merindukan perangkat yang dimatikan, untuk satu hal - tapi itu metode yang paling mengerikan yang pernah saya coba.

Sunting : Eric Duminil, ya, itu hanya berfungsi pada jaringan lokal; lihat paragraf satu.

Vishal, metode ini identik secara fungsional. Perhatikan teks yang dikutip dalam jawaban Leo tentang nmap:

Ketika pengguna istimewa mencoba memindai target pada jaringan ethernet lokal, permintaan ARP digunakan kecuali --send-ipditentukan.

Metodenya melibatkan kurang mengetik. Milik saya dapat dilakukan tanpa hak istimewa, dan dapat memberi Anda pemahaman yang lebih baik tentang apa yang sebenarnya terjadi. Tetapi hal yang sama dilakukan pada kabel dalam kedua kasus.

MadHatter mendukung Monica
sumber
2
Ini hanya berfungsi dengan perangkat di jaringan lokal yang sama, kan? Saya mencobanya di server milik saya, permintaan ping dijatuhkan di suatu tempat di antara dan saya tidak dapat menemukan jalur yang relevan dengannya arp.
Eric Duminil
Terima kasih atas tanggapannya. Saya hanya ingin tahu bagaimana metode Anda dibandingkan dengan @ Leo? Apakah lebih baik dari itu dalam beberapa cara (karena kalau tidak, lebih mudah menggunakan hanya satu perintah).
Vishal Sharma
2
@VishalSharma, EricDuminil: lihat edit di atas.
MadHatter mendukung Monica
Hanya untuk memperjelas, apakah ini berarti bahwa metode @ Leo akan serupa dengan Anda hanya ketika digunakan oleh pengguna istimewa dan karenanya ketika digunakan oleh pengguna yang kurang mampu, hasilnya tidak akan lengkap / salah? Juga, menurut pengguna yang memiliki hak istimewa, pengguna yang memiliki akses sudo?
Vishal Sharma
1
@VishalSharma bagian pertama dari komentar Anda sudah benar. Pengguna istimewa termasuk melakukan sesuatu di bawah sudo -u root(sering disingkat sudo), tetapi juga hanya sedang login sebagai root, atau telah dilakukan /bin/su, maka istilah payung.
MadHatter mendukung Monica
20

Karena perangkat tidak dapat mengabaikan permintaan ARP, saya suka menggunakan alat bernama arp-scan. Ini tersedia di sebagian besar repositori.

Ketika Anda menjalankan perintah dengan --localnetsaklar itu akan memberi Anda gambaran umum dari seluruh jaringan internal Anda.

sudo arp-scan --localnet

Memberi saya daftar semua IP-dan alamat MAC di jaringan saya. Dimungkinkan juga untuk menentukan rentang jaringan yang akan dipindai.

sudo arp-scan 172.16.128.0/25

Jika Anda memiliki beberapa antarmuka jaringan yang dikonfigurasi, Anda dapat menentukan yang Anda ingin gunakan dengan sakelar -I .

sudo arp-scan -I eth0 172.16.128.0/25

Informasi lebih lanjut tentang sakelar yang mungkin dapat ditemukan di https://linux.die.net/man/1/arp-scan atau dengan menjalankan man arp-scan.

Thorchy
sumber
Sepertinya alat yang menjanjikan, tetapi, ia tidak datang dengan RHEL 6.5 (dalam kasus saya setidaknya tidak ada).
Vishal Sharma
@VishalSharma Sangat disayangkan. Ini tersedia untuk CentOS jadi saya akan berpikir bahwa itu juga harus tersedia di RHEL.
Thorchy
4
Itu ada di EPEL, Paket Ekstra Fedora untuk Enterprise Linux.
mattdm
Tidak berfungsi jika LaBrea berjalan.
joshudson
@ joshudson Saya cukup yakin bahwa tidak mungkin alat / perangkat lunak apa pun untuk memindai jaringan untuk alamat IP yang tidak digunakan ketika LaBrea berjalan.
Thorchy
11

Saya tidak tahu versi nmap mana yang Anda jalankan di Red Hat 6.5 Anda, tetapi untuk rilis terbaru, cara yang benar (dan lebih cepat) menurut saya adalah:

nmap -sn -n 172.16.128.0/25

Ini akan mencantumkan setiap host di jaringan Anda (jadi, Anda dapat menggunakan IP lain dari subnet sebagaimana seharusnya tersedia).

Edit dan catat: Subnet yang Anda sebutkan adalah 255.255.255.128, tetapi kemudian Anda menampilkan output sebagai pemindaian 254 host. Kecuali saya melewatkan sesuatu, itu harusnya topeng / 25 dan 126 host tersedia. Jika Anda ingin memindai a / 24, ubah perintah di atas untuk menanyakan semua 254 host.

Dari buku nmap, -sPdihentikan dan diganti oleh-sn :

-sn (Tidak ada pemindaian port)

Opsi ini memberi tahu Nmap untuk tidak melakukan pemindaian port setelah penemuan host, dan hanya mencetak host yang tersedia yang menanggapi probe penemuan host. Ini sering dikenal sebagai "ping scan", tetapi Anda juga dapat meminta agar skrip host traceroute dan NSE dijalankan. Ini secara default satu langkah lebih mengganggu daripada pemindaian daftar, dan sering dapat digunakan untuk tujuan yang sama. Ini memungkinkan pengintaian ringan dari jaringan target tanpa menarik banyak perhatian. Mengetahui berapa banyak host yang naik lebih berharga bagi penyerang daripada daftar yang disediakan oleh pemindaian daftar setiap IP tunggal dan nama host.

Administrator sistem sering menemukan opsi ini juga berharga. Dapat dengan mudah digunakan untuk menghitung mesin yang tersedia di jaringan atau memonitor ketersediaan server. Ini sering disebut ping sweep, dan lebih dapat diandalkan daripada mem-ping alamat broadcast karena banyak host tidak membalas pertanyaan broadcast.

Penemuan host default yang dilakukan dengan -sn terdiri dari permintaan gema ICMP, TCP SYN ke port 443, TCP ACK ke port 80, dan permintaan cap waktu ICMP secara default. Ketika dieksekusi oleh pengguna yang tidak berhak, hanya paket SYN yang dikirim (menggunakan panggilan koneksi) ke port 80 dan 443 pada target. Ketika pengguna istimewa mencoba memindai target pada jaringan ethernet lokal, permintaan ARP digunakan kecuali - send-ip telah ditentukan. Opsi -sn dapat dikombinasikan dengan salah satu tipe probe penemuan (opsi -P *, tidak termasuk -Pn) untuk fleksibilitas yang lebih besar. Jika salah satu dari opsi jenis dan nomor port penyelidikan tersebut digunakan, probe default akan ditimpa. Ketika firewall ketat ada di antara host sumber yang menjalankan Nmap dan jaringan target, disarankan untuk menggunakan teknik-teknik canggih tersebut.

Dalam rilis Nmap sebelumnya, -sn dikenal sebagai -sP.

Ini -nuntuk menghindari resolusi DNS klien (membuat pemindaian lebih cepat):

-n (Tidak ada resolusi DNS)

Memberitahu Nmap untuk tidak pernah membalikkan resolusi DNS pada alamat IP aktif yang ditemukannya. Karena DNS bisa lambat bahkan dengan resolver paralel paralel bawaan Nmap, opsi ini dapat memangkas waktu pemindaian.

Anda dapat menggunakan kombinasi lain untuk memperdalam pemindaian atau layanan, tetapi itu sudah cukup untuk apa yang Anda cari, kecuali jika host menyembunyikan diri mereka atau menjatuhkan semuanya.

Sumber: https://nmap.org/book/man-host-discovery.html

Leo
sumber
Output yang saya sebutkan adalah dari perintah nmap -sP -PR 172.16.128. * Itulah sebabnya ia memindai 254 host.
Vishal Sharma
Dalam kasus saya, ID jaringan adalah 172.16.128.128 karena itu, saya harus mengubah perintah yang Anda sarankan. Saya menggunakan nmap -sn -n 172.16.128.128/25.
Vishal Sharma
Saya tidak yakin apa yang Anda maksud dengan ID jaringan, tetapi jika perangkat Anda memiliki alamat itu dan Anda ingin semua 254 host dipindai di subnet Anda, Anda harus menjalankannya nmap -sn -n 172.16.128.1/24(seperti yang saya nyatakan dalam jawaban di atas, itu akan memindai 255.255. 255.0 mask)
Leo
Dengan ID jaringan, maksud saya, string diperoleh dengan melakukan 'logis Dan' dari IP_Address dan subnet mask.
Vishal Sharma
Saya melihat. Jadi, apakah perintah nmap yang saya posting menjawab pertanyaan Anda? Apakah kedua perangkat mencantumkan alamat yang sama sedang digunakan?
Leo
8

Bagian 1 - fping

Alat ini mem-ping semua yang ada dalam jangkauan jaringan yang ditentukan, dan menunjukkan yang menjawab melalui ICMP.

root@thionite:~# fping -a -g 10.28.1.0/24
10.28.1.1
10.28.1.2
10.28.1.3
10.28.1.4
10.28.1.5
10.28.1.12.....

Bagian 2 - arp

Sejak fping berbicara dengan semua yang ada di LAN, itu akan menyebabkan entri ditambahkan ke tabel ARP sistem. Bacakan dalam beberapa menit, karena tabel arp mem-flush entri lama.

root@thionite:~# arp -a | grep -v incomplete
? (10.28.1.1) at 00:0d:b9:35:29:c4 [ether] on eth0
? (10.28.1.2) at 68:05:ca:10:53:5f [ether] on eth0
? (10.28.1.3) at d2:f1:6e:54:05:22 [ether] on eth0
? (10.28.1.4) at 00:1a:4d:26:85:ee [ether] on eth0
? (10.28.1.5) at 6e:a6:e5:78:da:ca [ether] on eth0
? (10.28.1.12) at 3c:4a:92:76:85:d8 [ether] on eth0

Perhatikan juga bahwa tabel ARP memiliki ukuran maksimum dan kernel akan mengusir entri lama dan penggunaan rendah.

Gabungkan semuanya

 fping -a -g 10.28.1.0/24 && arp -a | grep -v incomplete > arp.txt

kemudian telusuri arp.txt di waktu luang Anda.

Criggie
sumber
5

IPv6

Jangan berasumsi bahwa IPv4 adalah satu-satunya pilihan Anda. Banyak sistem operasi modern menangani IPv6 dengan baik, bahkan jika ISP Anda tidak menyediakan konektivitas V6.

Bahkan mungkin ada perangkat yang hanya dapat dijangkau oleh IPv6, atau bahkan protokol lain.

Ada banyak alamat multicast berguna yang didokumentasikan di https://en.wikipedia.org/wiki/Multicast_address#IPv6 Tapi yang menarik untuk Anda adalah ff02 :: 1

root@thionite:~# ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80::4261:86ff:fec4:cbaa%eth0 eth0: 56 data bytes
64 bytes from fe80::4261:86ff:fec4:cbaa%eth0: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from fe80::21a:4dff:fe26:85ee%eth0: icmp_seq=1 ttl=64 time=0.215 ms (DUP!)
64 bytes from fe80::6a05:caff:fe10:535f%eth0: icmp_seq=1 ttl=64 time=0.233 ms (DUP!)
64 bytes from fe80::226:55ff:feda:299c%eth0: icmp_seq=1 ttl=64 time=0.334 ms (DUP!)
64 bytes from fe80::20d:b9ff:fe35:29c4%eth0: icmp_seq=1 ttl=64 time=0.501 ms (DUP!)
64 bytes from fe80::21e:c2ff:fe13:36bf%eth0: icmp_seq=1 ttl=64 time=0.512 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=0.518 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=0.757 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=0.772 ms (DUP!)
64 bytes from fe80::60cc:69ff:fe4f:7db0%eth0: icmp_seq=1 ttl=64 time=0.992 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe32:3232%eth0: icmp_seq=1 ttl=64 time=1.00 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe30:3030%eth0: icmp_seq=1 ttl=64 time=1.24 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe31:3131%eth0: icmp_seq=1 ttl=64 time=1.34 ms (DUP!)
64 bytes from fe80::6ca6:e5ff:fe78:daca%eth0: icmp_seq=1 ttl=64 time=2.35 ms (DUP!)
64 bytes from fe80::b639:d6ff:feab:1000%eth0: icmp_seq=1 ttl=64 time=7.04 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=8.02 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=8.03 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=8.06 ms (DUP!)
64 bytes from fe80::212:12ff:fef7:8044%eth0: icmp_seq=1 ttl=64 time=8.24 ms (DUP!)
64 bytes from fe80::8edc:d4ff:fef2:67e0%eth0: icmp_seq=1 ttl=64 time=18.3 ms (DUP!)
64 bytes from fe80::21e:c2ff:fea9:6d71%eth0: icmp_seq=1 ttl=64 time=295 ms (DUP!)
...repeats
Criggie
sumber
3

Jawaban yang buruk adalah dengan melakukan ping ke alamat broadcast

root@thionite:~# ping -b 10.28.255.255
WARNING: pinging broadcast address
PING 10.28.255.255 (10.28.255.255) 56(84) bytes of data.
64 bytes from 10.28.2.7: icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from 10.28.3.12: icmp_seq=1 ttl=255 time=0.594 ms (DUP!)
64 bytes from 10.28.9.4: icmp_seq=1 ttl=64 time=1.03 ms (DUP!)
64 bytes from 10.28.1.151: icmp_seq=1 ttl=255 time=1.04 ms (DUP!)
64 bytes from 10.28.3.13: icmp_seq=1 ttl=255 time=2.22 ms (DUP!)
64 bytes from 10.28.3.11: icmp_seq=1 ttl=255 time=2.43 ms (DUP!)

Ada ~ 50 alamat IP di jaringan itu dengan netmask / 16 dan hanya tujuh yang merespons. Jadi ini bukan solusi yang baik.

Criggie
sumber
1
Kenapa jawabannya berbeda? Anda dapat mengedit pos
daisy
3
@daisy karena jawaban mereka berbeda. Satu jawaban monolitik mungkin baik tetapi ditahan oleh satu bagian. Jawaban terpisah memungkinkan mekanisme pemilihan naik / turun untuk berfungsi dengan baik. Jawaban ini benar-benar hanya untuk kelengkapan, tidak terlalu berguna dalam praktiknya.
Criggie
1
Satu-satunya hal yang diuji ping adalah apakah suatu perangkat dikonfigurasi atau tidak untuk merespons ping.
Rob Moir
@RobMoir true - poin utama ini adalah bahwa alamat broadcast ada dan dirancang untuk IPv4.
Criggie
3

Selain jawaban MadHatter, ada alat arp lookup tanpa mencoba mengirim paket jaringan terlebih dahulu: arping .

Tampaknya ada dua implementasi:

Untuk tujuan Anda, saya hanya akan mengambil paket dari distribusi linux Anda karena perbedaannya mungkin hanya dalam rincian.

allo
sumber
1

Kembali ketika dinosaurus menjelajahi bumi, proto-nerd menggunakan arpwatch

arpwatch adalah alat perangkat lunak komputer untuk memantau lalu lintas Address Resolution Protocol pada jaringan komputer. [1] Ini menghasilkan log pasangan diamati mengamati alamat IP dengan alamat MAC bersama dengan timestamp ketika pasangan muncul di jaringan. Ia juga memiliki opsi untuk mengirim email ke administrator ketika pasangan berubah atau ditambahkan.

halaman manual arpwatch

RedGrittyBrick
sumber
0

Login ke switch Anda dan isikan show mac-address atau perintah serupa (tergantung pada merek dan model). Ini akan memberi Anda semua MAC-Alamat perangkat aktif (kecuali Anda beralih sendiri). Jika salah satu dari MAC ini tidak muncul di antara MAC yang ditemukan dengan salah satu ping atau metode lain di jawaban lain, Anda mungkin ingin menyelidiki lebih lanjut perangkat apa itu. Mungkin itu tidak masalah karena bahkan tidak berbicara IP atau milik VLAN yang berbeda, tetapi setidaknya Anda bisa mendapatkan gambaran umum apakah probe Anda yang lain akurat.

Hagen von Eitzen
sumber