Книга: Сетевые средства Linux
Определение MAC-адреса клиента
Разделы на этой странице:
Определение MAC-адреса клиента
MAC-адрес используется для организации сетевого взаимодействия на самом низком уровне. При использовании сетевых карт Ethernet MAC-адрес состоит из шести байтов, значения которых обычно представляются шестнадцатеричными числами и разделяются двоеточиями, например 00:80:C8:FA:3B:0A. Каждый пакет, передаваемый устройством Ethernet по сети, содержит MAC-адрес этого устройства, поэтому программа dhcpd
имеет в своем распоряжении данные, идентифицирующие сетевую карту, а следовательно, и компьютер, в состав которого она входит. (Многие операционные системы содержат средства, позволяющие переопределять MAC-адреса, поэтому MAC-адрес не всегда однозначно идентифицирует устройство, однако в подавляющем большинстве случаев такой способ вполне применим.) В зависимости от типа сетевого оборудования, форматы MAC-адреса могут отличаться от формата, используемого Ethernet, но принцип применения таких адресов остается неизменным.
На заметку
Первые три байта MAC-адреса Ethernet содержат код производителя сетевой карты; остальные три байта устанавливает предприятие, выпускающее Ethernet-карты. Информацию о кодах производителей можно найти по адресу http://www.coffer.com/mac_find/
или http://www.cavebear.com/CaveBear/Ethernet/vendor.html
. Для настройки DHCP эти сведения не требуются, но вы можете воспользоваться ими, выясняя расположение компьютеров по широковещательным запросам клиентов DHCP. Заметьте, что производитель Ethernet-карты и производитель компьютера — это, как правило, разные компании.
Для того чтобы программа dhcpd
могла использовать MAC-адрес при назначении клиенту IP-адреса, надо в первую очередь выяснить MAC-адрес. В зависимости от используемых аппаратных средств и типа операционной системы, под управлением которой работает клиентский компьютер, это можно сделать различными способами. Некоторые производители снабжают свои сетевые платы наклейками с MAC-адресами. Даже если такая наклейка имеется на вашей плате, не всегда имеет смысл открывать компьютер только для того, чтобы узнать MAC-адрес Ethernet-карты. Существуют программные средства, позволяющие получить эту информацию.
Определение MAC-адреса с клиентской машины
При работе с Linux и другими подобными UNIX системами MAC-адрес можно определить с помощью команды ifconfig
. Задайте команду ifconfig eth0
(или укажите при вызове ifconfig
другое имя), и утилита ifconfig
выведет информацию об указанном сетевом интерфейсе. Отображаемые данные будут выглядеть приблизительно следующим образом:
eth0 Link encap:Ethernet HWaddr 00:80:C6:F9:3B:BA
MAC-адрес следует за ключевым словом HWaddr
; в данном случае это значение 00:80:C6:F9:3B:BA. Нужная информация будет получена только в том случае, если драйвер Ethernet загружен и интерфейс активен. При этом не имеет значения, связан ли интерфейс со стеком протоколов TCP/IP.
Используя Windows 2000, вы можете выяснить MAC-адрес посредством программы IPCONFIG
, которая работает подобно утилите ifconfig
системы Linux. Для получения исчерпывающей информации о сетевых интерфейсах, имеющихся в системе, надо задать команду IPCONFIG /ALL
. В составе отображаемых данных будет содержаться следующая строка:
Physical Address : 00-50-BF-19-7E-99
В Windows Me используется программа WINIPCFG
, выполняющая те же функции, что и IPCONFIG
, и предоставляющая графический пользовательский интерфейс. При запуске программы выводится окно, представленное на рис. 5.1, в котором MAC-адрес отображается в поле Adapter Address.
Рис. 5.1. WINIPCFG
предоставляет информацию о сетевых интерфейсах и позволяет управлять клиентом DHCP в системе Windows 9х/Me
Если клиент DHCP расположен на компьютере Macintosh и выполняется в системе MacOS Classic, вы найдете MAC-адрес в окне TCP/IP Control Panel. После щелчка на кнопке Info отобразится диалоговое окно TCP/IP Info, в котором выводится MAC-адрес. В MacOS X данная информация доступна в диалоговом окне Network, показанном на рис. 5.2.
Рис. 5.2. В системе MacOS X MAC-адрес отображается в диалоговом окне Network
Аналогичные средства, позволяющие определить MAC-адрес, имеются и в других операционных системах; для того чтобы использовать соответствующие команды, надо ознакомиться с описанием конкретной системы.
Определение MAC-адреса с сервера
MAC-адрес клиента также можно определить с помощью сервера DHCP. Для этого необходимо, чтобы средства поддержки стека протоколов на клиентском компьютере работали исправно. Сконфигурируйте клиент для работы с сервером DHCP так, чтобы после загрузки клиент получил от сервера динамический IP-адрес. Затем ознакомьтесь с содержимым файла аренды (обычно это файл /var/lib/dhcp/dhcpd.leases
). В нем вы найдете запись, которая выглядит приблизительно следующим образом:
lease 192.168.1.50 {
starts 4 2002/07/19 21:37:20;
ends 4 2002/07/19 23:17:20;
binding state active;
next binding state free;
hardware ethernet 00:50:56:82:01:03;
}
В приведенной записи указаны IP-адрес, выделенный клиенту, время начала и завершения аренды, а также прочая информация, в том числе MAC-адрес (hardware ethernet 00:50:56:82:01:03
). Чтобы использовать содержимое файла аренды для определения MAC-адреса, вы должны знать, какой IP-адрес выделен клиенту. Это можно определить по времени аренды либо обратиться за этими сведениями на клиентскую машину.
MAC-адреса могут также содержаться в файле протокола Linux (обычно это файл /var/log/messages
). Последнюю запись, содержащую имя dhcpd
, можно найти с помощью следующей команды:
# grep dhcpd /var/log/messages | tail -n 1
Jul 19 18:27:38 speaker dhcpd: DHCPACK on 192.168.1.50 to
00:50:56:82:01:03 via eth0
Эту команду можно выполнить сразу после того, как сервер DHCP выделит IP-адрес клиенту. Если вы не знаете IP-адреса, присвоенного клиенту, вы рискуете ошибочно определить MAC-адрес. Так может случиться, если после запроса интересующего вас компьютера какой-то клиентов обратится к серверу DHCP для того, чтобы продлить аренду. Зная IP-адрес, проверьте запись в файле протокола. Если адрес не совпадает, просмотрите другие записи, задавая значения опции -n
программы tail
, отличные от 1.
И, наконец, независимо от того, использует ли клиент статический IP-адрес или получил адрес от сервера DHCP, вы можете определить MAC-адрес с помощью команды arp
. Вызовите команду arp
на любом Linux-компьютере вашей сети, указав в качестве параметра IP-адрес клиента.
# arp 192.168.1.50
Address HWtype HWaddress Flags Mask Iface
192.168.1.50 ether 00:50:56:82:01:03 C eth0
Не исключено, что перед вызовом arp
вам придется инициировать обмен данными с клиентом. Используйте для передачи пакета программу ping
. Соответствующая команда выглядит следующим образом:
ping -с 192.168.1.50
- Аватар идеального клиента
- 1.2. Определение количества информации. Единицы измерения количества информации
- Определение версии клиента
- Определение пользовательского формата числовых данных
- Определение целей. Построение цепочек
- Снятие ответственности с клиента
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- Chapter 7. The state machine
- Example NAT machine in theory
- 4. Стадии бизнес-процесса взаимодействия с клиентами
- What is needed to build a NAT machine
- Placement of NAT machines