
Bei mir läuft eine RDS-Instanz, auf die über das Internet zugegriffen werden kann.
Ich möchte, dass Instanzen innerhalb des VPC eine interne Verbindung dazu herstellen und nicht über das Internet.
Einer anderen Frage zufolge (https://stackoverflow.com/questions/21089582/amazon-rds-endpoint-internal) die Host-Verbindungszeichenfolge sollte einer internen IP-Adresse zugeordnet werden, wenn sie innerhalb des VPC abgefragt wird. Das funktioniert nicht, ich erhalte auf jeden Fall die externe IP-Adresse.
- Ich habe nur ein VPC, daher wird kein Peering verwendet.
- Ich habe benutzerdefinierte DHCP-Optionen festgelegt, hier liegt wahrscheinlich mein Problem.
Der DHCP-Optionssatz meiner VPC ist
domain-name = mysite.local;domain-name-servers = 10.10.51.254;
Ich habe das Gefühl, dass es hier aufgrund meines benutzerdefinierten DHCP-Optionssatzes kaputt ist. mysite.local
ist die lokale Domäne und 10.10.51.254
ein lokaler Bind-Server (verwendet nicht Route53).
Muss ich in meinem DNS-Server eine Art Forward-Lookup konfigurieren us-east-1.rds.amazonaws.com
oder fehlt mir irgendwo eine Konfigurationskomponente? Ich dachte, dies sollte innerhalb des VPC „automatisch“ erfolgen, also liege ich wohl falsch.
Antwort1
Das Problem hier ist also tatsächlich, dass ich einen privaten DNS-Server verwende und nicht den von Amazon bereitgestellten DNS. Es gibt keine „Auto-VPC-Magie von Amazon“, die die Domänensuche für diese AWS-Dienste unterstützt (was ich irgendwie fälschlicherweise angenommen habe).
Das Geheimnis dabei ist, dass Sie auch dann Suchvorgänge beim DNS-Server des VPC durchführen können, wenn Sie das von Amazon bereitgestellte DNS nicht verwenden.
Wenn die VPC DNS resolution
überDNS hostnames
YES
dann können Sie eine Suche auf dem DNS-Server des VPC durchführen, der sich an der Basisadresse der VPC CIDR-Blöcke +2 befindet (wenn Ihr VPC also ist, 10.10.0.0/16
dann ist die DNS-Suchadresse 10.10.0.2
) – ich habe dies in einem zufälligen Blog-Beitrag gefunden, als ich danach gesucht habe, und bin nicht sicher, ob es in der offiziellen Dokumentation steht, da alle DNS-Suchen, die ich über Amazon-Dokumente durchführe, mit Route 53-Zeug überflutet sind.
Da wir nun über eine funktionierende DNS-Weiterleitungssuche verfügen, müssen wir nur noch die Weiterleitungssuche im Bind-Server hinzufügen. Der Haken dabei ist, dass der Hostname der RDS-Instanz eigentlich eine CNAME-Suche ist.
Zum Beispiel:
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
Bei der Suche handelt es sich tatsächlich um einen CNAME-Eintrag für einen compute-1.amazonaws.com
, daher ist für BEIDE eine Weiterleitungsregel erforderlich.
Kurz zusammengefasst:Da die CIDR meines VPC ist 10.10.0.0/16
, sind hier Beispiel-Vorwärtsblöcke, die mein Problem gelöst und diese Frage beantwortet haben:
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; };
};
Jetzt können alle Dienste im lokalen VPC die private IP der RDS-Instanz nachschlagen und die öffentliche Auflösung funktioniert auch weiterhin von außerhalb des VPC.