ubuntu – 为什么我的EC2名称服务器(正确)将名称解析为私有IP,然后切换到公共IP?

前端之家收集整理的这篇文章主要介绍了ubuntu – 为什么我的EC2名称服务器(正确)将名称解析为私有IP,然后切换到公共IP?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在EC2上为一些机器运行名称服务器.无法通过公共Internet访问此名称服务器.我希望我的所有EC2实例都能使用它来找到对方并解析所有公共域名(例如google.com).使用CNAME我是 supposed to be able to create my own names but defer to Amazon’s internal EC2 nameserver for (internal) IP addresses.它工作了一段时间,但最终一些名称错误地解析为他们的公共IP地址.

这是应该发生的事情:

foo$host bar
bar.tld is an alias for ec2-88-88-88-88.compute-1.amazonaws.com.
ec2-88-88-88-88.compute-1.amazonaws.com has address 192.168.50.17

以下是一段时间后实际发生的事情:

foo$host bar
bar.tld is an alias for ec2-88-88-88-88.compute-1.amazonaws.com.
ec2-88-88-88-88.compute-1.amazonaws.com has address 88.88.88.88

确认!如果我重新启动BIND,它会回到正确地将名称解析为私有IP一段时间,然后最终服务于公共IP.除非我重新启动BIND,否则它似乎永远不会再次恢复为私有IP提供服务.

顺便说一句,这似乎总是有效:

foo$host ec2-88-88-88-88.compute-1.amazonaws.com 172.16.0.23
ec2-23-21-222-199.compute-1.amazonaws.com has address 192.168.50.17

如果看起来我不知道我在做什么,因为我在其中一个配置文件中犯了一个简单的错误,那是因为我不知道我在做什么.

我建立了自己的顶级域名:“.tld”(混淆 – 希望为顶级域名选择的真实字符无关紧要).

我试着做what Eric Hammond recommends.这是我的/etc/bind/named.conf.options:

options {
  directory "/var/cache/bind";
  forwarders { 172.16.0.23; };
  auth-nxdomain no;
  listen-on-v6 { any; };
  allow-query { 127.0.0.1; 192.168.50.0/24; };
};

172.16.0.23是亚马逊DNS服务器的IP,只能从EC2内部访问.它是唯一知道我的机器的正确内部/私有IP的人.这几乎就好像我的服务器有时无法解析foo.tld,然后转到其他[公共]名称服务器,然后查找被borked(此后解析为公共IP).我似乎没有完成的技巧是我的名称服务器必须永远不会超过172.16.0.23来解析这些x.compute-1.amazonaws.com名称.另一种可能性是,有时亚马逊的名称服务器搞砸了,并给了我一个公共IP,但那么为什么我的名称服务器最终不会纠正错误并有时再次解析私有IP?

无论如何,继续……这里是/etc/bind/named.conf.local:

zone "tld" {
  type master;
  file "/etc/bind/db.tld";
  notify no;
};

为了完整起见,这是/etc/bind/named.conf:

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

这是我的区域/etc/bind/db.tld的模糊绑定数据库

$TTL    1h
@       IN      SOA     tld. ns.tld. (
          2012021425         ; Serial
                  1m         ; Refresh
                  2m         ; Retry
                  1w         ; Expire
                  1h )       ; Negative Cache TTL
;
@       IN      NS      ns.tld.
@       IN      A       192.168.50.5
ns              A       192.168.50.5

foo     CNAME   ec2-99-99-99-99.compute-1.amazonaws.com.
bar     CNAME   ec2-88-88-88-88.compute-1.amazonaws.com.

呼.好的,这里有一些可能需要整个图片文件.这是名称服务器上的/etc/resolv.conf,ns:

domain tld
search tld
nameserver 127.0.0.1

这是foo.tld和bar.tld上的/etc/resolv.conf:

domain tld
search tld compute-1.internal
nameserver 192.168.50.5
nameserver 172.16.0.23

我不知道这是否正确.也许我应该只有名称服务器192.168.50.5?

此设置在Ubuntu Server 11.10上使用BIND 9.7.3.

(仅供参考:http://alestic.com/2009/06/ec2-elastic-ip-internal交叉发布)

options {
    forward only;
    ...

来自BIND ARM97:

forward此选项仅在转发器列表不为空时才有意义.价值第一,
默认情况下,导致服务器首先查询转发器 – 如果这不能回答问题,
然后服务器将自己查找答案.如果仅指定,则服务器将仅查询转发器.

在您的情况下,由于您实际上只需要.amazonaws.com的亚马逊DNS服务器,您也可以这样做:

options {
    forwarders { };
...
}

zone "amazonaws.com" {
    type forward;
    forwarders { 172.16.0.23; };
    forward only;
};
原文链接:https://www.f2er.com/ubuntu/348092.html

猜你在找的Ubuntu相关文章