Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

jak znaleźć komputer w sieci lokalnej bez DNS?

24 Sie 2019 12:24 603 34
  • Specjalista elektronik
    Potrzebuję łączyć się z komputerami w sieci lokalnej, których nazw nie ma w DNS, a adresy IP są zmienne. Czy ktoś zna sposób na uzyskiwanie adresów IP - program, który wykonany na komputerze "x" poda mi aktualny adres IP komputera "y"?

    Próbowałem "arping" z podawaniem MAC adresu, ale odpowiada "0 packets received" - i nie wiem, czemu nie działa. Można próbować robić "ping" na wszystkie możliwe adresy IP w sieci, a potem wyszukać MAC adres w /proc/net/arp, ale to trochę długo trwa.

    Poza tym przydałoby się automatyczne zbieranie informacji o powiązaniu MAC adresów z nazwami - może przez nasłuchiwanie zapytań DHCP? Są wysyłane na adres broadcast, więc wystarczy nasłuch na odpowiednim porcie, tylko jak to zdekodować?
  • Specjalista elektronik
    Rozumiem, że to ma dać załadowanie cache-a ARP? A jakich opcji najlepiej użyć?
    Z tych, co wypróbowałem, najszybciej zadziałało z -sn; ale jeszcze dużo szybciej zadziałał taki skrypt:
    Kod: tcl
    Zaloguj się, aby zobaczyć kod


    Czyli nic gotowego nie ma i trzeba jakoś ładować adresy do cache ARP, i stamtąd je odczytywać?

    Pozostaje jeszcze druga część - o ile da się to łatwo zrobić: powiązanie adresów MAC z nazwami.
  • Poziom 33  
    Sprawdź czy komputery nie rozgłaszają się przez SSDP.
  • Poziom 2  
    Dzień dobry,
    Zainstaluj Advanced IP Scanner (http://www.advanced-ip-scanner.com/pl/) - licencja freeware. Znajdzie wszystko w lokalnej sieci. Jak jest w tej sieci wi-fi, to polecam WiFi Analyzer na smartfona.
  • Specjalista elektronik
    To jest jakiś EXE, a ja mam Linux-a. Pójdzie pod wine? Albo pod mono?

    Pod wine poszedł (pod mono nie). Ale strasznie wolno działa, zajmuje 655MB, wykłada się, i nie pokazał nic ciekawego - i nie widać, jak można go sensownie używać - mam za każdym razem klikać myszą i tracić czas na uruchamianie takiego molocha? Ja chcę czegoś małego, działającego w rozsądnym tempie i całkowicie automatycznie - czegoś, co mi pójdzie np. na Raspberry Pi Zero.

    Jest wersja advanced_ip_scanner_console.exe - puściłem, utworzyła pusty plik (nazwę się podaje przez /f:plik_na_wyniki, zakres IP przez /r:pierwszy_IP-ostatni_IP; jest jeszcze opcja /v, ma pokazywać wynik service scan, ale i tak nie ma wyników).

    Co właściwie ten program ma mi podać? Bo jeśli to, co można dostać z DNS, to on mi na nic - u mnie DNS źle działa (parę miesięcy temu prosiłem admina sieci, żeby coś z tym zrobił, i wciąż bez rezultatu), informacje z DNS mogę wydostać bez tego "skanera", tylko że w nich nie ma tego, czego potrzebuję.
  • Poziom 33  
    _jta_ napisał:
    A jak najprościej to sprawdzić?

    1 .Uruchom program Wireshark i zobacz czy odbierasz coś na porcie 1900.
    2. Uruchom w Windows wyszukiwanie urządzeń sieciowych i zobacz czy komputery zostaną znalezione.
  • Poziom 33  
    _jta_ napisał:
    To ma być port TCP, czy UDP? Według Wikipedii UDP. Jak długo czekać na pakiet?

    Port UDP.
    Urządzenia zwykle się rozgłaszają kilka razy na minutę. Robią to też na żądanie wysłane przez sieć. Dzięki temu można szybko znaleźć ich adresy IP.
  • Poziom 39  
    _jta_ napisał:
    Rozumiem, że to ma dać załadowanie cache-a ARP? A jakich opcji najlepiej użyć?
    Z tych, co wypróbowałem, najszybciej zadziałało z -sn;

    Takie skanowanie wystarczy na początek.
    Ja mam dopisane ręcznie pary mac_adres i nazwa do pliku mac-vendor.txt.
    Ten plik jest w katalogu /usr/share/arp-scan/ (dotyczy Debiana)
    Sądzę, że prosty skrypt bash zrobiłby automatycznie dopiski adresów mac, ale przy małej sieci może to nie mieć sensu.

    Ogólnie to nie rozumiem celu tego projektu.
    W moim przypadku takie powiązanie mac z nazwą ułatwia mi tylko sprawdzanie stanu sieci, bo wynikach skanu po przefiltrowaniu do zwykłej listy IP:MAC:Nazwa widzę od razu np. IP:MAC:komp_pani_lodzi.

    Bazę bieżących klientów DHCP można pozyskać też bezpośrednio z serwera, jeśli mamy do niego dostęp.
  • Specjalista elektronik
    :arrow: #12 - Jak widać, nie rozgłaszają się. A jakie ma być to żądanie, czy może to być broadcast, jakie informacje są w odpowiedzi?

    dedito napisał:
    Ten plik jest w katalogu /usr/share/arp-scan/ (dotyczy Debiana)

    Mam Ubuntu 18.04, nie ma takiego katalogu. Pliku mac-vendor.txt też nie mam.

    dedito napisał:
    Ogólnie to nie rozumiem celu tego projektu.

    Chodzi o to, że potrzebuję łączyć się między komputerami, adresy IP się zmieniają, bo są przydzielane dynamicznie, więc muszę ciągle sprawdzać aktualne adresy, jest to niewygodne i tracę przez to sporo czasu - średnio po kilka minut przy każdym połączeniu.

    dedito napisał:
    Bazę bieżących klientów DHCP można pozyskać też bezpośrednio z serwera, jeśli mamy do niego dostęp.

    Nie wiem, jaki dostęp masz na myśli, jeśli ma to być zalogowanie się na serwerze, to nie mam.
  • Specjalista elektronik
    W tej sieci obowiązuje używanie DHCP. Nie ja jestem adminem tej sieci - w innej sieci, którą ja administruję, użyłem DNS-a sprzężonego z DHCP i nie ma takiego problemu, można się łączyć przez nazwy, choć IP są zmienne.

    Przez co się łączysz jeśli można wiedzieć? - Jest wiele sytuacji, w której jest to potrzebne, za dużo byłoby pisania. Kiedyś, jak założyliśmy sieć, to mimo to trzeba było chodzić z dyskietką; dziś nadal trzeba chodzić...
  • Specjalista elektronik
    Nie jest dla mnie zrozumiała ta strona (ani trochę nie wygląda na opis protokołu komunikacyjnego); nie wiem też, jak użyć tego Wireshark-a. Co tam trzeba zrobić, żeby pokazał, jakie komputery są w sieci? Jakie informacje potrafi pokazać?
  • Poziom 33  
    Na stronie jaką podałem masz tabelkę z odebranymi pakietami. Zapewne chwilę po uruchomieniu programu będzie już ich dużo. Te interesujące pakiety w kolumnie "Protocol" mają wpisane SSDP. Po kliknięciu na danej pozycji u dołu pojawią się przesłane informacje. Będzie to miedzy innymi adres IP i nazwa urządzenia. W przykładzie jest to odpowiednio 128.100.20.8 i "Printer".

    http://kacikpc.pl/podstawy-wireshark-analizujemy-ruch-sieciowy/
  • Poziom 37  
    W sieci SMB komputery mogą nosić nazwy jakie wypełni ich uruchomiciel, przy adresach IP otrzymanych z DHCP i nieznanych (nie mamy władzy na routerem).
    Oczywiście przy standardowym disclaimerze co to jest i jak jest zainstalowane "to zależy" ;) w typowych sieciach w pełni wykonalny jest
    Kod: dos
    Zaloguj się, aby zobaczyć kod


    Mam do Ciebie szersze pytanie: zadałeś kilka kilka pytań odnośnie sieci, Raspberry w sieci, to dotyczy tego samego? W jakimś sensie by było prościej gdyby zadania tej sieci jasno zdefiniować parametry liczbowe, wymagana szybkość itd, czy istota algorytmu wyróżnia choćby nieco jeden host, czy nie ... okaże się, że koło już dawno zostało wynalezione.
  • Specjalista elektronik
    :arrow: TvWidget

    No, to się dowiedziałem tyle, że trzeba wybrać interfejs sieciowy, a potem kliknąć płetwę rekina, żeby zaczęło łapać pakiety - i jest ich dużo, być może dlatego, że okno jest wyświetlane poprzez sieć, a to chyba pokazuje wszystkie pakiety.

    Pytanie: jak z tego można wyciągnąć jakąś użyteczną informację, bo na razie jest jak w opowiadaniu o zbójcy Gębonie (Trurl i Klapaucjusz pokonali go dając mu generator informacji, ponoć wyłącznie prawdziwych, ale tak pomieszanych, że bezużytecznych) - są tysiące pakietów na sekundę, a nie widać nic użytecznego.


    :arrow: JacekCz

    Cały problem w tym, że ping (i nie tylko) z nazwą komputera wewnątrz sieci na ogół nie działa!

    Niestety twoje pytania są tak ogólnikowe, że zupełnie nie wiem, o co w nich chodzi.

    Jest jakaś sieć używana przez ~200 hostów, które adresy dostają przez DHCP, wśród nich kilka, może kilkanaście, które mnie interesują - chcę mieć szybki dostęp do ich adresów IP. Chcę też móc podłączyć w dowolnym momencie hosta, którego nazwę znam, i połączyć się z nim - jak to będzie Raspberry Pi Zero bez monitora, to na nim adresu IP nie odczytam, chcę ten adres dostać z sieci i chodzi o to, jak mam to zrobić.
  • Specjalista elektronik
    Tak, nawet wielokrotnie go używałem. A co z tego ma wynikać? Ma jakąś opcję, która tu będzie pomocna? Która to jest?

    Jest jeszcze program NDPMon (Neighbor Discovery Protocol Monitor). Ale nie wiem, co potrafi zdziałać w tej sytuacji i jak go użyć.
  • Specjalista automatyka domowa
    Na przykład nmap -sn 192.168.22.1/24 wypluje wszystkie hosty wraz z MACami.
    Dokładasz grep <MAC> i masz konkretny host.
    Konkretnie to np tak:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potem sobie to oskryptować za pomocą wcześniej wspominanego grep oraz np. sed,awk itp. Czyli wyłuskać IP z MAC i podstawić do czego tam się chce itd.
    [edit]
    A jeszcze jest pakiet arp-scan.
    On od razu podaje ładnie parę IP MAC
    Na openwrt składnia jest: arp-scan -xql -I br-lan
    Na innych linuxach debianowatych może trochę się różnić. Na przykład nie ma konieczności podawania interfejsu.
    [edit2]
    Przetestowałem arp-scan na Debianie i tu wystarczy: arp-scan -l by całą sieć lokalną przeskanować. Skan trwa ze dwie sekundy.
  • Poziom 33  
    _jta_ napisał:
    :arrow: TvWidget

    No, to się dowiedziałem tyle, że trzeba wybrać interfejs sieciowy, a potem kliknąć płetwę rekina, żeby zaczęło łapać pakiety - i jest ich dużo, być może dlatego, że okno jest wyświetlane poprzez sieć, a to chyba pokazuje wszystkie pakiety.

    Pytanie: jak z tego można wyciągnąć jakąś użyteczną informację, bo na razie jest jak w opowiadaniu o zbójcy Gębonie (Trurl i Klapaucjusz pokonali go dając mu generator informacji, ponoć wyłącznie prawdziwych, ale tak pomieszanych, że bezużytecznych) - są tysiące pakietów na sekundę, a nie widać nic użytecznego.

    Klikasz na górze kolumny "Protocol". Program posortuje pakiety wg. protokołu. Szukasz pakietów "SSDP". Jeśli są takie to klikasz na danej pozycji i patrzysz czy pakiet pochodzi z poszukiwanego komputera. Jak znajdziesz taki pakiet to oznacza, że ten komputer można wyszukać w sieci przy użyciu protokołu SSDP.
    Dalej w zależności od umiejętności programistycznych i znajomości różnych języków tworzysz prosty program wysyłający "M-SEARCH" czekający na "NOTIFY". Po odebraniu odpowiedzi masz wszystkie informacje jakie potrzebujesz.
  • Specjalista Sieci, Internet
    Twój problem Microsoft rozwiązał już 30 lat temu i to rozwiązanie nazywa się NetBios (tak, wiem że stare i awaryjne).

    Inne rozwiązanie - każdy antywirus dla firm posiada konsolę zarządzania. Każdy klient połączy się z tą konsolą i wskaże jaki ma adres IP. Osobiście we wszystkich firmach mam taki antywirus. Nie wyobrażam sobie też, że ktoś z zewnątrz podłącza do sieci laptopa bez autoryzacji (i bez firmowego antywirusa). Dla takich osób jest wydzielona podsieć.

    Inne rozwiązanie - uruchomione na switchach DHCP Snooping i baza relacji IP-MAC na jakimś zewnętrzny FTP lub TFTP.

    Inne rozwiązanie - w sieci jakiś DHCP serwer inny niż wbudowany w mydelniczkę. Wtedy eksportujesz z niego okresowo dzierżawy, lub wysyłasz je na sysloga.

    Inne rozwiązanie - na komputerach klienckich wrzucasz skrytp, który po uruchomieniu PC (lub okresowo) wysyła informacje o konfiguracji sieci na jakiegoś sysloga.

    Inne rozwiązanie - włączasz SNMP na hostach i pobierasz sobie konfigi na serwerek, np Zabbix. Możesz też użyć Zabbixowego klienta.
  • Specjalista elektronik
    NetBios - trzeba by go uruchomić na każdym komputerze (wiem, pod Windows jest domyślnie, ale tam są głównie Linux-y - jedyny komputer z Windows, do jakiego dostawałem się zdalnie, jest w DNS-ie, ktoś to zdefiniował).

    Antywirusy są pod Windows; do Linux-ów raczej rzadko się ich używa, bo wirusy na Linux-a są rzadkością.

    DHCP, switche - nie ja tym zarządzam. Już pisałem, jakie jest rozwiązanie, ale to może zrobić tylko admin sieci.

    Oczywiście, zainstalowanie na każdym komputerze programu, który będzie rozgłaszał nazwę komputera, byłoby rozwiązaniem - tylko mi chodzi o to, żebym nie musiał instalować programu na każdym komputerze.

    Próbuję rejestrować dane z broadcastów DHCP - liczę na to, że złapię pakiet z nazwą komputera i adresem.
  • Specjalista Sieci, Internet
    Mam UTM w niektórych sieciach i ... wcale nie tak mało jest filtrowane skryptów, exploitów i innego śmiecia dla hostów z Linuxem. Stacji roboczych co prawda jakoś nie mam pod opieką, ale na serwerach (jak nie ma UTM) to zawsze instaluję antywirus+IDS+IPS.
    Jakiś dziwny ten admin od sieci, że takich podstawowych usług jak rejestracja w DNS nie chce uruchomić czy wysłać na sysloga dzierżaw DHCP.
    Przy prawidłowo skonfigurowanej zaporze sieciowej na hoście, nmap i inne skanery prawie nic nie powiedzą. Wiresharkiem nie złapiesz pakietów DHCP, bo tylko żądanie adresu jest wysyłane brodcastem, odpowiedź z propozycją adresu IP jest wysyłana już unicastem na konkretny MAC. Musiałbyś mieć huby zamiast switchy, lub kombinować z przepełnieniem tablic alokacji MAC, ale to mogłoby położyć sieć. Jak admin nie zabezpieczył sieci, to można by spoofować arp bramy domyślnej (lub jakiegoś serwisu w sieci, z którym hosty często się łączą) i podszywać się pod tę bramę. Wtedy miałbyś komplet informacji IP i MAC (nawet w tym Wiresharku) czy innym agregatorze wykorzystującym sterownik przechwytywania PCAP. Oczywiście też możesz tym sposobem wysadzić sieć.
    Osobiście wybrałbym Zabbixa i jego wtyczki na hostach. Trzeba instalować, ale możliwości ogromne (szczególnie na Linuxach bo dla serwerów na nich opartych Zabbix był głównie projektowany).