Вопрос или проблема
У меня есть множество серверов, загруженных на Debian 12, подключенных к общему коммутатору. Все, что я знаю, это их BMC MAC-адреса и пароли BMC для каждого устройства (все они не от одного производителя).
Существует ли стандартный способ узнать все IP-адреса Ether интерфейсов, соответствующих MAC-адресам BMC (устройству)? Существует ли команда Ipmitool для получения IP-адресов всех сетевых интерфейсов?
Подсказка:
- У меня есть IP-адрес одного из этих устройств, и я могу зайти в него по SSH (это мой DHCP-сервер).
- На указанной выше машине я могу запустить arp-scan и получить все IP-адреса других машин, которые подключены к тому же коммутатору, но как я могу понять, какой IP принадлежит какому соответствующему MAC-адресу BMC.
Существует несколько возможных решений вашей проблемы.
- Вы можете прочитать файл конфигурации и файл аренды DHCP-сервера и найти соответствия IP <-> MAC-адресов оттуда.
Например, с DHCP-сервером ISC вы найдете любые постоянные IP-адреса, назначенные через DHCP, в конфигурационном файле DHCP /etc/dhcp/dhcpd.conf
:
host bmcname {
hardware ethernet 12:34:56:78:90:ab;
fixed-address 192.168.12.34;
...
А любые непостоянные назначения можно найти в файле аренды DHCP /var/lib/dhcp/dhcpd.leases
:
lease 192.168.12.48 {
starts 5 2024/09/27 05:22:47;
ends 5 2024/09/27 13:22:47;
cltt 5 2024/09/27 05:22:47;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 23:45:67:89:0a:bc;
...
- После выполнения
arp-scan
вы можете пинговать IP-адрес (или сделать что-то еще, что вызовет отправку трафика), с любой системы в том же сетевом сегменте, затем, если целевой IP-адрес отвечает на пинг, вы сразу выполнитеarp -a
, чтобы просмотреть локальную таблицу ARP.
$ ping -c 1 192.168.12.34 >/dev/null # просто для создания трафика
$ /sbin/arp -a | grep 192.168.12.34
bmc.server.name (192.168.12.34) at 12:34:56:78:90:ab [ether] on eno1
- Вы можете установить пакет
ipmiutil
, выполнитьipmiutil discover
и получить список всех IP-адресов, отвечающих на запросы IPMI (т.е. интерфейсы BMC) вместе с их задаными именами хостов BMC.
Пример с одним BMC:
$ ipmiutil discover
idiscover ver 1.11
Discovering IPMI Devices:
01| response from | 192.168.12.34 | bmc.server.name
idiscover: 1 pings sent, 1 responses
ipmiutil discover, completed successfully
Ответ или решение
Чтобы получить IP-адреса всех сетевых интерфейсов, используя BMC/IPMI, есть несколько возможных решений, которые вы можете рассмотреть. Ваша ситуация с серверами, работающими под управлением Debian 12, и доступом к MAC-адресам BMC с помощью паролей может быть решена следующим образом.
1. Использование DHCP-сервера
Если вы имеете доступ к DHCP-серверу, который назначает IP-адреса вашим серверам, вы можете просмотреть конфигурационные файлы. Для сервера DHCP ISC вы можете проверить:
-
Конфигурационный файл:
/etc/dhcp/dhcpd.conf
— в этом файле будут указаны статические назначения IP-адресов к MAC-адресам.host bmcname { hardware ethernet 12:34:56:78:90:ab; fixed-address 192.168.12.34; }
-
Файл аренд:
/var/lib/dhcp/dhcpd.leases
— здесь перечислены активные IP-адреса, выданные DHCP.lease 192.168.12.48 { starts 5 2024/09/27 05:22:47; ends 5 2024/09/27 13:22:47; hardware ethernet 23:45:67:89:0a:bc; }
2. Использование arp-scan и arp
Запустите arp-scan
для сканирования всех устройств в вашей сети. Например:
sudo arp-scan --localnet
После этого вы можете выполнить ping любого IP-адреса, чтобы инициировать трафик на этом адресе, а затем использовать команду arp
для проверки ARP-таблицы:
ping -c 1 192.168.12.34 >/dev/null
arp -a | grep 192.168.12.34
Это позволит вам получить MAC-адрес, связанный с IP-адресом.
3. Использование ipmiutil
Установите пакет ipmiutil
и выполните команду ipmiutil discover
. Это поможет вам обнаружить все IPMI-устройства в сети и отобразить их IP-адреса наряду с настроенными BMC-именами:
sudo ipmiutil discover
Пример вывода:
Discovering IPMI Devices:
01| response from | 192.168.12.34 | bmc.server.name
Это позволит вам легко идентифицировать IP-адреса BMC для различных серверов.
Заключение
Каждый из предложенных методов позволит вам получить IP-адреса интерфейсов сетевых карт на ваших серверах. Выбор метода будет зависеть от вашего уровня доступа и предпочтений. Если у вас есть доступ к DHCP-серверу, это может быть наиболее прямой способ. В противном случае, использование arp-scan
вместе с arp
или ipmiutil
может быть очень эффективным.