Как узнать все активные машины в сети, их IP и hostnames?
Есть роутер, он образует локальную подсеть 192.168.0.1/24 В сети той несколько машин, все на Linux. Иногда я использую ssh для управления одной машиной с другой, и в этом нет проблем.
Но для ssh необходимо знать IP компа, так как ssh не понимает hostname, если его нет в /etc/hosts А так как это роутер, то IP динамические.
выводит только активные IP в сети, а
Сейчас смотрю IP и hostname в админке роутера, что не совсем удобно. Я конечно могу всем дать статичные IP, а потом настроить /etc/hosts, но это костыль какой-то.
Нужна команда, что выведет список всех активных IP в подсети 192.168.0.1/24 и их hostnames. Гуглить пробовал, но он путает hostname c netbios, и часть команд под винду, причем без указания этого.
Я бы сделал следующее: На роутере в DHCP забиндил бы существующее розданные ip адреса( если не хочешь делать статики). Те они всегда будут получать один и тот же айпи. Запусти где-нибудь DNS сервер ( на том же роутере, если умеет) и пропиши свои локальные имена. В DHCP пропиши, чтобы при выдаче настроек, машины получали твой DNS в качестве DNS.
В /etc/hosts ничего прописывать не надо,это не совсем тот случай. Нужна одна точка, где все прописано, а не куча.
У меня не настолько продвинутый роутер. И слишком много всего ради функции, которой я пользуюсь раз в неделю, сеть у меня дома.
Сейчас смотрю IP и hostname в админке роутера, что не совсем удобно.
Нужна команда, что выведет список всех активных IP
других вариантов нет. невозможно узнать hostname linux машины кроме как зайти на нее ( тут можно использовать finger root@192.168.1.1) или спросить у DNS сервера.Те прописывать статик айпи и затем прописывать имена в /hosts это ок, а сделать тоже самое на dns/dhcp это уже «слишком много». Кстати, а почему они динамические? У вас там сервисы от этого не страдают? Если айпи динамические, то машины явно не общаются между собой. Те это тестовые виртуалки? Если это тестовые виртуалки, то можно разместить dns/dhcp на гипервизоре, если это какие-то сервисы, то хорошим тоном будет дать им статик ip. Из-за динамик ip можно поймать баги на некоторых сервисах.
ssh прекрасно понимает hostname, если тот резолвится через dns.
Да вариантов много. Для мелкого применения в рутерах написаны специальные комбайны, содержащие dhcp+dns+etc, например, dnsmasq. Имя можно получать и только от dhcp копаясь в его логах. Ну и куча всяких велосипедных костылей, типа после получения адреса сама машина по www будет делать POST со своим именем :))
arping по всем адресам сети
Собирай адреса arpwatch-ем, тогда проще будет искать активные.
Можно посмотреть в dhcpd.leases и отсортировать по времени.
Ключ не подскажете?
И на практике он просто пингует адрес, я это и так могу.
Пожалуйста, полные команды. Я новичек в сетях. man arpwatch не сработал, нет справочной страницы.
Хостнэйм он тебе не поможет узнать, это да. Тогда узнавай либо через ssh на все машины, либо по логам dhcp сервера.
Хостнэйм он тебе не поможет узнать, это да.
Я писал выше, что команда
Как именно это делать? Это вообще можно для клиента, в качестве сервера в сети у меня роутер?
И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга? Просто задача вроде бы простая, а решения найти не могу.
И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга?
В общем случае — нет. А что за роутер? А то может там dnsmasq, на котором прописывание в DNS клиентов DHCP делается на раз-два, только взять и сделать?
И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга? Просто задача вроде бы простая, а решения найти не могу.
Надо поставить пакет arpwatch и тогда наверное ман будет
В /var/lib/arpwatch/eth0.dat будут появляться хосты. + письма-оповещения будет слать на arpwatch@localhost
И вообще, если две машины в одной подсети, оба клиенты и знают IP друг друга, то они не могут определить hostname друг друга?
Настройка сети VirtualBox
Виртуальные машины VirtualBox очень часто используются для тестирования различного программного обеспечения и его взаимодействия между собой. Обычно, таким программам необходим доступ к интернету. Время от времени возникает необходимость протестировать работу программ по сети или даже создать небольшую тестовую лабораторию из виртуальных машин.
В этой инструкции мы рассмотрим как выполняется настройка сети VirtualBox различными способами. Вы узнаете как объединить машины в одну локальную сеть, как дать им доступ к интернету и как связать их с основной системой. Но сначала поговорим о том, как может работать сеть.
Виды сетевых адаптеров VirtualBox
Существует несколько способов как настроить сеть в virtualbox, и каждый из них подходит для лучше для решения одной задачи и меньше для другой. Рассмотрим основные:
Теперь рассмотрим каждый вариант настройки более подробно.
Настройка сети Virtualbox
1. Настройка сети NAT
Здесь почти нет о чем говорить. Получение доступа к сети через NAT включено по умолчанию. Проброс портов я рассматривал в отдельной статье. Но если вы раньше отключали сетевые адаптеры, то чтобы включить NAT обратно достаточно открыть настройки нужной машины:
Перейти на вкладку «Сеть»:
Выбрать один из адаптеров. К виртуальной машине можно подключить несколько адаптеров и это очень удобно, так как вы можете комбинировать вместе адаптер виртуального хоста и NAT чтобы получить преимущества обоих режимов. Дальше вам нужно выбрать пункт «NAT» в списке «Тип подключения».
На вкладке «Дополнительно» вы можете настроить марку устройства адаптера и MAC адрес:
Если вы собираетесь устанавливать туда в Windows, то лучше будет работать Intel PRO/1000 MT Desktop, а для Linux можно оставить AMD PCNet FAST III, так как он поддерживается всеми операционными системами.
2. Настройка сети NAT
Теперь все машины, подключенные к этой сети, будут доступны друг другу, как в VMWare.
3. Настройка адаптера виртуального хоста
Нажмите кнопку «Создать», затем, в появившемся адаптере, напротив пункта DHCP установите галочку «Включен».
Теперь вернитесь к списку виртуальных машин, зайдите в настройки машины, «Сеть»:
Для всех машин, которые вы хотите объединить в одну сеть нужно выбирать один и тот же адаптер хоста. Если вы захотите добавить машинам также доступ в интернет, просто перейдите на вкладку «Адаптер 2», включите его и настройте NAT, как описано в первом пункте.
4. Настройка сетевого моста VirtualBox
В поле «Имя» вам необходимо выбрать сетевой интерфейс, который будет использоваться для связи с внешним миром. Минус такого способа в том, что внешние компьютеры смогут получить доступ к виртуальной машине, а это не очень хорошо с точки зрения безопасности.
5. Внутренняя сеть VirtualBox
Выводы
В этой небольшой статье мы рассмотрели как выполняется настройка сети VirtualBox, как видите, это не так уж сложно, как может показаться на первый взгляд, несмотря на операционную систему, которую вы используете. В большинстве случаев достаточно сети NAT, но иногда может понадобиться виртуальный адаптер хоста, все же остальные режимы используются намного реже.
Работа с виртуальными машинами KVM. Подготовка хост-машины
Вступление

Для начала необходимо узнать, есть ли у нашего процессора необходимые инструкции для поддержки виртуализации.
$ egrep ‘(vmx|svm)’ /proc/cpuinfo
Если есть — это замечательно.
Подготовка операционной системы
Установку Debian Squeeze я, пожалуй, описывать не буду: если уж вы добрались до KVM, то установка системы — плёвое дело.
Устанавливать нужно будет 64-битную OS, поскольку необходимые пакеты есть только для этой архитектуры.
В Debian Squeeze «свежесть» пакетов с KVM и сопутствующих программами нас совсем не устраивает, поскольку очень много всяких фиксов и фич попросту пройдут мимо нас. Поэтому мы добавим репозитории Debian Sid и experimental:
deb http://ftp.ru.debian.org/debian sid main contrib non-free
deb-src http://ftp.ru.debian.org/debian sid main contrib non-free
deb http://ftp.ru.debian.org/debian experimental main contrib non-free
deb-src http://ftp.ru.debian.org/debian experimental main contrib non-free
Указываем, что у нас базовый дистрибутив stable, а не то, что подумала система:
# echo ‘APT::Default-Release «stable»;’ > /etc/apt/apt.conf.d/default
Оттуда нам понадобятся пакеты:
Из стабильного репозитория нам будут нужны:
# aptitude install uml-utilities bridge-utils
На вашем рабочем десктопе вы можете поставить virt-manager (GUI-утилита), который позволит удобно создавать нужные конфигурации виртуальных машин.
Ядро чем «свежее» — тем лучше (в известных пределах конечно: из git, например, я бы ставить не рекомендовал). Хорошим вариантом будет 2.6.39, вышедшее недавно.
Следует отметить, что в стандартном ядре отсутствует модуль для поддержки записи в UFS2, и если планируется запускать гостевую FreeBSD, потребуется собрать ядро с этим модулем. Ну и, конечно, в Debian-овском ядре отсутствуют свежие версии cgroups.
Что должно быть включено в ядре для использования максимального объема требуемого функционала:
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
CONFIG_CGROUP_SCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_NET_CLS_CGROUP=y
Затем идём по ссылке и устанавливаем все deb-пакеты оттуда, копируем insmod.static в /sbin/insmod.static (это нужно, поскольку в работе libguestfs использует статически скомпилированную версию insmod, а в Debian и Ubuntu такого файла просто нет, однако в последней версиии febootstrap эту проблему устранили, insmod.static более не нужно загружать на сервер). libguestfs позволяет нам получать доступ к диску VDS через API libguestfs(C, Perl, Python, PHP) или через утилиту guestfish.
Первый блин
Сейчас мы установили все, необходимое для запуска VDS, их доступа в сеть и установки самой виртуальной машины.
Давайте попробуем что-нибудь поставить, например, тот же самый Debian. Пока без настройки сети, просто, по умолчанию.
Скачиваем установщик netinstall:
Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:
user = «username»
group = «libvirt»
Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.
Выставляем для отдельного файла:
sudo setcap cap_net_admin=ei /usr/bin/kvm
Или выставляем для пользователя в целом в файле /etc/security/capability.conf:
Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:
Добавим пользователя в группу libvirt и kvm:
# adduser username libvirt
# adduser username kvm
Запустим установку виртуальной машины:
Подробно разберём параметры, которые мы указали:
Утилиты настройки и управления
Для управления установкой и для клонирования виртуальных машин у нас есть две замечательные утилиты — графическая и консольная: virt-manager и virsh, соответственно. Конечно, консольная версия намного богаче по возможностям, но ничто не сравнится с видом графиков, от которых сердце сисадмина млеет.
Думаю с virt-manager вы и сами разберётесь, давайте попробуем покопаться в консольных внутренностях virsh. Вот несколько команд которые стоит выполнить и посмотреть что из этого получится:
Чтобы тысячу раз не писать —connect qemu:///system, добавьте:
export VIRSH_DEFAULT_CONNECT_URI= qemu:///system
Подготовка сети
В официальной документации предлагается использовать несколько вариантов организации сети: NAT, bridged и прямое использование сетевых карт. И, к сожалению, в различных примерах, которые я нашел в сети и на официальном сайте, рассматриваются только NAT и bridged сети.
В моей конфигурации используются TUN/TAP устройства, на которые с eth0 маршрутизируется трафик. Коротко опишу, почему выбран именно такой способ маршрутизации:
NAT нам не подходит, поскольку каждая VDS должна быть доступна из сети напрямую.
Схема с мостами не очень надёжная, поскольку теоретически есть возможность «захвата» IP адреса чужой виртуальной машины.
Итак:
Данный участок конфигурации нужно указывать непосредственно в конфигурационном файле гостя, расположенного по адресу /etc/libvirt/qemu/debian_guest.xml. Редактировать лучше всего через:
$ virsh edit debian_guest
Тогда конфигурация обновится на лету, при условии, что машина не запущена. В противном случае нужно будет подождать, пока она остановится, и запустить ее снова.
Создадим необходимое нам виртуальное устройство.
Для начала нам нужно дать нашему пользователю возможность беспарольного обращения к системным командам. Для этого добавим в sudoers:
Cmnd_Alias QEMU = /sbin/ifconfig, /sbin/modprobe, /usr/sbin/brctl, /usr/sbin/tunctl, /sbin/sysctl, /bin/ip, /usr/bin/cgcreate, /usr/bin/cgdelete, /sbin/tc
username ALL=(ALL:ALL) NOPASSWD: QEMU
Включим возможность форвардинга и проксирования arp-запросов:
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv4.conf.all.proxy_arp=1
Также можно добавить эти параметры в /etc/sysctl.conf и применить их:
Создадим виртуальную сетевую карту и поднимем устройство:
Создадим маршрут на нужное нам устройство с нужного IP-адреса:
sudo ip route add 10.10.10.100 dev debian_guest
Теперь можно запустить VDS:
$ virsh start debian_guest
Подключившись к консоли, мы увидим, что сети нет, но у нас появилось устройство eth1, вместо eth0. Это произошло потому, что система при загрузке в /etc/udev/rules.d/70-persistent-net.rules прописывает mac-адрес сетевой карты, и если mac сменился, она создаёт ещё одну запись о сетевой карте, вроде этой:
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR
==»xx:xx:xx:xx:xx:xx», ATTRНужно удалить этот файл и перезагрузить VDS — после этого сетевая карта определится корректно.
Пропишем новые сетевые настройки в гостевой системе:
# ifconfig eth0 10.10.10.100 netmask 255.255.255.0
# route add default gw 10.10.10.10
10.10.10.10 — это IP-адрес хост-системы. Теперь мы сможем попинговать другие машины.
Добавим DNS-серверы в /etc/resolv.conf, и будет совсем замечательно:
К слову, замечу, что оказалось очень удобно называть сетевые устройства, принадлежащие VDS, также, как и сами VDS — отпадает необходимость искать, кому принадлежит устройство tap0 или vnet0, или как там ещё можно их обозвать.
Если понадобится выдать виртуальной машине ещё один IP-адрес, достаточно будет просто на хост-машине прописать ещё один маршрут:
# ip route add 10.10.10.101 dev debian_guest
А в гостевой системе создать алиас для сетевого устройства:
# ifconfig eth0:1 10.10.10.101
В следующей части
В следующей статье я расскажу о том, как создать образ VDS, что вообще меняется от системы к системе, и как эти параметры можно удобно менять.
Как я могу узнать имена хостов для всех машин на моей локальной сети?
Я захожу на машины в моей сети, используя hostname.local. Я забыл имя хоста для одной из машин. Есть ли команда, которую я могу выдать с одной машины, которая отправит запрос и отобразит все имена хостов для машин на моей локальной сети?
17 ответов
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через их веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через их веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через их веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через веб-сайт или через терминал:
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan. Их веб-сайт находится ниже, если вам нужна дополнительная информация:
Вы можете установить его в Центре программного обеспечения, выполнив поиск по «nbtscan» через их веб-сайт или через терминал:
nbtscan
Хорошим инструментом для сканирования всех имен хостов в сети является nbtscan.
Вы можете установить его в Центре программного обеспечения, выполнив поиск ‘nbtscan’ через их веб-сайт или через терминал:
Инструменты avahi
Также есть инструменты из пакета Avahi для отображения сервисов.
Инструменты Avahi
Также есть инструменты из пакета Avahi для получения списка услуг.
Инструменты Avahi
Также есть инструменты из пакета Avahi для получения списка услуг.
Инструменты Avahi
Также есть инструменты из пакета Avahi для перечисления сервисов.
Инструменты Avahi
Также есть инструменты из пакета Avahi для перечисления сервисов.
Инструменты Avahi
Также есть инструменты из пакета Avahi для перечисления сервисов.
Определение IP-адреса локальной исходной машины
Т.е., у меня есть компьютер, который принимает ip-адрес от DHCP сервера, так.
Я на этом компьютере запускаю свою прогу и мне нужно определить локальный ip-адрес это машины, так.
Как это сделать?
p.s.:
Да, ip-адрес у меня не составляет труда получить, но только в качестве списка всех интерфейсов подключения. В этом то списке и сидит мой локальный адрес, но дело в том, что порядок списка на других компах может быть совершенно другой и класс:
Как бы ещё сказать. Например, в *.AddressList ip компа «А1» сидит под индексом 3, а если попытаться запустить мою прогу на компе «А2» и попытаться определить локальный ip-адрес «А2», то в *.AddressList он будет под индексом 4.
То есть порядок постоянно меняется и это зависит от того, на каком компе я запускаю свою прогу.
Надеюсь, понятно объяснил.
Помогите пожалуйста разобраться или хотя бы направление покажите, и я сам буду копать 
Добавлено через 10 минут
Может есть какой-то системный каталог, в котором хранятся настройки сетевые и мне просто нужно его найти и прочитать?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
























