使用网桥查找虚拟机或容器的IP地址

我有一个虚拟机/ LXC容器使用一个网桥(在br0上)来访问networking。

在承载虚拟机和网桥的系统上,我希望能够告诉分配了哪个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接口创build的虚拟接口。

我来到这里寻找同样问题的答案。 在阅读Fox的回答后,我发现了arp表pipe理命令(现在已经过时)。 试试ip neigh这和arp是一样的。 这将显示通过DHCP从共享相同链接的主机(虚拟网桥)传播的VM IP地址。

没有考虑DHCP日志…或捕获数据包和过滤DHCP数据包…你将会运气不佳。 主机不关心分配给它所托pipe的虚拟机的IP地址。 网桥只需要从网桥中的一个接口接收所有数据,并将其广播到网桥中的所有其他接口。 主机本身不知道数据如何被网桥中的其他设备处理。

您可能可以使用ARP守护进程(即。arpd )来监视网桥接口。 只要你知道虚拟机的MAC地址,就可以从它的数据库中得到它。 MAC可以在brctl showmacs br0find。