LINUX.ORG.RU
ФорумAdmin

Как узнать все активные машины в сети, их IP и hostnames?

 , , , ,


0

1

Есть роутер, он образует локальную подсеть 192.168.0.1/24 В сети той несколько машин, все на Linux. Иногда я использую ssh для управления одной машиной с другой, и в этом нет проблем.

Но для ssh необходимо знать IP компа, так как ssh не понимает hostname, если его нет в /etc/hosts А так как это роутер, то IP динамические.

nmap -sn 192.168.1.0/24

выводит только активные IP в сети, а

nmap -sP 192.168.1.0/24
тоже не помогает, даже из-под root

Сейчас смотрю IP и hostname в админке роутера, что не совсем удобно. Я конечно могу всем дать статичные IP, а потом настроить /etc/hosts, но это костыль какой-то.

Нужна команда, что выведет список всех активных IP в подсети 192.168.0.1/24 и их hostnames. Гуглить пробовал, но он путает hostname c netbios, и часть команд под винду, причем без указания этого.

Я бы сделал следующее: На роутере в DHCP забиндил бы существующее розданные ip адреса( если не хочешь делать статики). Те они всегда будут получать один и тот же айпи. Запусти где-нибудь DNS сервер ( на том же роутере, если умеет) и пропиши свои локальные имена. В DHCP пропиши, чтобы при выдаче настроек, машины получали твой DNS в качестве DNS.

В /etc/hosts ничего прописывать не надо,это не совсем тот случай. Нужна одна точка, где все прописано, а не куча.

constin ★★★★ ()
Ответ на: комментарий от constin

У меня не настолько продвинутый роутер. И слишком много всего ради функции, которой я пользуюсь раз в неделю, сеть у меня дома.

Vsevolod-linuxoid ★★★★★ ()

Сейчас смотрю IP и hostname в админке роутера, что не совсем удобно.

Нужна команда, что выведет список всех активных IP

Вот и ответ. Нужен такой робот, который будет за вас смотреть в админке. То есть - модель робота будет зависеть от производителя роутера.

vodz ★★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

других вариантов нет. невозможно узнать hostname linux машины кроме как зайти на нее ( тут можно использовать finger root@192.168.1.1) или спросить у DNS сервера.Те прописывать статик айпи и затем прописывать имена в /hosts это ок, а сделать тоже самое на dns/dhcp это уже «слишком много». Кстати, а почему они динамические? У вас там сервисы от этого не страдают? Если айпи динамические, то машины явно не общаются между собой. Те это тестовые виртуалки? Если это тестовые виртуалки, то можно разместить dns/dhcp на гипервизоре, если это какие-то сервисы, то хорошим тоном будет дать им статик ip. Из-за динамик ip можно поймать баги на некоторых сервисах.

constin ★★★★ ()

ssh прекрасно понимает hostname, если тот резолвится через dns.

ma1uta ★★★ ()
Ответ на: комментарий от constin

других вариантов нет

Да вариантов много. Для мелкого применения в рутерах написаны специальные комбайны, содержащие dhcp+dns+etc, например, dnsmasq. Имя можно получать и только от dhcp копаясь в его логах. Ну и куча всяких велосипедных костылей, типа после получения адреса сама машина по www будет делать POST со своим именем :))

vodz ★★★★★ ()

Собирай адреса arpwatch-ем, тогда проще будет искать активные.

Можно посмотреть в dhcpd.leases и отсортировать по времени.

sergej ★★★★★ ()
Ответ на: комментарий от Deleted

Ключ не подскажете?

man arping | grep -i hostname
ничего не выдал, я не нашел упоминания, как с его помощью узнать hostname.

И на практике он просто пингует адрес, я это и так могу.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от Vsevolod-linuxoid

Хостнэйм он тебе не поможет узнать, это да. Тогда узнавай либо через ssh на все машины, либо по логам dhcp сервера.

Deleted ()
Ответ на: комментарий от Deleted

Хостнэйм он тебе не поможет узнать, это да.

Я писал выше, что команда

nmap -sn 192.168.1.0/24
отлично находит все активные IP в подсети.

по логам dhcp сервера.

Как именно это делать? Это вообще можно для клиента, в качестве сервера в сети у меня роутер?

И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга? Просто задача вроде бы простая, а решения найти не могу.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга?

В общем случае — нет. А что за роутер? А то может там dnsmasq, на котором прописывание в DNS клиентов DHCP делается на раз-два, только взять и сделать?

dexpl ★★★★★ ()
Последнее исправление: dexpl (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга? Просто задача вроде бы простая, а решения найти не могу.

Потому что соответствие IP -> hostname, так же как и hostname сам по себе, обычно никому не нужно. Зачем тебе хостнэйм, когда у тебя есть адрес? Если тебе нужно взаимодействие двух машин в сети, то выдай им статичные адреса и записи в DNS.

Если нужен autodiscover - в линуксах есть avahi, попробуй покрутить его. Сам я им не пользовался, больше этого подсказать не смогу.

Deleted ()
Ответ на: комментарий от Vsevolod-linuxoid

Надо поставить пакет arpwatch и тогда наверное ман будет

arpwatch -f /var/lib/arpwatch/eth0.dat -i eth0

В /var/lib/arpwatch/eth0.dat будут появляться хосты. + письма-оповещения будет слать на arpwatch@localhost

sergej ★★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга?

Напрямую нет. Простой пример, вы знаете телефонный номер абонента, по нему можно ли просто так узнать его реальное имя? Или почтовый адрес -> имя отправившего? Подчеркиваю полное соответствие номер/адрес->имя. Скорее нет чем да.
Далее. Даже если у вас dhcp+dns машина клиента не обязана представлять hostname для dhcp, т.е. те варианты которые описаны выше не всегда будут работать.

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.