【问题标题】:How to detect Azure/Amazon VM如何检测 Azure/Amazon VM
【发布时间】:2012-07-19 23:49:20
【问题描述】:

一般来说,有什么方法可以检测您的代码是否在 Azure 或 Amazon 虚拟机上执行。我不是特别指某种网络或工作者角色,我的意思是给定任何可执行文件,是否有任何东西可以将该机器解析为云 VM - 例如在 Azure 下没有域,所以我不能简单地依赖域名.

【问题讨论】:

    标签: azure amazon virtual-machine


    【解决方案1】:

    AWS

    如果您的访客已联网,那么您可以通过访问 http://169.254.169.254 来探测实例元数据

    例如:

    $ curl http://169.254.169.254/1.0/meta-data/instance-id
    i-87dc2f76
    

    但是,访问网络是相当重的。

    在 AWS 上,您还可以通过查看 dmidecode 来检查:

    $ /usr/sbin/dmidecode -s bios-version | tr "[:upper:]" "[:lower:]" | grep -q "amazon"
    

    dmidecode 是轻量级的,因为它只占用客户操作系统的内存。但是,正如之前的答案所指出的,这取决于亚马逊是否继续在其版本字符串中包含“amazon”一词。

    天蓝色

    在 Azure 上,您可以检测管理程序详细信息,但这不允许您区分 Azure 和 HyperV。根据您的情况,这可能不是必需的。

    要使用 dmidecode 检测 Azure/HyperV,请检查以下字符串:

    $ /usr/sbin/dmidecode -s system-manufacturer | tr "[:upper:]" "[:lower:]" | grep -q "microsoft corporation"
    
    $ /usr/sbin/dmidecode -s system-product-name | tr "[:upper:]" "[:lower:]" | grep -q "virtual machine"
    

    【讨论】:

    • 我会赞成这个答案,即使它不完整。 HyperV 在 /sys/devices/virtual/dmi/id/*_version 文件中提供了许多指针,其中包括“Hyper-V UEFI Release v1.0”等字符串
    • 好像还有 /sys/devices/platform/HYPER_V_GEN_COUN:00 文件夹
    • @AttilaKis 你知道我们如何区分运行 Azure 和 HyperV 的虚拟机吗?
    • 你不能我已经尝试了很多方法(我几乎用 find 和 grep 查找了所有系统文件)但目前没有解决方案。
    【解决方案2】:

    您可以查看机器的 IP 地址,并确定它是否在特定云的 IP 地址块中。

    对于 Azure,每个子区域的 IP 地址范围的发布列表是一个 xml 文件,位于:

    http://download.microsoft.com/download/E/F/C/EFC5E4D8-E4EA-4EFE-9356-D8AEEBC85F50/Azure_IP_Ranges.xml

    亚马逊将在添加新范围时发布博客条目。他们目前是:

    美国东部(弗吉尼亚北部):

    • 72.44.32.0/19 (72.44.32.0 - 72.44.63.255)
    • 67.202.0.0/18 (67.202.0.0 - 67.202.63.255)
    • 75.101.128.0/17 (75.101.128.0 - 75.101.255.255)
    • 174.129.0.0/16 (174.129.0.0 - 174.129.255.255)
    • 204.236.192.0/18 (204.236.192.0 - 204.236.255.255)
    • 184.73.0.0/16 (184.73.0.0 – 184.73.255.255)
    • 184.72.128.0/17 (184.72.128.0 - 184.72.255.255)
    • 184.72.64.0/18 (184.72.64.0 - 184.72.127.255)
    • 50.16.0.0/15 (50.16.0.0 - 50.17.255.255)
    • 50.19.0.0/16 (50.19.0.0 - 50.19.255.255)
    • 107.20.0.0/14 (107.20.0.0 - 107.23.255.255)
    • 23.20.0.0/14 (23.20.0.0 – 23.23.255.255)
    • 54.242.0.0/15 (54.242.0.0 – 54.243.255.255)
    • 54.234.0.0/15 (54.234.0.0 – 54.235.255.255) 新
    • 54.236.0.0/15 (54.236.0.0 – 54.237.255.255) 新

    美国西部(俄勒冈):

    • 50.112.0.0/16 (50.112.0.0 - 50.112.255.255)
    • 54.245.0.0/16 (54.245.0.0 – 54.245.255.255)

    美国西部(北加利福尼亚):

    • 204.236.128.0/18 (204.236.128.0 - 204.236.191.255)
    • 184.72.0.0/18 (184.72.0.0 – 184.72.63.255)
    • 50.18.0.0/16 (50.18.0.0 - 50.18.255.255)
    • 184.169.128.0/17 (184.169.128.0 - 184.169.255.255)
    • 54.241.0.0/16 (54.241.0.0 – 54.241.255.255)

    欧盟(爱尔兰):

    • 79.125.0.0/17 (79.125.0.0 - 79.125.127.255)
    • 46.51.128.0/18 (46.51.128.0 - 46.51.191.255)
    • 46.51.192.0/20 (46.51.192.0 - 46.51.207.255)
    • 46.137.0.0/17 (46.137.0.0 - 46.137.127.255)
    • 46.137.128.0/18 (46.137.128.0 - 46.137.191.255)
    • 176.34.128.0/17 (176.34.128.0 - 176.34.255.255)
    • 176.34.64.0/18 (176.34.64.0 – 176.34.127.255)
    • 54.247.0.0/16 (54.247.0.0 – 54.247.255.255)
    • 54.246.0.0/16 (54.246.0.0 – 54.246.255.255) 新

    亚太地区(新加坡)

    • 175.41.128.0/18 (175.41.128.0 - 175.41.191.255)
    • 122.248.192.0/18 (122.248.192.0 - 122.248.255.255)
    • 46.137.192.0/18 (46.137.192.0 - 46.137.255.255)
    • 46.51.216.0/21 (46.51.216.0 - 46.51.223.255)
    • 54.251.0.0/16 (54.251.0.0 – 54.251.255.255)

    亚太地区(东京)

    • 175.41.192.0/18 (175.41.192.0 - 175.41.255.255)
    • 46.51.224.0/19 (46.51.224.0 - 46.51.255.255)
    • 176.32.64.0/19 (176.32.64.0 - 176.32.95.255)
    • 103.4.8.0/21 (103.4.8.0 - 103.4.15.255)
    • 176.34.0.0/18 (176.34.0.0 - 176.34.63.255)
    • 54.248.0.0/15 (54.248.0.0 - 54.249.255.255)

    南美洲(圣保罗)

    • 177.71.128.0/17 (177.71.128.0 - 177.71.255.255)
    • 54.232.0.0/16 (54.232.0.0 – 54.232.255.255) 新

    【讨论】:

    • 现在似乎是一个断开的链接
    【解决方案3】:

    这是检查您的机器实例是否在亚马逊的内部方法:

    dmidecode | grep Version
    version: 4.2.amazon     <--- This is what you would want to key on
    

    这只有在亚马逊在其 VM 的虚拟 BIOS 设置中保留其签名时才有效。我没有使用过 Azure,但我相信您也可以使用 dmidecode 推断信息。我已经用 VMware 和 VirtualBox 做到了。

    【讨论】:

      【解决方案4】:

      @Dan 的答案不再适用于 Azure,请使用以下 URL 获取更好的列表

      http://msdn.microsoft.com/en-us/library/windowsazure/dn175718.aspx

      如果此网址消失,这里是今天(2013 年 8 月 12 日)的副本

      Europe West
      65.52.128.0/19
      213.199.128.0/20
      168.63.0.0/19
      168.63.96.0/19
      137.116.192.0/19
      137.117.128.0/17
      168.61.56.0/21
      
      Europe North
      65.52.64.0/20
      65.52.224.0/19
      168.63.92.0/22
      168.63.32.0/19
      94.245.88.0/21
      94.245.104.0/21
      168.63.64.0/20
      168.63.80.0/20
      168.61.96.0/19
      137.116.224.0/20
      
      US East
      168.62.32.0/19
      157.56.176.0/21
      168.62.160.0/19
      168.61.32.0/20
      168.61.48.0/21
      137.117.64.0/18
      137.135.64.0/18
      138.91.96.0/19
      137.116.112.0/20
      
      US West
      168.62.192.0/20
      168.62.208.0/21
      168.61.0.0/20
      168.61.64.0/20
      137.117.0.0/19
      137.135.0.0/18
      137.116.184.0/21
      138.91.64.0/19
      65.52.112.0/20
      168.63.89.0/24
      157.56.160.0/21
      168.62.0.0/19
      
      US North Central
      65.52.0.0/19
      65.52.0.0/20
      65.52.16.0/20
      65.52.192.0/19
      65.52.48.0/20
      157.55.24.0/21
      157.55.64.0/20
      157.55.160.0/20
      157.55.136.0/21
      157.55.208.0/20
      157.56.8.0/21
      157.55.252.0/22
      168.62.96.0/19
      157.55.248.0/22
      168.62.224.0/19
      
      US South Central
      157.55.176.10/22
      157.55.183.223/27
      157.55.184.10/22
      157.55.191.223/27
      157.55.192.10/24
      157.55.193.223/27
      157.55.194.10/24
      157.55.195.223/27
      157.55.196.10/23
      157.55.200.10/23
      157.55.80.10/23
      157.55.83.223/27
      157.55.84.10/23
      157.55.87.223/27
      65.52.32.10/22
      65.52.39.224/28
      70.37.160.10/22
      70.37.167.224/28
      70.37.118.0/24
      70.37.119.138/28
      70.37.119.170/28
      70.37.48.10/22
      70.37.55.224/28
      70.37.56.10/22
      70.37.63.224/28
      70.37.116.0/24
      
      SE Asia
      111.221.96.0/20
      168.63.160.0/19
      111.221.80.0/20
      168.63.224.0/19
      137.116.128.0/19
      
      East Asia
      65.52.160.0/19
      111.221.78.0/23
      168.63.128.0/19
      168.63.192.0/19
      137.116.160.0/20
      

      【讨论】:

        【解决方案5】:

        您也可以为 Azure VM 使用元数据端点:

        Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | ConvertTo-Json -Depth 64
        

        参考: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=windows

        【讨论】:

          猜你喜欢
          • 2017-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-10
          • 2022-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多