【问题标题】:Aws cli private ip to public ip mappingAws cli 私有 ip 到公共 ip 映射
【发布时间】:2017-01-24 02:48:28
【问题描述】:

我有一个亚马逊实例。这个实例有两个接口。每个接口有两个弹性ip。所以,这个实例总共有 4 个弹性 ip。

我想知道如何在给定公共 ip 的情况下获取关联的私有 ip,或在给定私有 ip 的情况下获取关联的公共 ip。

例如,假设我的实例有这些公共 - 私有 ip:

80.0.0.0 - 10.0.0.0
80.0.0.1 - 10.0.0.1
80.0.0.2 - 10.0.0.2
80.0.0.3 - 10.0.0.3

我想知道是否有办法做类似的事情

aws ip-mapping 80.0.0.0

返回 10.0.0.0

或者,类似:

curl http://169.254.169.254/latest/meta-data/network/interfaces/ip-mapping/80.0.0.0/

在 vpc 中使用弹性 ips 找到私有 ip 和公共 ip 或公共 ip 和私有 ip 之间的映射的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-cli amazon-vpc elastic-ip


    【解决方案1】:

    是的,您可以使用以下 curl 来实现您的用例。

    curl --interface 80.0.0.0 ifconfig.me
    

    【讨论】:

      【解决方案2】:

      赋予 ec2 描述 ec2 实例的权利,确保安装了 boto3,然后该程序应该能够找出给定公共的私有或给定私有的公共。

      没有保修,未经广泛测试

      #!/usr/bin/python
      
      import sys
      
      (theother) = (sys.argv[1])
      import boto3
      
      e = boto3.client('ec2').describe_instances()
      possible = {}
      
      for r in e['Reservations']:
        for i in r['Instances']:
          if 'PrivateIpAddress' in i:
           p = i['PrivateIpAddress']
           if 'NetworkInterfaces' in i:
              for n in i['NetworkInterfaces']:
                if 'Association' in n and 'PublicIp' in n['Association']:
                  u = n['Association']['PublicIp']
                  if u == theother or p == theother:
                    print "found"
                    possible['id'] = i['InstanceId']
                    possible['public'] = u
                    possible['private'] = p
                    break
      
      print possible
      

      要运行该程序,请给它一个虚线四边形的命令行参数,它代表您想要找到匹配项的 ip(公共或私有 IP)

      或者,要在 AWS 控制台 GUI 中查找此信息,请转到弹性 IP 的 VPC 页面。该表列出了公开可见的 IP 和与之关联的私有地址

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多