Jak poznać adresy IP innych komputerów w mojej sieci?


51

Powiedz, że mam dwa komputery podłączone do tej samej sieci. Wiem, że z komputera1 i udostępniania plików mogę węszyć wewnątrz komputera2. Powiedzmy jednak, że na komputerze2 jest coś interesującego, do czego można uzyskać dostęp, wpisując localhost: 9091 w safari. (np. internetowy interfejs transmisji). Aby uzyskać dostęp, musiałbym wpisać ip_address_of_computer2: 9091 na komputerze1.

Ale jak znaleźć adres IP komputera2 bez korzystania z komputera2?


Czy znasz nazwę komputera2?
user151019

Odpowiedzi:


82

Metoda nr 1

Najłatwiejszym sposobem będzie uzyskanie dostępu do strony administracyjnej routera sieciowego. Będzie zawierał informacje o wszelkich innych urządzeniach w sieci, w tym adres IP.

Metoda nr 2

Jeśli znasz nazwę sieciową komputera, możesz to pingzrobić w terminalu. Zwróci adres IP komputera.

Metoda nr 3

Jeśli nie znasz nazwy sieci komputera, możesz użyć innej sztuczki ping. Znajdź swój adres IP i maskę podsieci. Oba powinny być widoczne w panelu preferencji sieci w Preferencjach systemowych. Wyrównaj swój adres IP i maskę podsieci i zamień wszystkie 0wartości w masce podsieci 255na tę samą względną pozycję adresu IP. Na przykład, jeśli masz odpowiednio następujący adres IP i maskę podsieci:

192.168.1.151

255.255.255.0

0Jest w ostatnim polu maski podsieci, więc zastąpić ostatnie pole adresu IP z 255i ping go:ping 192.168.1.255

Powinieneś otrzymać odpowiedź z adresem IP dowolnego urządzenia w sieci zdolnego do odpowiedzi na ping.

Metoda nr 4

Ostatnią sztuczką jest użycie polecenia terminalu arp -a. Spowoduje to wyświetlenie adresu IP i adresu MAC wszystkich urządzeń w sieci, o których wie.

Dwie ostatnie sztuczki dzięki uprzejmości tego artykułu Macworld.


8
Metoda nr 4 arp -a zadziała, jeśli komputer Mac już pomyślnie sondował lub był podłączony do hosta. Spróbuj ponownie, uruchamiając ponownie komputer Mac i wyświetlając tabelę arp. Będzie prawie pusty. Aby zapełnić tę tabelę, musisz uruchomić coś w rodzaju skanowania ping:nmap -sP 192.168.1.0/24
ripat

Z jakiegoś powodu polecenie ping 192.168.1.255 zwraca adresy ze wszystkich komputerów Mac w sieci, ale żaden z komputerów z systemem Linux?!? Świetna wskazówka!
ssc

1
ping SOME-PC -4wymusić rozstrzygnięcie IPV4.
Nakilon

Czy to działa, jeśli pingujesz komputer z systemem Windows?
Cullub,

1
@cullub Tak, działa w systemie Windows. ping adminPCwysyła polecenie ping do komputera adminPC i wyświetla adres IP. I jak skomentował Nakilon, ping adminPC -4wyświetla IPv4.
Lucky

19

Wpisz polecenie

  arp -a

Spowoduje to wyświetlenie wszystkich połączeń jeden po drugim.


To nie wydaje się działać na niektórych urządzeniach. Nie jestem pewien, czy to dlatego, że urządzenia nie „nasłuchują”, czy to z powodu różnych systemów operacyjnych, ale próbuję teraz i arp -anie wybieram jednego z moich urządzeń z Linuksem.
Jacksonkr,

Gdy po raz pierwszy pójdziesz porozmawiać z innym urządzeniem na komputerze, komputer musi rozpoznać adres IP -> MAC, więc rozgłaszany jest komunikat „kto ma adres IP xxx.yyy.zzz.aaa?”, A właściciel tego adresu IP odpowiada ( broadcasts) z „ja!” i oczywiście ten pakiet ma źródłowy MAC. Jeśli ta transakcja nie miała miejsca, gdy urządzenie było w sieci, nie będzie dla niej wpisu ARP. Dlatego: nie wszystkie urządzenia pojawiają się w tabeli ARP, ale mogą pojawiać się w tabelach ARP innych urządzeń.
Harv,

4

P: Jak poznać adresy IP innych komputerów w mojej sieci ?

Wiele sieci

Po pierwsze twój komputer jest prawdopodobnie w wielu sieciach . Możesz to zobaczyć za pomocą ifconfigpolecenia. Jest tam wiele informacji, ale większość z nich jest przytłaczająca, więc lubię filtrować:

$ ifconfig | grep -E '^[a-z0-9]|inet '

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
en2: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
    inet 172.141.0.10 --> 172.141.0.9 netmask 0xffffffff
en5: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    inet 169.254.146.193 netmask 0xffff0000 broadcast 169.254.255.255
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.3.1 netmask 0xffffff00 broadcast 192.168.3.255

Pierwsze pole wyrównanych do lewej linii to nazwy interfejsów sieciowych. Twoje wifi jest prawdopodobnie en0. My TunnelBlick VPN to AWS to utun1. Moje Preferencje systemowe> Udostępnianie> Udostępnianie Internetu utworzone bridge100dla RaspberryPi Mam dostęp do Internetu z mojego MacBooka Pro przez mój klucz ethernetowy.

Załóżmy IPv4

Ponieważ poprosiłeś o adresy IP , zakładam, że adresy IPv4 są tym, na czym ci zależy. Użyłem „inet” (ze spacją), aby zablokować wpisy „inet6” dla IPv6. Jeśli chciałeś IPv6, prawdopodobnie wiesz więcej o sieci niż ja i powinienem zadawać ci pytania.

Znajdź gospodarzy

Skupmy się na tym bridge100i zapewnijmy mały ruch w Google. Wiele osób napotyka taką sytuację, gdy chce SSH lub RDC na bezgłowym komputerze (takim jak RaspberryPi ) albo w swojej sieci, albo za pośrednictwem Udostępniania Internetu . Jest to szczególnie trudne, gdy nie masz historii połączeń (tablica arp) z urządzeniem. W tym celu można użyć wartości sudo nmap -sn 192.168.3.0/24, która jest wartością bridge100 inet (192.168.3.1), a ostatnia cyfra została zastąpiona przez „0/24”. Jednak nmap nie jest standardem w OSX, więc możemy zainstalować go z homebrew .

$ brew install nmap
Warning: nmap-7.31 already installed

$ sudo nmap -sn 192.168.3.0/24
Password:

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-21 22:03 EST
Nmap scan report for 192.168.3.6
Host is up (0.00025s latency).
Nmap scan report for 192.168.3.1
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 2.08 seconds

Na tej podstawie możesz założyć, że mój RaspberyPi ma adres IP 192.168.3.6z jakiegoś powodu. Ostatnim razem, gdy go podłączyłem, byłem w innej podsieci i dostałem 192.168.2.3. Ta sztuczka nmap jest o wiele lepsza niż pisanie ping 192.168.3.2... ping 192.168.3.6dopóki jej nie znajdziesz.

Mam nadzieję że to pomogło.


3

Istnieje kilka innych narzędzi, o których jeszcze nie wspomniano w celu wykrywania informacji o adresie IP, przy założeniu, że masz nazwę hosta i używasz mDNS (aka Bonjour w środowiskach Mac). Jeśli nie skonfigurujesz inaczej, nazwy sieci lokalnej są w formie, host-name.localwięc w początkowym przykładzie będziesz szukałcomputer2.local

Pierwszy:

    dscacheutil -q host -a name <host-name>.local

Na przykład:

    % dscacheutil -q host -a name computer2.local
    name: computer2.local
    ip_address: 10.0.1.6

Innym przydatnym narzędziem jest dig(spróbuj dig google.comna przykład), który za pomocą kilku specjalnych parametrów może być użyty do zapytania o węzły mDNS twojej sieci lokalnej.

    % dig @224.0.0.251 -p 5353 <host-name>.local
    % dig @224.0.0.251 -p 5353 -x <ip-address>

Aby uzyskać tylko adres IP dig, możesz spróbować:

    % dig +short @224.0.0.251 -p 5353 <host-name>.local

Dobry, ale wymaga znajomości adresu IP lub nazwy multicastDNS komputera (.local).
Florian Bidabe

BonjourBrowser to do tego przyjemna aplikacja GUI.
Florian Bidabe

@FlorianBidabe - Dlaczego mówisz, że musisz znać adres IP, aby korzystać z tych poleceń? Te polecenia zwracają adres IP nazwanego komputera. Tak, aby poznać tę metodę, trzeba znać nazwę komputera docelowego.
KenB

3

Ten skrypt powinien dać ci to, czego szukasz naprawdę szybko i wymaga zainstalowania nmap. Zaletą jest to, że jeśli twój host nie odpowiada na sondy ping, nmap nadal znajdzie hosta, podczas gdy inne narzędzia tego nie zrobią.

#!/bin/bash
i="en1" # edit this to fit your Network interface
cidr=$(while read y; do echo ${y%.*}".0/$(m=0; while read -n 1 x && [ $x = f ]; do m=$[m+4]; done < <(ifconfig $i | awk '/mask/             {$4=substr($4,3); print $4}'); echo $m )"; done < <(ifconfig $i | awk '/inet[ ]/{print $2}') | head -n 1 | sed s/addr://g | sed 's/\/0//g')
myip=`ifconfig $i | grep "inet " | awk 'NR==1 {print $2}' | sed s/addr://g`
set -x
sudo nmap -n -T4 -PN -p9091 --exclude "$myip" "$cidr"

Zapisz ten skrypt jako lookup.shi wywołaj go (z przełączeniem na angielski) za pomocą

LANG=c bash lookup.sh

Jak to zapisać i uruchomić?
Daniel Pendergast

Wklej to w TextEditor, a następnie zapisz i nadaj temu plikowi nazwę „qnmap”. Następnie przenieś ten plik do / usr / bin (przytrzymaj Command + Shift + G lub Finder / Go / Go to folder: / usr / bin). otwórz terminal, wpisz „sudo chmod a + x / usr / bin / qnmap”. Wpisz „qnmap” w terminalu i poczekaj na wynik.
Florian Bidabe

Dobrze. /usr/bin/qnmap: line 2: =en1: command not foundPojawia się ten błąd: wygląda na to, że znak dolara inie powinien tam być.
Daniel Pendergast

1
Przepraszam Dan, mój zły, wiersz powinien brzmieć: i = "en1"
Florian Bidabe

Chłodny. Działa dobrze.
Daniel Pendergast

2

Możesz także użyć netstat, aby wyświetlić adresy sieciowe:

roger.moore@WKSTCAL0141 ~
$ netstat -n

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    127.0.0.1:11235        127.0.0.1:49184        ESTABLISHED
  TCP    127.0.0.1:49155        127.0.0.1:49156        ESTABLISHED
  TCP    127.0.0.1:49156        127.0.0.1:49155        ESTABLISHED
  TCP    127.0.0.1:49184        127.0.0.1:11235        ESTABLISHED
  TCP    192.168.10.131:445     192.168.10.119:52624   ESTABLISHED
  TCP    192.168.10.131:1433    192.168.10.2:60866     ESTABLISHED
  TCP    192.168.10.131:1433    192.168.10.119:52775   ESTABLISHED
  TCP    192.168.10.131:3389    192.168.10.119:54473   ESTABLISHED
  TCP    192.168.10.131:49154   192.168.10.119:52796   ESTABLISHED
  TCP    192.168.10.131:49182   192.168.10.9:52230     ESTABLISHED
  TCP    192.168.10.131:49247   192.168.10.6:445       ESTABLISHED
  TCP    192.168.10.131:49432   192.168.10.4:1106      ESTABLISHED
  TCP    192.168.10.131:49440   192.168.10.4:1106      ESTABLISHED
  TCP    192.168.10.131:49451   192.168.10.6:1025      ESTABLISHED
  TCP    192.168.10.131:55100   192.168.10.2:445       ESTABLISHED
  TCP    192.168.10.131:64558   192.168.10.20:135      TIME_WAIT
  TCP    192.168.10.131:64559   192.168.10.20:49158    TIME_WAIT
  TCP    192.168.10.131:64566   192.168.10.100:135     TIME_WAIT
  TCP    192.168.10.131:64575   192.168.10.100:59811   TIME_WAIT
  TCP    192.168.10.131:64581   192.168.10.41:139      TIME_WAIT
  TCP    192.168.10.131:64582   192.168.10.3:5357      TIME_WAIT
  TCP    192.168.10.131:64585   192.168.10.61:3910     TIME_WAIT
  TCP    192.168.10.131:64587   192.168.10.65:3910     TIME_WAIT
  TCP    192.168.10.131:64588   192.168.10.9:139       TIME_WAIT
  TCP    192.168.10.131:64589   192.168.10.135:2869    ESTABLISHED
  TCP    192.168.10.131:64593   192.168.10.6:135       TIME_WAIT
  TCP    192.168.10.131:64594   192.168.10.6:1025      TIME_WAIT
  TCP    192.168.10.131:64599   192.168.10.100:59811   TIME_WAIT


0

Możesz zainstalować Wireshark i rozpocząć skanowanie na karcie sieciowej.

Filtruj wynik według „nbns”, a zobaczysz adres IP w górnym oknie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.