Обнаружение статического IP-адреса подключенного кабеля Ethernet.

Для записи:

Для внешнего USB-диска, который обычно не подключается при запуске, у меня есть запись fstab

/dev/disk/by-label/data /data   xfs noauto,user,noatime 0   0

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

~$ mount /data
mount: special device /dev/disk/by-label/data does not exist
~$ 

. Если я изменяю строку в fstab на

/dev/disk/by-label/data /data   xfs noauto,nofail,user,noatime  0   0

, сообщение об ошибке не появляется, даже если диск недоступен:

~$ mount /data
~$ 

Система: Ubuntu 16.04 с systemd.

1
27.05.2016, 18:31
3 ответа

Вы можете использовать arp-scan:

$ arp-scan --interface=eth0 192.168.0.0/24

или nmap:

$ nmap -sP 192.168.0.0/24

для сканирования всех адресов в сети на наличие ответа.

Проблема в том, предполагаете ли вы, что каждый компьютер, к которому подключается ваш Pi, находится в сети 192.168.0.0/24, как показано в примерах выше, или нет?

Если да, то сканирование не займет много времени - 3,56 секунды с nmap и 2,28 секунды с arp-scan в моей сети WiFi.

Вы предполагаете, что все находятся на полном 192.168.0.0/16, как указано в RFC 1918, что занимает около 4.5 минут с arp-scan?

При той же скорости сканирования, сканирование 10.0.0.0/8 займет почти 18 часов.

Но если вы сканируете все 4 294 967 296 возможных IP-адресов, это может занять более полугода!

Затем, конечно, мы предполагаем, что у него есть IPv4-адрес. Он может быть на IPv6, что составляет 2 420 352 024 года!

Если вы сканируете что-то большее, чем 192.168.0.0/24, вы можете подключить клавиатуру :-)

1
27.01.2020, 23:35

Я не хочу лезть в рот, но не думаю, что то, что вы пытаетесь сделать, возможно с любой случайной машиной, которую вы подключит этот Pi к.

Подумайте об этом. Проблема двоякая. Во время загрузки ваш R-Pi имеет фиксированный адрес. Верно ? Если машина, к которой вы подключаетесь, не настроена с этим IP-адресом / маской подсети, как они будут общаться и обмениваться информацией? Когда у вас есть собственный ноутбук, вы находитесь в контролируемой среде. Если вы подключаетесь к случайной машине, вы должны ожидать неожиданного, а затем как вы собираетесь с этим справиться? Вы можете запустить программу для сканирования всех возможных IP-адресов, начиная с обычных подозреваемых, таких как 192.168.xy или 172.10.xy, но это очень долгий и утомительный процесс

Во-вторых, если машина, к которой вы подключаете R -Pi to находится в другой сети, скажем, через Wi-Fi или другой сетевой адаптер, все готово.

Вы должны понимать, что это не ваш R-Pi управляет соединением. Это другая сторона. А когда "другая сторона" случайна, что вы собираетесь делать?

1
27.01.2020, 23:35

Если вы подключите ваш r-pi к сети с разумным количеством трафика, вы сможете отслеживать ARP-трафик на интерфейсе.

Это похоже на ответ @garethTheRed, но опирается на пассивный мониторинг, а не на активное зондирование. Может пройти значительное количество времени, прежде чем будет замечен ARP-пакет. Запуск ping или чего-то подобного с машины, с которой вы хотите подключиться, поможет.

Вы можете использовать tcpdump -l -n -i eth0 arp, чтобы прослушать eth0 на предмет ARP-пакетов. Когда ваш скрипт обнаружит ARP who-has или ARP Reply пакет, извлеките IP адрес, выберите случайный IP в той же подсети, которого еще нет в ARP таблице, и попробуйте использовать его.

Альтернативно, вместо tcpdump, вы можете запускать arp -n -i eth0 | awk 'NR>1 && !/incomplete/ {print $1}' каждый раз, чтобы вывести список видимых IP-адресов из ARP-таблицы ядра.

WARNING: Тот факт, что вы не видели, как IP используется в сети во время просмотра не означает, что он не используется или не выделен другой машине. Это может означать, что он просто не был активен в сети в последнее время, или что вы находитесь в коммутируемой сети, и он не посылал широковещательных пакетов. Ожидайте, что на вас накричат, если вы перехватите IP-адрес, принадлежащий кому-то другому в сети. Могут быть и другие последствия в зависимости от побочных эффектов перехвата IP-адреса (например, перехват IP-адреса, принадлежащего серверу или маршрутизатору, или ноутбуку босса может стать преступлением, за которое можно уволить)


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

  1. установите статический IP-адрес на вашем r-PI. Использовать частный IP-адрес RFC-1918. Используйте одну и ту же подсеть для всех компьютеров в вашей локальной сети. Выберите ту, которая вряд ли будет использоваться на других сайтах (т.е. НЕ одну из часто используемых по умолчанию, например 192.168.0.x).

  2. если вам нужно связаться с вашим r-PI с другой машины, просто добавьте второй IP-адрес в вашей подсети к интерфейсу ethernet этой машины, если он еще не находится в той же подсети.

Примечание: сетевые коммутаторы иногда настроены на отбрасывание пакетов из неизвестных подсетей. В этом случае лучшим вариантом будет просто сдаться и заставить ваш r-PI быть клиентом DHCP (не запускайте dhcp сервер на вашем r-PI, а затем подключите его к сети, которой вы не владеете/не контролируете или в которой работает другой dhcp-сервер).

0
27.01.2020, 23:35

Теги

Похожие вопросы