Wie kann ich ausgehende HTTP / HTTPS-Anforderungen auf einem EC2 in einem öffentlichen Subnetz innerhalb einer VPC unter Amazon AWS aktivieren?

7

Ich habe eine VPC mithilfe von Szenario 2 aus den AWS-Dokumenten eingerichtet: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

Ich habe einer EC2-Instanz, die in einem öffentlichen Subnetz ausgeführt wird, eine elastische IP zugewiesen. SSH funktioniert einwandfrei und ich kann auf die darauf laufende Website zugreifen. Ich kann jedoch keine ausgehenden HTTP- oder HTTPS-Anforderungen stellen (dies ist mir beim Versuch der Ausführung aufgefallen yum update).

Ich glaube, dass alle meine Sicherheitseinstellungen korrekt sind. Kann ich keine ausgehenden HTTP / HTTPS-Anfragen über das Internet-Gateway stellen? Ich habe ausdrücklich darum gebeten, dieser Instanz beim Erstellen keine öffentliche IP zuzuweisen, da ich wusste, dass ich eine elastische IP zuweisen würde, die dem DNS der Website gefällt. Ich habe ein NAT-Setup für Instanzen im privaten Subnetz, aber derzeit werden dort nur RDS-Instanzen ausgeführt, sodass ich ausgehende Anforderungen von dort nicht getestet habe.

Die Sicherheitsgruppe für diese EC2-Instanz hat die folgenden ausgehenden Regeln: Geben Sie hier die Bildbeschreibung ein

Die Routentabelle für dieses Subnetz enthält die folgenden Einstellungen: Geben Sie hier die Bildbeschreibung ein

Die Netzwerk-ACL verfügt über die folgenden Einstellungen: Geben Sie hier die Bildbeschreibung ein

Der Standard-DHCP-Optionssatz enthält die folgenden Einstellungen:

domain-name = ec2.internal
domain-name-servers = AmazonProvidedDNS

Die Standardeinstellungen /etc/resolv.confsind:

search ec2.internal
nameserver 10.0.0.2

Die CIDR-Blöcke für die VPC und die Subnetze lauten wie folgt:

VPC: 10.0.0.0/16
Public Subnet: 10.0.0.0/24
Private DB Subnet in US East 1A: 10.0.1.0/24
Private DB Subnet in US East 1C: 10.0.2.0/24
T. Brian Jones
quelle
Hat curl http://www.google.com/scheitern?
Ceejayoz
Ja. Ich kann nicht auf Websites, Curl, Wget, Ping usw. zugreifen. -curl: (6) Could not resolve host: www.google.com
T. Brian Jones
Nameserver-Problem vielleicht?
Ceejayoz
Interessant ... das scheint das Problem zu sein. Ich kann IP-Adressen für Google.com pingen. Was bedeutet das für meine VPC? Was ist das Problem?
T. Brian Jones
Überprüfen Sie Ihre /etc/resolv.conf und Ihre AWS Console auf DHCP-Optionssätze.
Ceejayoz

Antworten:

7

NOCH WUNDERBAR

Warum funktioniert der bereitgestellte AWS DNS-Server in diesem Fall nicht?

PROBLEM

Das Problem war, dass DNS-Namen nicht über den lokalen DNS-Server aufgelöst wurden, als Amazon bei der ursprünglichen Erstellung der VPC angegeben hatte . Ich stellte fest, dass ich ausgehende HTTP / HTTPS-Verbindungen zu IP-Adressen herstellen konnte, für deren Lösung kein DNS-Server erforderlich war.

LÖSUNG

Ich musste ein benutzerdefiniertes DHCP-Optionsset in der Amazon VPC AWS Console erstellen und die öffentlichen DNS-IPs von Google als festlegen domain-name-servers = 8.8.8.8, 8.8.4.4.

Dann musste ich die /etc/resolv.confEinstellung der gleichen Sache aktualisieren : nameserver 8.8.8.8 nameserver 8.8.4.4

T. Brian Jones
quelle
Wie in einem Kommentar oben erwähnt, wie lauten Ihre DHCP-Optionssätze und die Standardeinstellungen für /etc/resolv.conf? Was sind auch die VPC- und Subnetz-CIDR-Blöcke?
Jason Floyd
Ich habe diese Details am Ende der Frage hinzugefügt.
T. Brian Jones
1
Mussten Sie nach diesen Änderungen etwas neu starten? Ich habe einen DHCP-Optionssatz hinzugefügt und auch die Zeilen in resolv.conf geändert, aber das curl http://google.comfunktioniert immer noch nicht.
PKHunter