У моїй домашній мережі є кілька комп’ютерів Macs та доступ до однієї з них ззовні. Як я можу зрозуміти, що таке IP-адреса інших машин?
У моїй домашній мережі є кілька комп’ютерів Macs та доступ до однієї з них ззовні. Як я можу зрозуміти, що таке IP-адреса інших машин?
Відповіді:
Спробуйте arp -a
переглянути поточну таблицю арп на вашому комп’ютері. Він відображатиме лише ті IP-адреси, з якими взаємодіє ваш комп’ютер. Виведіть такий вихід (приховано трохи, щоб приховати MAC адреси в моїй мережі):
$ arp -a
? (10.1.168.1) at xx:xx:9e:82:ab:f6 on en1 ifscope [ethernet]
? (10.1.168.16) at xx:xx:29:d3:17:8 on en1 ifscope [ethernet]
? (10.1.168.115) at xx:xx:2:4f:76:14 on en1 ifscope [ethernet]
? (10.1.168.131) at xx:xx:6b:d0:36:a5 on en1 ifscope [ethernet]
? (10.1.168.134) at (incomplete) on en1 ifscope [ethernet]
? (10.1.168.137) at xx:xx:65:46:cd:b8 on en1 ifscope [ethernet]
? (10.1.168.255) at ff:ff:ff:ff:ff:ff on en1 ifscope [ethernet]
? (192.168.4.255) at ff:ff:ff:ff:ff:ff on vmnet8 ifscope [ethernet]
? (192.168.110.255) at (incomplete) on vmnet1 ifscope [ethernet]
Якщо у вас немає додаткової інформації, на якому комп'ютері знаходиться, ви можете отримати трохи більше інформації, визначивши виробників мережевих карт за допомогою пошуку MAC-адреси .
arp -a
відображатимуться лише ті IP-адреси, з якими взаємодіє ваш комп'ютер". ? Чи повинен я спочатку пінг-трансляцію (192.168.110.255) і отримати відповідь від кожного пристрою, а потім використовувати arp, щоб отримати повний список, оскільки я щойно взаємодіяв / пінгував весь пристрій?
Якщо припустити, що всі інші машини перебувають у тому ж домені широкомовної передачі, що і той, до якого у вас є доступ, пінгінг широкомовної адреси часто буде достатньою. Він не знайде сплячих машин, ні тих, які налаштовані не відповідати на пінг, ні тих, які будуть відповідати на пінг, але не транслювати пінг.
% ifconfig -a | grep broadcast
inet 192.168.1.241 netmask 0xffffff00 broadcast 192.168.1.255
% ping -i 5 -c 2 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.241: icmp_seq=0 ttl=64 time=0.393 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=2.511 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=5.810 ms (DUP!)
64 bytes from 192.168.1.255: icmp_seq=0 ttl=64 time=7.886 ms (DUP!)
64 bytes from 192.168.1.241: icmp_seq=1 ttl=64 time=0.312 ms
--- 192.168.1.255 ping statistics ---
2 packets transmitted, 2 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.312/3.382/7.886/3.010 ms
Перша і остання відповідь майже завжди буде вашою локальною машиною. Ці (DUP!)
відповіді від інших машин (хоча цей приклад показує яку - то машину надає самого широковещательного адреса, яка не дуже корисно).
Ви також можете спробувати адресу трансляції всіх:
% ping -i 5 -c 2 255.255.255.255
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.392 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=3.053 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=8.685 ms (DUP!)
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.319 ms
--- 255.255.255.255 ping statistics ---
2 packets transmitted, 2 packets received, +2 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.319/3.112/8.685/3.401 ms
Цей приклад показує менше грубості. Усі (DUP!)
інші машини є іншими машинами, і локальну машину легко ідентифікувати як 127.0.0.1.
Усі ваші Macs мають імена хостів, тому вам не потрібно знати IP-адреси. Натомість ви просто використовуватимете ім'я хоста.
Імена хостів засновані на тому, яке ім’я ви дали комп'ютеру. Отже, якщо комп’ютер названий "Макет Джона", ім'я хоста, яке ви будете використовувати, є чимось на зразок "jons-mac.local".
$ ssh jons-mac.local
Якщо ви ще не знаєте імен хостів своїх комп’ютерів, то ви можете дізнатися імена хостів комп'ютера в налаштуваннях спільного використання на цьому комп'ютері, або ви можете дізнатися імена хостів інших комп'ютерів у мережі за допомогою команди dns-sd. Ця команда використовує Bonjour для перегляду мережевих послуг; ви знайдете лише комп’ютери, які насправді рекламують певну мережеву послугу (яка, за великим рахунком, є єдиною, що вас цікавить).
Якщо ви хочете підключитися до якогось комп’ютера, що надає ssh, ви можете знайти доступні комп'ютери за допомогою:
dns-sd -B _ssh._tcp .
Загалом ви можете шукати хостів, які надають певні послуги, використовуючи назви служб: http://www.dns-sd.org/ServiceTypes.html
Протокол Bonjour також надає можливість перегляду всіх сервісів, а не лише окремих. Це можна зробити, переглянувши спеціальну службу_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
Питання полягає у пошуку інших комп’ютерів у мережі з командного рядка, але ви також можете переглядати рекламні послуги dns-sd у графічному інтерфейсі. Наприклад, Terminal.app> New Remote Connection ... відкриває вікно, де відображаються рекламовані послуги ssh, sftp, ftp та telnet.
dns-sd -B _ssh._tcp .
?
Ви можете спробувати використовувати dns-sd
для виконання запитів Bonjour в локальній мережі.
dns-sd -B _ssh._tcp .
Можливо, це трохи надмірності, але ви можете використовувати nmap
Швидкий CLI один вкладиш, щоб перейти через / 24 підмережі, пінг кожної IP-адреси. Швидкий і вид брудний, але це працює.
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
Пояснення: Щоб змінити діапазон, змініть x = 1 на x = 130, або все, що ви хочете починати, і 254 до кінця, скажімо, 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 - це надіслати три пінгви. Щоб змінити кількість пінгів, змініть 3 на щось інше, а щоб змінити діапазон адрес, змініть 192.168.0 на щось інше.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
Якщо ви знаєте ім'я інших комп’ютерів у локальній мережі, найпростіший спосіб - це відстежувати їх:
$ ping foobar
Pinging foobar.lan [192.168.0.25] with 32 bytes of data:
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
Це може залежати від вашого локального маршрутизатора або сервера DHCP. Якщо оголене ім’я хоста не працює, спробуйте додати .local (тобто, ping hostname.local ).
Очевидно, що це не добре працює для великих локальних мереж або людей із поганою пам’яттю.
Якщо ви використовуєте Macs (припускаючи 10.5 або більше), просто увімкніть VNC для доступу до робочого столу та використовуйте Flame.app.
Це дійсно приємна маленька утиліта, яка дає вам саме те, що вам потрібно, дуже швидко. Єдине, що вам доведеться йти далі, ніж SSH.
Для Windows:
1) Напишіть: для / L% I в (1,1254) DO ping -w 30 -n 1 168,29,0.% I Це буде перенаправляти всі адреси у вашій локальній мережі
2) Потім напишіть: arp -a Це дасть вам усі адреси, які відповіли