0

我有一个亚马逊实例。这个实例有两个接口。每个接口有两个弹性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 之间的映射的最佳方法是什么?

谢谢!

4

2 回答 2

0

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

curl --interface 80.0.0.0 ifconfig.me
于 2016-09-16T00:29:14.273 回答
0

授予 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(公共或私有)

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

于 2016-09-16T15:51:28.143 回答