Linux показать все ip адреса

How to find all the used IP addresses on a network

In my work there is a lot of computer and I want make a joke. I can close computer over the network but finding IP addresses is hard to me. How can I easily find all online IP adresses from 192.168.1.aa to 192.168.1.zz?

5 Answers 5

Generally, nmap is quite useful to quickly scan networks.

To install nmap, enter the following command in the terminal:

Once the application is installed, enter the following command:

This will show you which hosts responded to ping requests on the network between 192.168.1.0 and 192.168.1.255.

For older versions of Nmap, use -sP :

For additional references, see the following pages:

It is a very useful tool to learn.

If all the computers in your network are Ubuntu or any other distribution that makes use of avahi-daemon (DNS-SD), you can get a detailed list of them (with hostname and IP address) by doing:

avahi-browse -rt _workstation._tcp 

If you want to know all the IP addresses used in your network, you can use arp-scan :

As it is not installed by default, you’ll have to install it with sudo apt-get install arp-scan . arp-scan send ARP packets to the local network and displays the responses received, so it shows even firewalled hosts (that block traffic based on IP packets).

This command is definitely better than the one above. Running nmap took ages, but this one replied instantly with the nodes in the specified network.

In my case, very often, arp-scan doesn’t find all the devices associated to my wireless network. Now, for example, sudo arp-scan 192.168.2.0/24 shows 2 results (.1 and .1), while nmap -sn 192.168.2.0/24 shows 4 results (.1, .2, .3 and .4). So, it seems that nmap is more accurate (I know for sure that there is 4 devices attached to the network). Why is this?

Maybe I found the answer in a comment to another question. «It should be noted that some devices might not show up unless they are turned on. My nexus 4 won’t show up unless the screen is on.» However, it’s interesting that the same devices always respond to pings from nmap .

Note to the reader: Original answer has been posted a while ago and at the time of when I was only learning shell scripting. See the revisited version below for a new and improved script that performs much faster.

Читайте также:  Linux терминал переключение языка

Original Answer

nmap would be my #1 choice, but what if you don’t have it ? The DIY way would be with a ping script that goes through each possible ip address on the network manually. What we have here is just while loop, where we set last number in the address, make silent single ping to the address, check if the command succeed or not (and if it did succeed,then host is obviously up ), and printf statement. Quick and dirty way, took me about 10 mins to write it, but runtime might be a bit slow,though.

#!/bin/sh # set -x NUM=1 while [ $NUM -lt 256 ];do ping -q -c 1 192.168.0.$NUM > /dev/null RESULT=$(echo $?) if [ $RESULT -eq 0 ]; then printf 192.168.0.$NUM"\n" fi NUM=$(expr $NUM + 1) done 

Revisited Answer

I originally posted this answer in August of 2015. Since then I’ve learned a bit more about shell scripting, and I once I saw this script, I thought it would be a good idea to revisit this answer to add a few improvements. Here’s a few ideas:

  • The script is obviously slow and ping waits for response from the host. By default, ping for two RTT, which can vary depending on how congested is your network , and as far as I understand TCP protocol doubles the wait time each time(at least according to this). So we could force ping to time out with -w 1 flag. Since we have 256 addresses and we assume 1 second for each address, the script will take about 256/60 = 4.27 minutes.
  • Doing a command and then capturing its exit status with $? wasn’t really necessary. The if . then;. fi can operate on commands directly. In other words, it’s sufficient to do this:
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ; then fi 
printf "IP %s is up\n" 192.168.0."$NUM" 
#!/bin/sh # Uncomment for debugging #set -x pingf() < if ping -w 2 -q -c 1 192.168.0."$1" >/dev/null ; then printf "IP %s is up\n" 192.168.0."$1" fi > main() < NUM=1 while [ $NUM -lt 255 ];do pingf "$NUM" & NUM=$(expr "$NUM" + 1) done wait >main 

How much better does that work ? Not bad, actually, takes a matter of seconds.

$ time ./ping_script.sh IP 192.168.0.1 is up IP 192.168.0.101 is up IP 192.168.0.27 is up IP 192.168.0.29 is up 0m02.50s real 0m00.01s user 0m00.12s system 

Things to Keep in Mind

  • Windows ( starting since Windows 7 , I think ) have started blocking response to ICMP echo requests. There’s quite a few questions about that on Ask Ubuntu and other sites of the sort «Hey, my Linux computer can be pinged, but not Windows ones, what’s up with that ?» Just be aware of the fact that for newer Windows versions you do need to enable response to ICMP echo.

Источник

Команда IP в Linux: руководство с примерами

img

Команда ip — это сетевой инструмент Linux для системных и сетевых администраторов. IP означает Интернет-протокол и, как следует из названия, инструмент используется для настройки сетевых интерфейсов. В старых дистрибутивах Linux использовалась команда ifconfig, которая работает аналогично. Однако ifconfig имеет ограниченный диапазон возможностей по сравнению с командой ip.

В этом руководстве мы рассмотрим все важные операции, которые команда ip может выполнять в Linux.

Команда IP в Linux

Как использовать команду ip

Команда ip имеет следующий синтаксис:

К объектам OBJECT (или подкомандам), которые вы будете использовать чаще всего, относятся:

  1. link (l) — используется для отображения и изменения сетевых интерфейсов
  2. address (addr/a) — используется для отображения и изменения адресов протокола (IP, IPv6)
  3. route (r) — используется для отображения и изменения таблицы маршрутизации
  4. neigh (n) — используется для отображения и управления соседними объектами (таблица ARP)

Они могут использоваться как в полной, так и сокращенной форме.

Есть много других доступных объектов и команд. Чтобы увидеть полный список, введите следующую команду:

ip help

Для выполнения команд вы можете использовать либо полную, либо сокращенную формы. Например, ip link и ip l будут давать одинаковые результаты.

При настройке сетевых интерфейсов вы должны запускать команды как пользователь root или пользователь с привилегиями sudo. В противном случае вы увидите сообщение RTNETLINK answers: Operation not permitted

Предупреждение: по умолчанию система не сохраняет изменения перманентно. После перезапуска Linux-сервера вновь измененное состояние будет потеряно. Есть два способа сделать ваши настройки постоянными: добавить команды в сценарий запуска или отредактировать дистрибутивные файлы конфигурации.

Управление и отображение сетевых интерфейсов

Вы можете получить список всех параметров команды link , набрав:

ip link

Получить информацию о сетевом интерфейсе

Чтобы увидеть информацию канального уровня обо всех доступных устройствах (у которых загружен драйвер), используйте команду:

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 12:24:01:8c:67:45 brd ff:ff:ff:ff:ff:ff

Если вы хотите, чтобы команда отображала информацию для одного конкретного устройства, введите следующее:

Чтобы просмотреть статистику по всем сетевым интерфейсам (такие детали, как переданные или отброшенные пакеты или даже ошибки), используйте:

Вы также можете увидеть аналогичную информацию для отдельного сетевого интерфейса:

Если вам нужно больше подробностей, добавьте еще -s в синтаксис:

Чтобы увидеть список только работающих интерфейсов, используйте:

Изменить статус сетевого интерфейса

Если вы хотите включить сетевой интерфейс, используйте команду:

Отключите интерфейс, введя:

ip link set [interface] down

Команда ip link позволяет вам изменять очередь передачи, ускоряя или замедляя интерфейсы в соответствии с вашими потребностями и аппаратными возможностями.

ip link set txqueuelen [number] dev [interface]

Вы можете установить MTU (Maximum Transmission Unit) для улучшения производительности сети:

ip link set mtu [number] dev [interface]

Чтобы узнать все опции команды link, наберите:

ip link

Мониторинг и управление IP-адресами

Узнайте все команды address , набрав следующее:

ip addr

Мониторинг IP-адресов

Выведите все устройства с помощью следующей команды:

Чтобы вывести список всех сетевых интерфейсов и связанных IP-адресов, используйте команду:

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 51:55:07:8a:62:44 brd ff:ff:ff:ff:ff:ff inet 192.168.120.24/24 brd 192.168.120.255 scope global dynamic eth0 valid_lft 2900sec preferred_lft 2900sec inet6 fe80::5054:ff:fe8c:6244/64 scope link valid_lft forever preferred_lft forever

Вы также можете увидеть информацию об отдельной сети:

ip addr show dev [interface]

Чтобы получить список всех IPv4 адресов, используйте:

Чтобы получить список всех IPv6 адресов, используйте:

Как добавить IP-адрес в Linux

Добавьте IP-адрес в интерфейс с помощью команды:

ip addr add [ip_address] dev [interface]

Если указанный интерфейс не существует, отобразится сообщение: Cannot find device [interface]

Чтобы добавить два адреса на один интерфейс также используйте эту команду:

ip address add 192.168.1.41/24 dev eth0 ip address add 192.168.1.40/24 dev eth0

Если вам нужно добавить широковещательный (broadcast) адрес для интерфейса, используйте команду:

ip addr add brd [ip_address] dev [interface]

Чтобы удалить IP-адрес из интерфейса, выполните следующие действия.

ip addr del [ip_address] dev [interface]

Управление и отображение таблицы IP-маршрутизации

Просмотрите полный список команд ip route с помощью следующей команды:

ip route

Показать таблицу маршрутизации IP

Для просмотра всех записей в таблице маршрутизации используйте одну из следующих команд:

default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.241 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.241 192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.241 metric 100

С помощью команд, приведенных выше, выходные данные отображают все записи маршрута в ядре. Если вам нужно сузить поиск, добавьте объект SELECTOR :

Чтобы просмотреть маршрутизацию для отдельной сети, используйте следующий синтаксис:

Изменить таблицу IP-маршрутизации

Чтобы добавить новую запись в таблицу маршрутизации, введите команду:

ip route add [ip_address] dev [interface]

Или вы можете добавить новый маршрут через шлюз, набрав:

ip route add [ip_address] via [gateway_IP]

Также команда позволяет добавить маршрут для всех адресов через локальный шлюз, добавив параметр default :

ip route add default [ip_address] dev [device] ip route add default [network/mask] via [gateway_IP]

Чтобы удалить существующую запись в таблице маршрутизации, используйте команды:

ip route del [ip_address] ip route del default ip route del [ip_address] dev [interface]

Отображение и изменение IP-записей соседей

При помощи команды ip neigh можно манипулировать таблицами ARP (Address Resolution Protocol). Это аналог команды arp

Для получения полного списка всех параметров команды neigh используйте:

ip neigh

Отображение IP-адресов соседей

Чтобы отобразить таблицы соседей, используйте следующую команду:

Выходные данные показывают MAC-адреса устройств, которые являются частью системы, и их состояние. Состояние устройства может быть:

  • REACHABLE — означает валидную, достижимую запись до истечения таймаута.
  • PERMANENT — означает постоянную запись, которую может удалить только администратор
  • STALE — означает действительную, но недоступную запись
  • DELAY — означает, что ядро все еще ожидает проверки из устаревшей записи

Изменить IP-записи соседей

Добавьте новую запись в таблицу с помощью команды:

ip neigh add [ip_address] dev [interface]

Или удалите существующую запись ARP:

ip neigh del [ip_address] dev [interface]

Источник

Оцените статью
Adblock
detector