dmourati Asked: 2013-06-04 19:03:17 +0800 CST2013-06-04 19:03:17 +0800 CST 2013-06-04 19:03:17 +0800 CST Dig -x 等效于 AWS Route 53 772 我有一个与 AWS 弹性 IP (EIP) 关联的 IP 编号。我想知道,我的 Route 53 域中的哪些 DNS 记录与该 A 记录的 IP 相关联。 在传统的 DNS 服务中,我会运行 dig -x $EIP 并取回 PTR 记录并完成。 亚马逊只允许通过填写一些表格来记录实际的 PTR 。 否则,PTR 记录指向 amazonaws.com。 Route 53的 API似乎也不支持dig -x 方法。此外,数据看起来像 XML,这使得从命令行中获取有点困难。 那么,我怎样才能得到这些数据呢? domain-name-system 2 个回答 Voted Best Answer Joel K 2013-06-06T20:39:12+08:002013-06-06T20:39:12+08:00 既然你说你想使用这些数据对当前运行的 AWS 节点进行端口扫描,为什么不通过列出你当前运行的 AWS 实例来收集 IP 信息呢? 您可能在 DNS 中有没有当前主机在运行的记录,并且您可能在运行但实际上不在 DNS 中的主机,所以我认为实例列表将是更好的“真实来源”。 这是一个用于获取实例列表的示例 boto 脚本。 boto list instances 一些实例参数是实例的当前外部和内部 IP 地址。 如果您真的想坚持使用 route53 方法,您可以使用 boto 遍历托管区域中的所有记录。 route53 api 的 boto 文档 $ cat list-r53.py #!/usr/bin/python """ Simple script to lsit route 53 entries WARNING: (boto requires credential to be stored in a dotfile for the user) eg. Contents of ~/.boto are below: [Credentials] aws_access_key_id = ABC123DEF456 aws_secret_access_key = NOC4KE4U """ from boto.route53.connection import Route53Connection route53 = Route53Connection() results = route53.get_all_hosted_zones() for zone in results['ListHostedZonesResponse']['HostedZones']: print "========================================" print "Zone:",zone['Name'] zone_id = zone['Id'].replace('/hostedzone/', '') for rset in route53.get_all_rrsets(zone_id): print "\t%s: %s %s @ %s" % (rset.name, rset.type, rset.resource_records, rset.ttl) $ ./list-r53.py ======================================== Zone: serverfault.com. serverfault.com.: NS [u'ns-1638.awsdns-12.co.uk.', u'ns-699.awsdns-23.net.', u'ns-301.awsdns-37.com.', u'ns-1459.awsdns-54.org.'] @ 172800 serverfault.com.: SOA [u'ns-1638.awsdns-12.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400'] @ 900 192.168.1.1.serverfault.com.: PTR [u'sample.serverfault.com.'] @ 300 sample.serverfault.com.: A [u'192.168.1.1'] @ 300 祝你好运。 dmourati 2013-06-12T18:27:36+08:002013-06-12T18:27:36+08:00 dig -x我决定,我真的想为我所有的亚马逊 EIP 工作,而不是等价物。我是这样做的。 首先,我为此创建了一个名为 ns1 的新 AWS 实例。在 ns1 上,我安装了以下内容: cli53 r53 * 绑定9 h2n 安装软件后,我编写了一些自定义 shell 脚本来进行提升。 首先,cli53-to-hosts 生成一个动态生成的 /etc/hosts 文件版本。这项工作是通过 cli53 export myzone.com 完成的,然后是一些组织排序。 同样,cli53-to-networks 列出了我需要为其生成 in-addr.arpa 区域的网络。因为这些不是全局命名空间中的真实区域,所以我在 /16 网络掩码级别创建了它们,例如 50.18、107.23 等。 有了主机文件和运行 DNS 的网络列表,h2n 脚本(来自 O'Reilly 的 DNS 和 BIND 书)完成了这项工作。它写出一个 named.conf 文件和一系列用于反向 dns 的区域文件。 所有这些都是通过名为 configure-dns 的最终脚本从 cron nightly 调用的: #!/bin/bash . ~/.profile cli53-to-hosts > /usr/local/etc/hosts cli53-to-networks > /usr/local/etc/h2n/h2n.conf cd /etc/bind h2n -N 255.255.0.0 -f /usr/local/etc/h2n/h2n.conf -H /usr/local/etc/hosts -d mydomain.com -u [email protected] -h ns1.mydomain.com -p mydomain.com 最终结果: mv-m-dmouratis:~ dmourati$ dig -x 50.18.205.42 @ns1.mydomain.com ; <<>> DiG 9.8.3-P1 <<>> -x 50.18.205.42 @ns1.mydomain.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55551 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;42.205.18.50.in-addr.arpa. IN PTR ;; ANSWER SECTION: 42.205.18.50.in-addr.arpa. 86400 IN PTR bounce.mydomain.com. ;; AUTHORITY SECTION: 18.50.in-addr.arpa. 86400 IN NS ns1.mydomain.com. ;; Query time: 32 msec ;; SERVER: 54.218.3.75#53(54.218.3.75) ;; WHEN: Tue Jun 11 19:21:46 2013 ;; MSG SIZE rcvd: 93 这当然是一项大量的工作,但出奇地令人满意。我想我是工作 PTR 记录的疯子,无法忍受放弃一直让他们工作的成功记录。
既然你说你想使用这些数据对当前运行的 AWS 节点进行端口扫描,为什么不通过列出你当前运行的 AWS 实例来收集 IP 信息呢?
您可能在 DNS 中有没有当前主机在运行的记录,并且您可能在运行但实际上不在 DNS 中的主机,所以我认为实例列表将是更好的“真实来源”。
这是一个用于获取实例列表的示例 boto 脚本。 boto list instances 一些实例参数是实例的当前外部和内部 IP 地址。
如果您真的想坚持使用 route53 方法,您可以使用 boto 遍历托管区域中的所有记录。 route53 api 的 boto 文档
祝你好运。
dig -x
我决定,我真的想为我所有的亚马逊 EIP 工作,而不是等价物。我是这样做的。首先,我为此创建了一个名为 ns1 的新 AWS 实例。在 ns1 上,我安装了以下内容:
安装软件后,我编写了一些自定义 shell 脚本来进行提升。
首先,cli53-to-hosts 生成一个动态生成的 /etc/hosts 文件版本。这项工作是通过 cli53 export myzone.com 完成的,然后是一些组织排序。
同样,cli53-to-networks 列出了我需要为其生成 in-addr.arpa 区域的网络。因为这些不是全局命名空间中的真实区域,所以我在 /16 网络掩码级别创建了它们,例如 50.18、107.23 等。
有了主机文件和运行 DNS 的网络列表,h2n 脚本(来自 O'Reilly 的 DNS 和 BIND 书)完成了这项工作。它写出一个 named.conf 文件和一系列用于反向 dns 的区域文件。
所有这些都是通过名为 configure-dns 的最终脚本从 cron nightly 调用的:
最终结果:
这当然是一项大量的工作,但出奇地令人满意。我想我是工作 PTR 记录的疯子,无法忍受放弃一直让他们工作的成功记录。