Назад | Перейти на главную страницу

Найдите IP-адрес виртуальной машины или контейнера с помощью моста

У меня есть виртуальная машина / контейнер LXC, который использует мост (на br0) для доступа к сети.

В системе, в которой размещена виртуальная машина и мост, я хотел бы иметь возможность узнать, какой IP-адрес был назначен (dhcp).

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

Когда я использую ifconfig в хост-системе, я получаю следующее:

br0       Link encap:Ethernet  HWaddr 08:00:27:28:05:9e  
          inet addr:192.168.42.216  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe28:59e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1652 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2577 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:174997 (174.9 KB)  TX bytes:256212 (256.2 KB)

eth0      Link encap:Ethernet  HWaddr 08:00:27:28:05:9e  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1729 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2580 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:206750 (206.7 KB)  TX bytes:256022 (256.0 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:758585 (758.5 KB)  TX bytes:758585 (758.5 KB)

vethUcRl21 Link encap:Ethernet  HWaddr 92:70:c3:64:6c:bc  
          inet6 addr: fe80::9070:c3ff:fe64:6cbc/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:546 (546.0 B)  TX bytes:3280 (3.2 KB)

vethUcRl21 - это созданный виртуальный интерфейс, использующий интерфейс br0.

Я пришел сюда в поисках решения той же проблемы. Прочитав ответ Фокса, я обнаружил arp команда управления таблицами (устарела). Пытаться ip neigh это то же самое, что arp. Это покажет вам, что IP-адрес виртуальной машины распространяется через DHCP с хоста, использующего тот же канал (виртуальный мост).

Если не смотреть журналы DHCP ... или перехватывать и фильтровать пакеты DHCP ... вам не повезет. Хосту все равно, какой IP-адрес назначен виртуальным машинам, которые он размещает. Мост просто берет все данные с одного интерфейса в мосте и передает их всем остальным интерфейсам моста. Сам хост ничего не знает о том, как данные обрабатываются другими устройствами в мосте.

Вероятно, вы могли бы использовать демон ARP (т.е. arpd) для мониторинга интерфейса моста. Если вам известен MAC-адрес виртуальной машины, вы можете получить его из ее базы данных. И MAC вы можете найти в brctl showmacs br0.