Linux'u ağımda kullanılmayan IP adreslerini bulmak için nasıl kullanırım?


28

Bir ağdaki iki bilgisayara (A ve B) erişimim var. Her ikisinin de 255.255.255.128 alt ağ maskesine sahip statik bir IP adresi var ( DHCP sunucusunun kullanılmadığını kontrol ettim ). Aynı makineye birden fazla IP adresi yapılandırmak istiyorum ve bu nedenle alt ağda zaten tüm IP adreslerinin kullanıldığını bilmek istiyorum.

Daha önceki bir sorudan sonra nmap -sP -PR 172.16.128.*komutu denedim ama aynı komutun iki bilgisayarımda (A ve B) farklı sonuçlar vermesi sonucu hakkında şüphem var. Sonuçta, A ve B de dahil olmak üzere (sözde) kullanılan 8 IP adresinin bir listesi gösterilir .

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

Ancak B'de sonuç farklı, yani

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

B'deki sonuç bile kendi IP adresini ve A'nın IP adresini göstermiyor.

Burada tam olarak ne yapıyorum? Red Hat Linux'ta (RHEL) bilgisayarımın parçası olduğu alt ağda kullanılan tüm IP adreslerini keşfetmenin kusursuz bir yolu var mı?

RHEL: 6.5
Nmap version: 5.51

9
Ağı kim yönetiyor? Ana bilgisayarlarınıza isteğe bağlı IP adresleri atamak için izniniz var mı?
Roger Lipscombe

4
Evet iznim var. Bu iyi bir soru.
Vishal Sharma

11
Doğru bir cevap almanın tek yolu ağ yöneticinize sormaktır. Yaptığınız her şey yanlış olabilir, çünkü aygıtlar kapatılabilir, yeniden başlatılabilir, yanıt vermeyebilir, vb.
Jon Bentley

7
Roger’ın ve Jon’un yorumlarını tamamlamak için, eğer ağınızdaki IP’ler manuel olarak ve DHCP olmadan atanırsa, her IP tahsisinin kaydedildiği ve kişilerin kaydedildiği bir yerde bir kayıt olmalıdır (bir veritabanı, bir Excel sayfası veya eski bir kağıt dizini olsun) ağın yönetimi bu bilgilere sahip olmalı ve bunları kullanmalıdır. Hiçbir teknik çözüm, istemeden başka bir makinenin IP'sini çalmamanızı sağlamaz (bir sunucu ya da uzaktaki bir kullanıcı dizüstü bilgisayarı olsun). Eğer bu kayıt kaybedilmişse veya yoksa, tam bir envanter gereklidir.
zakinster

Kabuğunuzun olası bir dosya adı olarak genişletmeye çalışmadığından emin olmak için joker karakter IP adreslerini vermelisiniz. Örneğin,nmap -sP -PR '172.16.128.*'
roaima

Yanıtlar:


39

Ethernet LAN üzerindeki iyi niyetli herhangi bir cihaz, neredeyse tüm trafikleri görmezden gelmekte serbesttir, bu nedenle PING'ler, port taramaları ve benzerleri güvenilir değildir. Ancak cihazlar, ARP isteklerini göz ardı etmekte özgür değiller . Yerel bir ağ taradığınızı belirttiğinize göre, istediğiniz şeyi yapmanın en kırılgan yöntemini uzak bir adrese bağlanmayı denemek için buluyorum, ardından ARP önbelleğime bakıyorum.

İşte basit, filtreleme yapmayan bir cihaz (bazı IP trafiği sınıflarını görmezden gelecek şekilde yapılandırılmayan bir cihaz):

[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

İşte bir filtreleme cihazı (biri tüm trafiği iptablesyoksaymak için tek bir satırla yapılandırılmış ):

[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

İşte sadece aşağı bir cihaz; MAC adresinin eksikliğine dikkat edin:

[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

Bu yöntem yanılmaz değil - bir şey için kapatılmış cihazları özlüyor - ama şimdiye kadar denediğim en korkunç yöntem.

Düzenleme : Eric Duminil, evet, yalnızca yerel bir ağda çalışır; birinci paragrafa bakınız.

Vishal, yöntemler fonksiyonel olarak aynı. Leo'nun cevabında alıntı yapılan metni not edin nmap:

Ayrıcalıklı bir kullanıcı yerel bir ethernet ağındaki hedefleri taramaya çalıştığında, ARP istekleri belirtilmedikçe kullanılır --send-ip.

Yöntemi daha az yazı yazmayı içerir. Mayın ayrıcalık olmadan yapılabilir ve olabilir size gerçekte neler daha iyi anlaşılmasını sağlar. Ancak aynı şey kabloda her iki durumda da yapılır.


2
Bu sadece aynı yerel ağdaki cihazlarla çalışır, değil mi? Bir sunucumda denedim, ping istekleri aralarında bir yere bırakıldı ve ilgili bir satır bulamadım arp.
Eric Duminil

Yanıtınız için teşekkürler. Sadece senin metodunun @Leo ile karşılaştırdığını nasıl bilmek istedim? Bundan bir şekilde daha mı iyi (aksi takdirde sadece bir komut kullanmak daha kolaydır).
Vishal Sharma

2
@VishalSharma, EricDuminil: yukarıdaki düzenlemeye bakın.
MadHatter Monica'yı destekliyor

Sadece açık olmak gerekirse, @ Leo'nun yönteminin yalnızca ayrıcalıklı bir kullanıcı tarafından kullanıldığında ve bu nedenle de imtiyazlı olmayan bir kullanıcı tarafından kullanıldığında sizinkine benzer olacağı anlamına mı geliyor? Ayrıca, ayrıcalıklı kullanıcı demek istiyorsun, sudo erişimi olan bir kullanıcı mı?
Vishal Sharma

1
@ VishalSharma yorumunuzun ilk kısmı doğru. Ayrıcalıklı kullanıcı , altında bir şey yapmayı sudo -u root(genellikle kısaltılmış sudo), ancak aynı zamanda sadece kök olarak oturum açmayı veya /bin/subu nedenle şemsiye terimini kullanmayı da içerir.
MadHatter,

20

Bir aygıt ARP isteklerini görmezden gelemediğinden, adlı bir aracı kullanmayı severim arp-scan. Çoğu depoda bulunur.

Komutu --localnetanahtarla çalıştırdığınızda, iç ağınızın tamamına genel bir bakış sunar.

sudo arp-scan --localnet

Ağımdaki tüm IP ve MAC adreslerinin bir listesini verir. Taranacak bir ağ aralığı belirtmek de mümkündür.

sudo arp-scan 172.16.128.0/25

Yapılandırılmış birden fazla ağ arayüzünüz varsa, anahtarla kullanmak istediğinizi belirleyebilirsiniz -I.

sudo arp-scan -I eth0 172.16.128.0/25

Olası anahtarlar hakkında daha fazla bilgiyi https://linux.die.net/man/1/arp-scan adresinde veya çalıştırarak bulabilirsiniz man arp-scan.


Gelecek vaat eden bir araca benziyor, ancak RHEL 6.5 ile gelmiyor (en azından benim durumumda yok).
Vishal Sharma,

@ VishalSharma Bu talihsizlik. CentOS için mevcut olduğundan RHEL'de de bulunması gerektiğini düşünürdüm.
Thorchy

4
Fedora'nın Enterprise Linux için Ekstra Paketleri olan EPEL'de.
mattdm

LaBrea çalışıyorsa çalışmaz.
joshudson

@joshudson LaBrea çalışırken, herhangi bir araç / yazılımın kullanılmamış IP adresleri için ağı taramasının imkansız olduğundan eminim.
Thorchy

11

Red Hat 6.5'inizde hangi nmap sürümünü çalıştırdığınızı bilmiyorum, ancak son sürümlerde doğru (ve daha hızlı) yöntem olacağını düşünüyorum:

nmap -sn -n 172.16.128.0/25

Bu, ağınızdaki her ana bilgisayarı listeler (böylece, bu alt ağdaki diğer IP'leri kullanılabilir olması gerektiği gibi kullanabilirsiniz).

Düzenle ve not: Bahsettiğiniz alt ağ 255.255.255.128'dir, ancak daha sonra çıktısını 254 ana bilgisayarı tararken gösterirsiniz. Bir şey kaçırmıyorsam, bu bir / 25 maske olmalı ve 126 ana bilgisayar olmalıdır. Bir / 24 taramak istiyorsanız, 254 ana bilgisayarı sorgulamak için yukarıdaki komutu değiştirin.

Nmap kitabından çıkarılır -sPve yerine -sn:

-sn (Bağlantı noktası taraması yok)

Bu seçenek, Nmap'a ana bilgisayar keşfi sonrasında bağlantı noktası taraması yapmamasını ve yalnızca ana bilgisayar keşif problarına yanıt veren kullanılabilir ana bilgisayarları yazdırmasını bildirir. Bu genellikle "ping scan" olarak bilinir, ancak traceroute ve NSE ana bilgisayar komut dosyalarının çalıştırılmasını da isteyebilirsiniz. Bu, varsayılan olarak liste taramasından bir adım daha müdahalecidir ve genellikle aynı amaçlar için kullanılabilir. Çok fazla dikkat çekmeden hedef ağın hafif bir şekilde keşfedilmesini sağlar. Kaç tane sunucunun çalıştığını bilmek, saldırganlar için her IP ve ana bilgisayar adının taranması tarafından sağlanan listeden daha değerlidir.

Sistem yöneticileri genellikle bu seçeneği de değerli bulmaktadır. Bir ağdaki mevcut makineleri saymak veya sunucunun kullanılabilirliğini izlemek için kolayca kullanılabilir. Buna genellikle bir ping taraması adı verilir ve çoğu adres yayın sorgularına yanıt vermediğinden yayın adresini ping işleminden daha güvenilirdir.

-Sn ile yapılan varsayılan ana bilgisayar keşfi, bir ICMP yankı isteği, 443 numaralı bağlantı noktasına TCP SYN, 80 numaralı bağlantı noktasına TCP ACK ve varsayılan olarak bir ICMP zaman damgası isteğinden oluşur. Ayrıcalıklı olmayan bir kullanıcı tarafından çalıştırıldığında, hedef üzerindeki 80 ve 443 numaralı bağlantı noktalarına yalnızca SYN paketleri gönderilir (bir bağlantı çağrısı kullanarak). Ayrıcalıklı bir kullanıcı yerel bir ethernet ağındaki hedefleri taramaya çalıştığında, --send-ip belirtilmediği sürece ARP istekleri kullanılır. -Sn seçeneği, daha fazla esneklik için keşif probu türlerinden herhangi biriyle (-P * seçenekleri, -Pn hariç) birleştirilebilir. Bu prob tipi ve port numarası seçeneklerinden herhangi biri kullanılırsa, varsayılan problar geçersiz kılınır. Nmap çalıştıran kaynak ana bilgisayar ile hedef ağ arasında sıkı güvenlik duvarları varsa, bu gelişmiş teknikleri kullanmanız önerilir.

Nmap'ın önceki sürümlerinde -sn, -sP olarak biliniyordu.

-nİstemciler (daha hızlı tarama yapar) DNS çözünürlüğünü kaçınmaktır:

-n (DNS çözünürlüğü yok)

Nmap'a, bulduğu aktif IP adreslerinde hiçbir zaman ters DNS çözünürlüğü yapmamasını söyler. DNS, Nmap'ın dahili paralel saplama çözücüsünde bile yavaş olabileceğinden, bu seçenek tarama zamanlarını azaltabilir.

Taramayı veya hizmetleri derinleştirmek için diğer kombinasyonları kullanabilirsiniz, ancak ana bilgisayarlar kendilerini maskelemediği veya her şeyi bırakmadığı sürece, aradığınız şey için bu yeterli olacaktır.

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


Bahsettiğim çıktı nmap -sP -PR 172.16.128. * Komutundandır, bu yüzden 254 ana bilgisayarı tarar.
Vishal Sharma

Benim durumumda, ağ kimliği 172.16.128.128'dir, bu nedenle önerdiğiniz komutu değiştirmek zorunda kaldım. Ben nmap -sn -n 172.16.128.128/25 kullandım.
Vishal Sharma

Ağ kimliği ile ne kastettiğinizden emin değilim, ancak cihazınızda bu adres varsa ve alt ağınızda taranan 254 ana makinenin tümünü istiyorsanız, nmap -sn -n 172.16.128.1/24bunun yerine çalışmalısınız (yukarıdaki cevabında belirttiğim gibi, bu 255.255'i tarayacaktır). 255.0 maske)
Leo,

Ağ kimliği ile demek istediğim, IP_Adresi ve alt ağ maskesinin 'mantıksal Ve' ifadesi ile elde edilen dize.
Vishal Sharma

Anlıyorum. Peki, gönderdiğim nmap komutu sorunuzu cevaplıyor mu? Her iki cihaz da aynı adresleri listeliyor mu?
Leo,

8

Bölüm 1 - fping

Bu araç, belirtilen ağ aralığındaki her şeyi siler ve ICMP aracılığıyla yanıt verenleri gösterir.

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.....

Bölüm 2 - arp

Fping, LAN üzerindeki her şeyle konuştuğundan beri, sistemin ARP tablosuna bir giriş eklenmesine neden olacaktı. Birkaç dakika içinde okuyun, çünkü arp tablosu eski girdileri temizler.

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

Ayrıca ARP tablosunun maksimum boyutta olduğunu ve çekirdeğin eski ve düşük kullanım girişlerini çıkartacağını unutmayın.

Hepsini birlikte koy

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

daha sonra boş yere arp.txt göz atın.


5

IPv6

IPv4'ün tek seçeneğiniz olduğunu düşünmeyin. Birçok modern işletim sistemi, ISS'niz V6 bağlantısı sağlamıyor olsa bile IPv6'yı gayet iyi idare ediyor.

Yalnızca IPv6 ile erişilebilen cihazlar veya diğer protokoller bile olabilir.

Https://en.wikipedia.org/wiki/Multicast_address#IPv6 belgesinde belgelenmiş bir çok noktaya yayın adresi var. Ama sizin için ilginç olan 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

3

Kötü bir cevap, yayın adresini ile ping yapmaktır.

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!)

Ağda 16 ağ maskesi olan ~ 50 IP adresi var ve yalnızca 7 kişi cevap verdi. Yani bu iyi bir çözüm değil.


1
Neden farklı cevaplar?
daisy

3
@daisy, çünkü farklı cevaplar. Bir yekpare cevap iyi olabilir, ancak bir kısmı tarafından tutulur. Ayrı cevaplar yukarı / aşağı oy mekanizmasının düzgün çalışmasını sağlar. Bu cevap gerçekten sadece bütünlük içindi, pratikte çok kullanışlı değildi.
Criggie

1
Ping testi yapan tek şey, aygıtın ping'lere yanıt verecek şekilde yapılandırılmış olup olmadığıdır.
Rob Moir

@RobMoir true - Bunun asıl amacı, yayın adresinin var olduğu ve IPv4'te tasarlandığı.
Criggie


1

Dinozorlar dünyayı dolaşırken, proto- in'ler arpwatch'ı kullandılar .

Arpwatch, bir bilgisayar ağındaki Adres Çözünürlük Protokolü trafiğini izlemek için kullanılan bir bilgisayar yazılımı aracıdır. [1] Eşleştirme ağda göründüğünde, zaman damgasıyla birlikte MAC adresleriyle gözlenen IP adreslerinin eşleşmesinin bir günlüğünü oluşturur. Eşleştirme değiştiğinde veya eklendiğinde yöneticiye bir e-posta gönderme seçeneği de vardır.

arpwatch adam sayfası


0

Anahtar (lar) ınıza giriş yapın ve verilen show mac-address komutları veya benzer komutları girin (marka ve modele bağlı olarak). Bu size aktif cihazların tüm MAC Adreslerini verecektir (sizin anahtarın dışında). Bu MAC'lerden herhangi biri, herhangi bir ping ile bulunan MAC'ler arasında veya diğer cevaplardaki diğer yöntemlerde bulunmazsa, hangi cihazın daha fazla olduğunu araştırmak isteyebilirsiniz. Belki farketmez çünkü IP bile konuşmuyor veya farklı bir VLAN'a ait, ancak en azından diğer problarınızın doğru olup olmadığına dair bir genel bakış elde edebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.