【问题标题】:How do I find out what the IP address is for a domain name on Google App Engine?如何在 Google App Engine 上找出域名的 IP 地址?
【发布时间】:2011-07-08 13:50:37
【问题描述】:

当我的应用程序对提供的域进行 urlfetch 时,我需要弄清楚我的应用程序实际连接到哪个 IP 地址。我在生产服务器上的应用程序在连接到域时遇到问题,但使用我计算机上的 SDK 连接工作正常。我正在尝试调试此问题,但我突然想到 Google App Engine 可能会将域解析为与我的本地计算机不同的 IP 地址。

如果我可以访问套接字库,这将像 socket.gethostbyname('thedomainiwant.com') 一样简单,但不幸的是,Google 不允许在 App Engine 上使用套接字库。

有什么想法吗?

如果有需要在 App Engine 上使用 Java 或 Go 的解决方案,我也愿意尝试。

2011 年 6 月 26 日更新:

我将生产代码更改为直接使用 IP 只是为了让它正常工作(并且确实如此)但这不是一个好的长期解决方案,因为我不控制我正在制作 urlfetches 的服务器,所以 IP可能会在没有警告的情况下改变我。

在这种情况下,返回的标头将无济于事,因为生产实例将域解析到的任何 IP 地址根本没有响应并且请求超时。

如果我正在执行 urlfetches 的服务器阻止了 App Engine,那么通过 IP 执行 urlfetch 也不会工作......但它确实有效。此外,我与管理服务器的团队进行了交谈,他们确认他们没有阻止 App Engine。我仍在纠缠他们以获取更多信息,但这似乎不是问题。

2011 年 7 月 7 日更新:

Google 已确认他们的问题影响了我的应用程序。他们已经应用了解决方法并正在修复。看这里: http://code.google.com/p/googleappengine/issues/detail?id=5244

【问题讨论】:

  • 这类问题通常是由目标主机阻塞 App Engine IP 引起的,通常是自动发生的,因为很多不同的应用程序都试图从同一个 IP 地址访问它,这看起来像是滥用。跨度>
  • @Wooble 这是我的第一个怀疑,所以我检查了一下,他们并没有阻止 App Engine。此外,通过 IP 直接连接也可以。

标签: python google-app-engine


【解决方案1】:

目前无法在 App Engine 上进行名称解析。如果你想这样做,你必须通过 HTTP 调用外部服务。

【讨论】:

    【解决方案2】:

    查看响应标头,您可能会得到包含此信息的 HOST 标头。

    否则,为什么在诊断时不直接使用原始 IP 进行连接?

    【讨论】:

    • +1 用于使用原始 IP,-1 用于 可能 得到主机头......事实上,你没有
    • 迈克,为了记录,您实际上确实从某些客户端获取了主机标头;这是我们现在使用的东西。由于未指定客户,因此很可能是一种选择。
    【解决方案3】:

    您可以使用执行 DNS 查找的 Web 服务。您可以在 URL 中嵌入地址,如下所示:

    http://www.dnswatch.info/dns/dnslookup?la=en&host=HOST_HERE&type=A&submit=Resolve

    (替换 HOST_HERE)然后解析结果。不幸的是它是 HTML,但即使是简单的正则表达式也应该可以。您也可以尝试查找一些服务,它允许一些 XML 输出左右 - 有很多这样的服务,只需在 Google 中输入“dnslookup”,可能有人会有。

    【讨论】:

    • 是的,发现使用其他服务可以让我从域名获得 IP,但真正的问题是我的 App Engine 应用程序无法连接到特定域,我正在尝试调试它。
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2012-06-24
    • 1970-01-01
    • 2011-05-12
    • 2013-06-17
    • 2011-04-07
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多