RDS Endpoint 始终映射到外部 IP

RDS Endpoint 始终映射到外部 IP

我有一个正在运行的 RDS 实例并且可以通过互联网访问。

我希望 VPC 内的实例能够从内部而不是通过互联网进行连接。

根据另一个问题(https://stackoverflow.com/questions/21089582/amazon-rds-endpoint-internal) 如果从 VPC 内部查询,主机连接字符串应映射到内部 IP。这不起作用,无论如何我都会获得外部 IP。

  • 我只有一个 VPC,因此没有使用对等连接。
  • 我确实设置了自定义 DHCP 选项,这可能是我的问题所在。

我的 VPC 的 DHCP 选项集是 domain-name = mysite.local;domain-name-servers = 10.10.51.254;

我感觉这就是它坏了的地方,因为我设置了自定义 DHCP 选项。mysite.local是本地域,并且10.10.51.254是本地绑定服务器(不使用 Route53)。

我是否需要在我的 DNS 服务器上配置某种正向查找us-east-1.rds.amazonaws.com,或者我是否遗漏了某些配置?我认为这在 VPC 中应该是“自动”的,所以我想我错了。

答案1

所以这里的问题确实是我使用的是私有 DNS 服务器,而不是 Amazon 提供的 DNS。没有任何“来自 Amazon 的自动 VPC 魔法”可以帮助这些 AWS 服务进行域查找(我有点错误地认为是这样)

这里的秘密是,即使您不使用 Amazon 提供的 DNS,您也可以针对 VPC 的 DNS 服务器进行查找。

如果 VPC 已DNS resolution设置DNS hostnamesYES然后您可以在位于 VPC CIDR 块基地址 +2 的 VPC DNS 服务器上进行查找(因此,如果您的 VPC 是,那么10.10.0.0/16DNS 查找地址就是10.10.0.2) - 我在查找这个时从一些随机博客文章中找到了这一点,不确定它是否在官方文档中,因为我通过亚马逊文档进行的所有 DNS 搜索都充斥着 Route 53 的内容。

现在我们已经有了可用的 DNS 正向查找,我们需要做的就是在绑定服务器中添加正向查找。这里的问题是,RDS 实例的主机名实际上是 CNAME 查找。

例如:

user@host:~$ nslookup mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com
Server:     10.10.51.254
Address:    10.10.51.254#53

Non-authoritative answer:
mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com    canonical name = ec2-34-204-131-19.compute-1.amazonaws.com.
Name:   ec2-34-204-141-206.compute-1.amazonaws.com
Address: 34.204.131.19

查找实际上是一个 CNAME 记录,compute-1.amazonaws.com因此两者都需要转发规则。

总结:假设我的 VPC 的 CIDR 是10.10.0.0/16,下面是解决我的问题并回答了这个问题的示例前向块:

zone "mydb.cvxj3uli9kc.us-east-1.rds.amazonaws.com" {
    type forward;
    forward only;
    forwarders { 10.10.0.2; };
};

zone "compute-1.amazonaws.com" {
    type forward;
    forward only;
    forwarders { 10.10.0.2; };
};

现在,本地 VPC 中的所有服务都可以查找 RDS 实例的私有 IP,并且公共解析在 VPC 外部仍然有效。

相关内容