V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sherlock1122
V2EX  ›  程序员

如何找到 LAN 范围内的虚拟机 IP 对应 物理机的 IP

  •  
  •   sherlock1122 · 2021-03-19 11:57:42 +08:00 · 2651 次点击
    这是一个创建于 1343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    局域网虚拟机( 1000+)和物理机器( 100+)特别多,都是桥接模式,也就是虚拟机和物理机在一个子网内。
    现在某些 VM 中毒了,知道 VM 的 ip,有办法找到对应的物理机吗?
    29 条回复    2021-03-23 04:19:08 +08:00
    crab
        1
    crab  
       2021-03-19 12:13:07 +08:00
    MAC 地址不知道能不能?
    learningman
        2
    learningman  
       2021-03-19 12:16:44 +08:00 via Android
    虚拟机多一跳吧,观察一下这个?
    ouqihang
        3
    ouqihang  
       2021-03-19 12:29:02 +08:00 via Android
    虚拟机的 mac 应该有规律。
    Tumblr
        4
    Tumblr  
       2021-03-19 12:35:12 +08:00
    找一下你们的管理员。。。
    这种规模的,哪些虚拟机 host 在哪些主机上,应该是有规划有记录的。

    一般划分子网的时候会用 24 位的掩码,你这应该起码用了 4 个 24 位了。
    (如果直接用 10.0.0.0/8,那当上面的没说)
    sherlock1122
        5
    sherlock1122  
    OP
       2021-03-19 12:42:55 +08:00
    @Tumblr 没有规划,我也算半个管理员吧。所有的 ip 都是 192.168.0.0/16 网段的。
    sherlock1122
        6
    sherlock1122  
    OP
       2021-03-19 12:43:20 +08:00
    @learningman 桥接不会多一跳。
    anubu
        7
    anubu  
       2021-03-19 12:53:40 +08:00
    可以试试通过 mac 地址匹配,假设简单场景,交换机连接所有物理机,那么物理机的 mac 和其上的虚拟机 mac 应该会通过同一个物理端口学习到,这个可以在交换机上做一个简单的归类。
    killeder
        8
    killeder  
       2021-03-19 12:54:53 +08:00
    拔网线
    mmtromsb456
        9
    mmtromsb456  
       2021-03-19 12:56:48 +08:00 via iPhone
    先用 arp 查询出 IP 对应的 mac 地址,再去交换机的 MFT 里面查询该 mac 的转发端口,这个转发端口就是物理机的接入端口
    mmtromsb456
        10
    mmtromsb456  
       2021-03-19 12:57:57 +08:00 via iPhone
    或者如果物理机是 Linux 的话用 brctl 可以 show 出来 port 的 mac 地址,过滤一下即可
    tankren
        11
    tankren  
       2021-03-19 13:24:56 +08:00
    gesse
        12
    gesse  
       2021-03-19 13:28:56 +08:00
    @mmtromsb456
    我觉得这个靠谱, 还是从交换机端口入手, 但是万一机房的线是这样的呢?

    systemcall
        13
    systemcall  
       2021-03-19 13:36:56 +08:00
    管理 VM 的软件不能够看到虚拟机和实机的 MAC 地址吗?
    查 MAC 地址,就可以找到电脑了
    mingl0280
        14
    mingl0280  
       2021-03-19 13:41:23 +08:00 via Android
    vm host 可以查虚机 mac 地址的啊,你直接打个列表出来就知道了。例如 virtual box 跟 vmware ESXi 就可以用命令行直接批量打印出虚机 mac 地址。
    dhcp 服务器一定记录了 mac 的,mac 再一匹配就行了。
    smallfount
        15
    smallfount  
       2021-03-19 13:43:48 +08:00
    在交换层面,知道虚拟机 IP 就会知道 MAC 地址。。
    在知道 MAC 地址的时候就可以知道知道在同一个物理端口上连接的所有的 MAC 地址。。。
    顺手就等于所有这个物理机上跑的 IP 都知道了。。。

    但是问题有时候是...
    1. 不同的链路聚合形态可能会有不同的情况
    2. 有些物理机的管理 IP 是走专门的管理口不跟虚拟机一个物理链接

    所以理论上最简单的还是 vCenter 里去找到那台机器就知道飘在哪里了。。。
    des
        16
    des  
       2021-03-19 13:44:55 +08:00 via iPhone
    一千多虚拟机,不会是工作室吧?
    Tumblr
        17
    Tumblr  
       2021-03-19 14:02:33 +08:00
    @sherlock1122 #5 这。。。有点出乎我的预料了。。。 不知道你们是什么环境,难提供有效建议。
    v2020
        18
    v2020  
       2021-03-19 14:34:39 +08:00
    检索 Virtual Machines 目录下 vmware.txt 的日志里面有 IP
    deorth
        19
    deorth  
       2021-03-19 14:37:16 +08:00
    桥接的话,不能
    killva4624
        20
    killva4624  
       2021-03-19 17:53:31 +08:00
    通过 ARP 一层层查交换机上 MAC 地址和端口对应关系最靠谱。
    yujiang
        21
    yujiang  
       2021-03-19 20:50:00 +08:00 via Android
    与其等 6 个小时的答案,不如现在开始一个一个拔网线排查
    msg7086
        22
    msg7086  
       2021-03-20 09:05:59 +08:00
    桥接只能找物理端口。
    当然要省事的话直接拔线测试就行。
    mmtromsb456
        23
    mmtromsb456  
       2021-03-20 10:49:46 +08:00 via iPhone
    @gesse 只是找单个端口有个好办法,就是用 lldp 这种发现协议来找对端,Linux 上开 lldptool 可以找到很多关于端口的描述,但是这种情况要整理出那条网线就困难了(
    shequ2046
        24
    shequ2046  
       2021-03-21 11:53:32 +08:00
    @gesse 哈哈,还是太业余了,线理的再好也没用,只要没有标签就 GG 了。
    neowong2005
        25
    neowong2005  
       2021-03-22 09:08:28 +08:00 via Android
    虚拟机 IP 有规律,先排除虚拟机 Mac,剩下的都是物理机
    sherlock1122
        26
    sherlock1122  
    OP
       2021-03-22 19:01:20 +08:00
    @des 做私有云的,有很多虚拟化集群,以及测试集群,部分集群加入了类似 vCenter 类似的集群管理,其他的没有,乱的很。
    任何人都可以随便创建一个 VM,每个 VM 都可以桥接访问互联网。
    目前整个局域网中毒了,原因就是某个大厂搬来两台测试物理机机器,接入了局域网,然后疯狂的传播病毒,主要是挖矿。
    导致整个网络(北京,上海,深圳)大局域网互访延迟特别大,ssh 被攻击,CPU 狂飙。
    真是太可怕了。
    目前没有什么好办法,找到了各种中毒的 IP,但是在公司群里群发,让人去认领自己的机器,目前收效胜微。
    sherlock1122
        27
    sherlock1122  
    OP
       2021-03-22 19:02:16 +08:00
    @gesse 比这个好点,但是也不好搞,地方分布在多个地方。
    sherlock1122
        28
    sherlock1122  
    OP
       2021-03-22 19:03:25 +08:00
    @mingl0280 虚拟机的 mac 地址好拿,如何从 虚拟机的 mac 地址找到物理机的 mac 地址呢?
    mingl0280
        29
    mingl0280  
       2021-03-23 04:19:08 +08:00 via Android
    @sherlock1122 你拿虚机物理地址的时候是从物理机( host )上拿的啊,我为啥还要多此一举倒着找地址?你拿到的时候顺便记录下我这个虚机的 mac 是哪个物理机 mac 不就完了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.