RDS端點始終對應到外部IP

RDS端點始終對應到外部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 伺服器而不是亞馬遜提供的 DNS。沒有任何「來自 Amazon 的自動 VPC 魔法」可以幫助這些 AWS 服務進行網域查找(我有點錯誤地假設)

這裡的秘訣是,即使您不使用 Amazon 提供的 DNS,您也可以針對 VPC 的 DNS 伺服器進行查找。

如果 VPC 有DNS resolutionDNS hostnames設定為YES那麼您可以在 VPC 的 DNS 伺服器上進行查找,該伺服器位於 VPC CIDR 區塊的基底位址 +2(因此,如果您的 VPC 是,10.10.0.0/16則 DNS 查找位址是10.10.0.2) - 我在一些隨機部落格文章中發現了這一點查了一下,不確定它是否在官方文件中,因為我透過Amazon 文件進行的所有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 外部仍然有效。

相關內容