为什么将“http://”附加到域时“host”命令会返回不同的结果

为什么将“http://”附加到域时“host”命令会返回不同的结果

今天,当我检查我网站的临时域实际指向何处时,我大吃一惊。我以为是由于域或我们公司网络的一些草率配置,我的临时域不知何故指向了生产服务器。

于是我 host http://stage.***.com输入了 212.##.##.70 => Booom,生产服务器。之后,我尝试host stage.***.com输入 212.#.##.73 => 呼,暂存服务器

所以,我的问题是:为什么会这样,意外地将“http://”粘贴到命令行中会导致“host”返回另一个 IP 地址?

编辑:由于我问的问题似乎不清楚,所以我试图澄清:正如斯文在他的评论中指出的那样,

host http://stage.***.com

不应该返回任何内容,但就我而言,它确实返回了

http://stage.***.com has address 212.##.##.70

这实际上是***.com(生产)的IP,所以我想知道这是怎么发生的。

  1. 为什么它会返回 Prod-IP?
  2. 考虑到 Sven 的评论,为什么它什么都不返回?由于实际答案非常具有误导性,我更希望看到错误消息。无论如何,“http://” 是一个复制/粘贴错误

顺便说一下,我在 Ubuntu 16.10 客户端上

编辑2:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> http://stage.***.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26978
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;http://stage.***.com. IN   A

;; ANSWER SECTION:
http://stage.***.com. 180 IN    A   212.48.122.70

;; AUTHORITY SECTION:
***.com.    65  IN  NS  auth2.###.de.
***.com.    65  IN  NS  auth1.###.de.

;; ADDITIONAL SECTION:
auth1.###.de.   180 IN  A   212.##.##.53
auth1.###.de.   180 IN  AAAA    2a00:####:##:##::2
auth2.###.de.   180 IN  A   212.##.##.53
auth2.###.de.   180 IN  AAAA    2a00:####:##:##::2

嗯。我猜“http://”部分被视为域的一部分,而我们的 DNS 配置显示 *.***.com 有 ###.70 ???(因此我们对非阶段的任何内容都有通配符....)

答案1

您的域名必须有通配符才能实现此操作(并且您应该将其删除)

假设您有一个区域,则以下结果应该相同

区域文件:

example.com IN A 192.0.2.5
*.example.com IN A 192.0.2.0
www.example.com IN A 192.0.2.10

主机命令输出:

host http://a.example.com
http://a.example.com has address 192.0.2.0

host http://www.example.com
http://www.example.com has address 192.0.2.0

host www.example.com
www.example.com has address 192.0.2.10

可以看到,www匹配wwwA记录,http://www匹配​​通配符

顶点记录不匹配*,因为它不是子域。

host http://example.com
http://example.com not found: 3(NXDOMAIN

永远是NXDomain,这与缺少任何角色有关+.

我检查了查询日志,是的,该查询实际上是针对http://a.example.com并匹配的*.example.com

通配符非常糟糕,请尽可能避免使用它们!

  1. 禁用负 TTL(没有 NXDomain,您总是用记录回答)
  2. 增加新记录的传播*
  3. 增加 DNS 缓存中毒的可能性(尤其是在 DNS 分裂的情况下!)
  4. 并非所有名称服务器都以相同的方式处理通配符,有些是完全递归的,有些则不是(*.*.*.*.example.comvs *.example.com

*传播不是一个东西,但是它通常用于描述第三方刷新其缓存所需的时间。

答案2

完全删除“http://”,因为它不是 FQDN 的一部分。

相关内容