Просмотр компьютеров в локальной сети из терминала Linux
Полный чайник в Linux. Как посмотреть из терминала все компьютеры, которые подключены к локальной сети ?
Поясню подробней. Интернет-кабель у меня подключен к роутеру. От роутера идет несколько кабелей к компьютерам с Ubuntu. А теперь сам вопрос. Как мне с одного из этих компьютеров увидеть остальные компьютеры внутри сети роутера ?
Не совсем понятно что имеется в виду, но предложу варианты (маску подставить по необходимости):
- nmap -sn 192.168.0.0/24 (при блокировке ICMP файрволом можно попробовать другие варианты, например, UDP: nmap -sn -PU 192.168.0.0/24 )
- echo 192.168.0.<1..254>|xargs -n1 -P0 ping -c1|grep «bytes from» (это те, кто на пинг отвечает)
Для начала убедитесь, что установлена samba. Если такой пакет присутствует и задана рабочая группа, выполните в консоли
Есть очень удобная утилитка fping http://fping.org/ Прямо-таки для этого создана. Можно nmap , но это будет гораздо медленнее.
Добавлю ещё варианты.
Как и nmblookup он требует, чтобы на компьютерах была установлена соответствующая служба, для linux это avahi-daemon . (С нашими тупыми провайдерами рекомендую всегда отключать проверку на использование домена .local: в /etc/default/avahi-daemon поставить AVAHI_DAEMON_DETECT_LOCAL=0 )
Чтобы компьютер с linux отвечал на это, нужно сделать на нём:
Некоторые маршрутизаторы это так же поддерживают.
Ну и более низкоуровневый и как мне кажется более надёжный для односегментной сети:
ARP сканирование локальной сети Linux
Иногда возникает необходимость узнать какие устройства подключены к локальной сети Linux. Это может понадобиться если вы хотите подключиться к одному из компьютеров и не помните его адрес или хотите убедиться в безопасности вашей сети и найти все скрытые устройства.
Самый надежный способ обнаружить все подключенные к сети Linux устройства, в том числе и скрытые — это ARP сканирование локальной сети. В этой статье мы рассмотрим как его выполнить и какие утилиты для этого нужны.
Как выполнить ARP сканирование локальной сети?
Как вы знаете, у всех компьютеров в сети есть IP адреса. Никогда не задавались вопросом, как сеть определяет, какому компьютеру принадлежит тот или иной адрес? Ведь сети бывают разные, проводные, беспроводные, ppp и т д. И в каждой из этих сетей аппаратный адрес компьютера имеет свой формат, зависящий от конструктивных особенностей сети, а IP адреса одни и те же.
Все очень просто. Для преобразования физических адресов, в ip адреса используется протокол ARP (Address Resolution Protocol), так и расшифровывается — протокол разрешения адресов. Когда компьютеру нужно обратиться к другому компьютеру в локальной сети, он отправляет специальный запрос в котором буквально спрашивает «У кого IP адрес 192.168.1.4», компьютер с таким ip адресом отправляет ответ «У меня, я 11:22:33:44:55», в ответе он передает свой физический адрес в этой сети. Дальше этот адрес заносится в специальную таблицу. но это уже тонкости реализации и они выходят за рамки нашей статьи. Сегодня мы поговорим как самому выполнить ARP сканирование локальной сети linux и найти все подключенные устройства.
Формат сообщений ARP — простой. Сообщение содержит либо запрос с IP адресом, либо ответ. Размер сообщения зависит от используемого сетевого протокола IPv4 или IPv6, типа оборудования сети и т д. Типы и размеры адресов определяются в заголовке сообщения. Заголовок завершается кодом сообщения. Код 1 для запроса и 2 для ответа.
Тело сообщения состоит из четырех адресов, аппаратные и сетевые адреса отправителя и получателя.
Если в вашей сети есть устройства, которые не отвечают на любые запросы, такие как Ping, HTTP, HTTPS и т д, то их можно найти послав ARP запрос. Это могут быть различные фаерволы и маршрутизаторы, в том числе маршрутизаторы компании Cisco, такое поведение заложено их протоколом. В таком случае ARP сканирование сети Linux будет единственным способом найти такое устройство.
Утилита ARP Scan
ARP Scan или еще называемый MAC Scanner — это очень быстрый инструмент для сканирования локальной сети Linux с помощью ARP. Утилита показывает все IPv4 адреса устройств в вашей сети. Поскольку ARP не использует маршрутизацию, то такой вид сканирования работает только в локальной сети.
ARP Scan находит все активные устройства, даже если у них включен брандмауэр. Компьютеры не могут скрыться от ARP также как они скрываются от ping. Но ARP сканирование не подходит для поиска компьютеров за пределами локальной сети, в таких ситуациях используйте ping сканирование.
Установка ARP Scan
Этот arp сканер сети доступен для следующих операционных систем:
- Debian, поставляется по умолчанию;
- Ubuntu, можно установить с репозитория Universe;
- Fedora, официальные репозитории начиная с версии 6;
- RedHat — доступна начиная с версии 5;
- Gentoo, официальные репозитории;
- ArchLinux — официальные репозитории Pacman.
Для установки в Ubuntu выполните:
sudo apt install arp-scan
Сканирование сети
ARP Scan позволяет находить активные компьютеры как в проводных сетях ethernet, так и в беспроводных Wifi сетях. Также есть возможность работать с Token Ring и FDDI. Не поддерживаются последовательные соединения PPP и SLIP, поскольку в них не используется ARP. Программу нужно запускать с правами суперпользователя.
Но сначала надо узнать сетевой интерфейс, который используется для подключения к сети. Для этого можно воспользоваться программой ip:
В данном случае, это enp24s0. Самый простой способ выполнить ARP сканирование и обнаружить все подключенные к локальной сети компьютеры — запустить программу со следующими параметрами:
sudo arp-scan —interface=enp24s0 —localnet
Здесь параметр —interface, задает интерфейс для сканирования, а —localnet, говорит, что нужно использовать все возможные IP адреса для текущей сети.
Первый параметр можно опустить, тогда программа будет искать все узлы для интерфейса с меньшим номером в системе. В нашем примере имя интерфейса — enp24s0.
Вместо параметра —localnet, можно указать маску сети:
sudo arp-scan —interface=enp24s0 10.0.1.0/24
ARP сканирование можно использовать, даже если у вашего интерфейса нет IP адреса. Тогда в качестве исходящего адреса будет использован 0.0.0.0. Правда, на такие запросы могут ответить не все системы. Тогда ARP сканер сети не так эффективен.
ARP спуфинг и ARP прокси
Поскольку в ARP нет поддержки аутентификации, ARP ответ на запрос может отправить любая машина, даже не та которой он был адресован. Иногда такое поведение используется в архитектуре сети — ARP прокси или маршрутизатор предает свой IP адрес вместо адреса запрашиваемой машины. Но также может использоваться для перехвата данных, отправляемых компьютером. Хакер может использовать ARP чтобы выполнить атаку «Человек посередине» или «Отказ в обслуживании» на других пользователей сети. Для защиты от таких атак существует специальное программное обеспечение.
Выводы
ARP Scan это простой, но очень мощный инструмент, с помощью которого можно выполнять сканирование ip адресов в локальной сети linux. Те, кто знаком с Cisco маршрутизаторами и коммутаторами, знают что найти такие устройства можно только с помощью ARP. Это полезный инструмент, возможно, когда-то вам он пригодится.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
How to find what other machines are connected to the local network
How can I see a list of all machines that are available on the LAN I’m am part of.
4 Answers 4
How much do you know about the LAN in question? I’m assuming you don’t know anything just plugged in the cable or connected to wifi.
- Try requesting an IP address with DHCP. Do you get one? Then you already know a few things: the gateway IP, the DHCP server IP, the subnet mask and maybe DNS servers.
- If you don’t get one there is either no DHCP server or the network is MAC filtered.
- Either way, start capturing packets with wireshark. If you are on wireless or connected to a hub it’s easy. If you are connected to a switch you can try MAC flooding to switch it back to «hub mode» but a smarter switch will just disable your port. If you want to try it anyway ettercap can do this for you. (Or macchanger and a shell script 🙂 )
- Looking at the packets you can find IP addresses, but most importantly, you can guess the network parameters. If you suspect MAC filtering change you MAC address to one of the observed ones after it leaves (sends nothing for a while).
- When you have a good idea about the network configuration (netmask, gateway, etc) use nmap to scan. Nmap can do a lot more than -sP in case some hosts don’t respond to ping (check out the documentation). It’s important that nmap only works if your network settings and routes are correct.
- You can possibly find even more hosts with nmap’s idle scan.
Some (most?) system administrators don’t like a few of the above methods so make sure it is allowed (for example it’s your network). Also note that your own firewall can prevent some of these methods (even getting an IP with DHCP) so check your rules first.
Nmap
Here is how to do basic host discovery with nmap. As I said your network configuration should be correct when you try this. Let’s say you are 192.168.0.50 you are on a /24 subnet. Your MAC address is something that is allowed to connect, etc. I like to have wireshark running to see what I’m doing.
First I like to try the list scan, which only tries to resolve the PTR records in DNS for the specified IP addresses. It sends nothing to the hosts so there is no guarantee it is really connected or turned on but there is a good chance. This mode obviously needs a DNS server which is willing to talk to you.
This may find nothing or it may tell you that every single IP is up.
Then I usually go for ARP scan. It sends ARP requests (you see them as «Who has <target IP>? Tell <your IP>» in wireshark). This is pretty reliable since noone filters or fakes ARP. The main disadvantage is that it only works on your subnet.
If you want to scan something behind routers or firewalls then use SYN and ACK scans. SYN starts a TCP connection and you either get an RST or a SYNACK in response. Either way the host is up. You might get ICMP communication prohibited or something like that if there is a firewall. Most of the time if a firewall filtered your packets you will get nothing. Some type of firewalls only filter the TCP SYN packets and let every other TCP packet through. This is why ACK scan is useful. You will get RST in response if the host is up. Since you don’t know what firewall is in place try both.
Then of course you can use the ICMP-based scans with -PE -PP -PM.
An other interesting method is -PO with a non-existent protocol number. Often only TCP and UDP is considered on firewalls and noone tests what happens when you try some unknown protocol. You get an ICMP protocol unreachable if the host is up.
You can also tell nmap to skip host discovery (-Pn) and do a portscan on every host. This is very slow but you might find other hosts that the host discovery missed for some reason.
How to see all computers connected to a network
I am in a LAN and there are 3 Ubuntu, 2 Kubuntu, 2 Windows XP and 2 Windows 7. What commands or tools are available to see what PCs are connected to the LAN that it shows the name of the PC and the IP. Similar to tools like Angry IP that show all PCs in a LAN.
Note that I do not know the IPs or names of the computers connected to the LAN. So the tool or command should look for them to.
9 Answers 9
Arp-scan works great for me too.
-or if using ethernet:
(this last is practically identical to what Rajesh Rajendran posted; the -l standing for —localnet)
If you don’t have arp-scan (it doesn’t come with Ubuntu by default), just pull up a terminal and type:
But for a great tool, Nmap. Great for mapping networks.
The simplest thing is
I always use nmap. To scan for all devices in your network, use:
nmap -sP 192.168.0.1/24
It is a great tool to know about. You may want to install nmap using:
sudo apt-get install nmap if you are using Debian or
sudo pacman -S nmap if you are using Arch.
As a possible GUI option, the best one I have seen is Angry IP as found in http://angryip.org/download/#linux
Simply download the latest DEB package and install. Then run ipscan from Dash. Here is a screenshot:
ip neigh
ip neigh and hosts . NO nmap / sudo required.
Building on this, you can build a Python script:
If broadcast isn’t disabled on your router.
You can ping the broadcast address.
Will broadcast the ping command to every host within the 192.168.0/24 subnet.
Note: It’s probably a good idea to keep broadcasting turned off though as that’s how hackers can exploit a network using a DDOS Smurf attack. Basically, ping the broadcast address with a packet that has a spoofed destination address (ie the ip address of the victim). There’s a little more to it than that but that’s what Google is for.
Note: The same also works on Windows but you ping the actual broadcast address (not the subnet).