AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 512992
Accepted
dmourati
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 2 个回答
  • 2193 Views

2 个回答

  • Voted
  1. 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
    

    祝你好运。

    • 2
  2. dmourati
    2013-06-12T18:27:36+08:002013-06-12T18:27:36+08:00

    dig -x我决定,我真的想为我所有的亚马逊 EIP 工作,而不是等价物。我是这样做的。

    首先,我为此创建了一个名为 ns1 的新 AWS 实例。在 ns1 上,我安装了以下内容:

    1. cli53
    2. r53 *
    3. 绑定9
    4. 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 记录的疯子,无法忍受放弃一直让他们工作的成功记录。

    • 0

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve