
RDS インスタンスを実行しており、インターネットにアクセスできます。
VPC 内のインスタンスがインターネット経由ではなく内部的に接続できるようにしたいと思います。
別の質問によると(https://stackoverflow.com/questions/21089582/amazon-rds-endpoint-internal) VPC 内からクエリされた場合、ホスト接続文字列は内部 IP にマップされる必要があります。これは機能せず、何をしても外部 IP が取得されます。
- VPC は 1 つしかないため、ピアリングは使用されていません。
- カスタム DHCP オプションを設定していますが、これが問題の原因である可能性があります。
私のVPCのDHCPオプションセットは
domain-name = mysite.local;domain-name-servers = 10.10.51.254;
私のカスタム DHCP オプション セットが原因で、これが壊れているのではないかと思います。mysite.local
はローカル ドメインであり、10.10.51.254
ローカル Bind サーバーです (Route53 は使用していません)。
DNS サーバーで何らかの前方参照を構成する必要がありますかus-east-1.rds.amazonaws.com
、それともどこかに構成が欠けているのでしょうか? これは VPC 内で「自動」になるはずだと思っていたため、間違っているようです。
答え1
ここで問題となるのは、Amazon が提供する DNS ではなく、プライベート DNS サーバーを使用していることです。これらの AWS サービスでドメイン検索を実行するのに役立つ「Amazon からの自動 VPC マジック」は実行されていません (これは私が誤って想定していたことです)。
ここでの秘密は、Amazon 提供の DNS を使用しない場合でも、VPC の DNS サーバーに対してルックアップを実行できることです。
VPCが設定しているDNS resolution
場合DNS hostnames
YES
次に、VPC CIDR ブロックのベース アドレス +2 にある VPC の DNS サーバーでルックアップを実行できます (つまり、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 外部から引き続き機能します。