Warum brauchen wir die privaten Subnetzes in der VPC?
Gibt es 4 Szenarien in AWS VPC konfigurieren. Aber schauen wir uns diese zwei:
- Szenario 1: 1 öffentliches Subnetz.
- Szenario 2: 1 öffentliches Subnetz und 1 privaten Subnetz.
Da jede Instanz gestartet, in öffentlichen Subnetz nicht über das EIP (es sei denn es wird zugewiesen), ist es schon nicht aus dem Internet adressierbar. Dann:
- Warum ist es eine Notwendigkeit für das private Subnetz?
- Was genau sind die Unterschiede zwischen privaten und öffentlichen Subnetzen?
InformationsquelleAutor der Frage Tommy | 2014-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update: im späten Dezember, 2015, AWS angekündigt ein neues feature, ein Managed NAT-Gateway für VPC. Dieser optionale service bietet eine alternative Mechanismus für VPC-Instanzen in einem privaten Subnetz Zugriff auf das Internet, wo zuvor die gemeinsame Lösung war eine EC2-instance auf einem öffentlichen Subnetzes in der VPC, in der Funktion als "NAT-instance", bei der network address translation (technisch port address translation) für Fälle, in andere, private Subnetze, so dass diese Maschinen zu verwenden, die NAT-Instanz ist die öffentliche IP-Adresse für Ihre ausgehenden Internet-Zugang.
Den neuen managed NAT service nicht grundlegend, verändern die Anwendbarkeit der folgenden Informationen an, aber diese option ist nicht Gegenstand der Inhalte, die folgt. Eine NAT-Instanz können weiterhin verwendet werden, wie beschrieben, oder die Managed-NAT-Gateway-Dienst kann bereitgestellt werden, statt. Eine erweiterte version dieser Antwort, die Integration von mehr Informationen über NAT-Gateways und wie es im Vergleich um eine NAT-Instanz wird in Kürze sein, da diese sowohl relevant für die private - /public-subnet-Paradigma in der VPC.
Beachten Sie, dass die Internet-Gateway und NAT-Gateway sind zwei verschiedene Funktionen. Alle VPC-Konfigurationen mit Internet-Zugang über einen Internet-Gateway virtuelles Objekt.
Zu verstehen, die Unterscheidung zwischen "privat" und "öffentlich" Subnetze in Amazon VPC erfordert ein Verständnis dafür, wie IP-routing und network address translation (NAT) funktionieren im Allgemeinen, und wie Sie konkret umgesetzt in VPC.
Der Kern der Differenzierung zwischen öffentlichen und privaten Subnetzes in der VPC ist definiert durch das, was in diesem Subnetz Standard-route ist, in der VPC-routing-Tabellen.
Diese Konfiguration wiederum diktiert die Gültigkeit der Verwendung oder nicht-Verwendung, öffentliche IP-Adressen-Instanzen auf, die bestimmten Subnetz.
Jedes Subnetz hat genau eine default-route, die nur eines von zwei Dingen:
Dem Internet-Gateway es werden keine network address translation für Instanzen ohne öffentliche IP-Adressen, so dass eine Instanz ohne eine öffentliche IP-Adresse kann keine Verbindung nach außen dem Internet-zu tun, Dinge wie das herunterladen von software-updates oder den Zugriff auf andere AWS-Ressourcen wie S31 und SQS-wenn die default-route auf seine VPC-Subnetz ist der Internet-Gateway-Objekt. Also, wenn Sie eine Instanz auf einem "öffentlichen" subnet, dann müssen eine öffentliche IP-Adresse um zu tun, eine beträchtliche Anzahl von Dingen, dass die Server Häufig tun müssen.
Für Instanzen mit nur eine private IP-Adresse, es gibt eine Alternative Möglichkeit des ausgehenden Zugriff auf das Internet. Dies ist, wo Netzwerk-Adresse Translation2 und eine NAT-Instanz kommen.
Maschinen, die auf einem privaten Subnetz können auf das Internet zugreifen, weil die default-route auf einem privaten Subnetz ist nicht VPC "Internet-Gateway" Objekt-es ist eine EC2-Instanz konfiguriert als eine NAT-Instanz.
Eine NAT-Instanz ist eine Instanz, die auf ein öffentliches Subnetz mit einer öffentlichen IP, und bestimmte Konfiguration. Es sind AMIs, die sind bereits gebaut, um dies zu tun, oder Sie können Ihr eigenes bauen.
Wenn die privat adressierten Maschinen senden Verkehr nach außen, die der Verkehr gesendet wird, von VPC, um die NAT-Instanz, die ersetzt die Quell-IP-Adresse auf dem Paket (der private Rechner private IP-Adresse) mit seiner eigenen öffentlichen IP-Adresse, schickt den Datenverkehr aus dem Internet, nimmt die Antwort-Pakete und leitet Sie zurück an die private Adresse des verwendeten Computers. (Kann es auch umschreiben der source-port, und in jedem Fall, es merkt sich die Zuordnungen, also kennt er die internen Rechner erhalten sollte, die Antwort-Pakete). Eine NAT-Instanz erlaubt keine "unerwarteten" inbound-traffic zu erreichen, die privaten Instanzen, es sei denn, es wurde explizit dazu konfiguriert.
So, wenn der Zugriff auf externe Internet-Ressource aus einem privaten Subnetz, das der Datenverkehr durchläuft die NAT-Instanz, und scheint das Ziel zu haben, stammten von der öffentlichen IP-Adresse des NAT-Instanz... so die Antwort der Verkehr kommt wieder auf die NAT-Instanz. Weder die Sicherheits-Gruppe zugewiesen, um die NAT-Instanz noch die security-Gruppe zugewiesen, um die private Instanz konfiguriert werden müssen, um "erlauben", diese Antwort-Verkehr, da Sicherheitsgruppen sind zustandsorientiert. Sie erkennen die Reaktion Verkehr korreliert ist, zu den Sitzungen, die intern entstanden, so ist es automatisch erlaubt. Unerwartete Verkehr ist, natürlich, verweigert, es sei denn, die Sicherheitsgruppe so konfiguriert, daß es.
Im Gegensatz zu herkömmlichen IP-routing, wo Ihr Standard-gateway auf demselben Subnetz, so funktioniert es in der VPC ist das anders: die NAT-Instanz für jede gegebene privaten Subnetz ist immer in einem anderen Subnetz, und das andere Subnetz ist immer ein öffentliches Subnetz, weil die NAT-Instanz muss über eine öffentliche externe IP und das Standardgateway hat die VPC - "Internet-Gateway" - Objekt.
Ähnlich... Sie kann nicht bereitgestellt werden, eine Instanz mit einer öffentlichen IP-Adresse auf einem privaten Subnetz. Es funktioniert nicht, weil die default-route auf einem privaten Subnetz ist (per definition) eine NAT-Instanz (die NAT auf den Datenverkehr), und nicht die Internet-Gateway-Objekt (die nicht). Der eingehende Datenverkehr aus dem Internet treffen würde, die öffentliche IP der Instanz, aber die Antworten, die versuchen würde, um route nach außen durch die NAT-Instanz, die würden entweder fallen die traffic (da wäre es aus Antworten auf verbindungen ist es nicht bewusst, so würden Sie als nichtig angesehen werden) oder würde schreiben Sie den Antwort-Verkehr zu nutzen, seine eigene öffentliche IP-Adresse, das würde nicht funktionieren, da die externe Herkunft nicht akzeptieren würde Antworten, kam von einer IP-Adresse eine andere als die, die Sie versuchten, eine Kommunikation zu initiieren.
Im wesentlichen der "privaten" und "öffentlichen" Bezeichnungen sind nicht wirklich über die Zugänglichkeit oder Unzugänglichkeit von der Internet. Sie werden über die Arten von Adressen, die zugewiesen werden, um die Instanzen auf das Subnetz, das ist relevant, weil die Notwendigkeit zu übersetzen-oder vermeiden Sie die übersetzung -- diese IP-Adressen für Internet-Interaktionen.
Seit VPC impliziten Routen aus allen VPC-Subnetze zu allen anderen VPC-Subnetze, die default-route nicht spielen eine Rolle in der internen VPC-Verkehr. Instanzen, die mit privaten IP-Adressen eine Verbindung zu anderen privaten IP-Adressen im VPC "von" Ihre private IP-Adresse, nicht "von" Ihre öffentliche IP-Adresse (wenn Sie eine haben)... solange die Ziel-Adresse ist eine andere private Adresse innerhalb des VPC.
Wenn Ihr Instanzen mit privaten IP-Adressen niemals, unter keinen Umständen, müssen Ihren Ursprung ausgehenden Internet-Verkehrs, dann sind Sie technisch bereitgestellt werden konnte, die auf eine "öffentliche" subnet und würde noch immer nicht mehr zugegriffen werden, aus dem Internet... aber unter einer solchen Konfiguration ist es unmöglich für Sie, um Ihren Ursprung ausgehenden Datenverkehr in Richtung Internet, das die verbindungen mit anderen AWS-Infrastruktur-services wieder, wie S31 oder SQS.
1 ist. In Bezug auf S3, konkret zu sagen, dass Internet-Zugang ist immer erforderlich ist eine grobe Vereinfachung, wird wahrscheinlich wachsen in Umfang über die Zeit und sich auf andere AWS-services, wie die Funktionen der VPC weiter zu entwickeln und zu wachsen. Es ist ein relativ neues Konzept, das als eine VPC-Endpunkt , können Ihre Instanzen, einschließlich diejenigen, die nur private IP-Adressen, um direkt auf S3 von ausgewählten Subnetze innerhalb der VPC, ohne Sie zu berühren, "Internet", und ohne über eine NAT-Instanz oder einem NAT-gateway, aber dies erfordert zusätzliche Konfiguration, und ist nur nutzbar, Zugriff auf Perioden innerhalb der gleichen AWS-region wie Ihre VPC. Standardmäßig S3-das ist, als dies geschrieben wurde, der einzige service, der aufgedeckt hat die Funktion zum erstellen von VPC Endpunkte -- der Zugriff ist nur von innerhalb der VPC über das Internet. Wenn Sie eine VPC erstellen, Endpunkt, wird eine Präfix-Liste (
pl-xxxxxxxx
), die Sie verwenden können, in Ihrem VPC-ROUTING-Tabellen zu senden Datenverkehr an, dass insbesondere AWS-service direkt an den service über das virtuelle "VPC-Endpunkt" - Objekt. Es löst auch das problem der Beschränkung der ausgehenden Zugriff auf S3 für Besondere Instanz, weil der Präfix-Liste kann verwendet werden, in die ausgehende Sicherheit-Gruppen, an die Stelle einer Ziel-IP-Adresse oder ein block-und ein S3 VPC-Endpunkt kann an zusätzliche politische Aussagen, die Beschränkung Eimer Zugriff von innen, wie gewünscht.2 ist. Wie bereits in der Dokumentation, was ist eigentlich hier besprochen wird, ist der port auch als network address translation. Es ist üblich, obwohl technisch ein bisschen ungenau, um auf die kombinierte operation als "NAT." Dies ist etwas ähnlich zu der Art und Weise viele von uns neigen dazu, zu sagen, "SSL", wenn wir eigentlich ", TLS." Wir wissen, wovon wir reden, aber wir verwenden nicht die richtige Wort um es zu beschreiben. die " - Note
Wir verwenden den Begriff NAT, die in dieser Dokumentation zu Folgen, gemeinsame IT-Praxis, obwohl die tatsächliche Rolle eines NAT-Gerät ist sowohl address translation und port address translation (PAT)."
InformationsquelleAutor der Antwort Michael - sqlbot
Habe ich nicht den Ruf, um einen Kommentar hinzufügen zu Michael ' s Antwort oben, daher hinzufügen mein Kommentar als Antwort.
Es ist erwähnenswert, dass die AWS managed gateway ist ~3 mal so teuer ist wie am Tag, wenn Sie gegenüber Ihrer eigenen Instanz. Dies ist natürlich vorausgesetzt, dass Sie benötigen nur eine NAT-instance (ich.e Sie nicht über mehrere NAT-instances konfigurieren für failover, etc.) das gilt generell für die meisten kleinen bis mittleren use-case-Szenarien. Unter der Annahme einer monatlichen Daten-transfer von 100 GB über das NAT-gateway,
Verwaltet NAT-Instanz monatliche Kosten = $33.48/Monat (0,045 USD/Stunde * 744 Stunden im Monat) + $4.50 (0,045 USD pro GB Daten verarbeitet * 100GB) + $10 ($.10/GB-Norm AWS-data-transfer-Gebühren für alle übertragenen Daten über das NAT-gateway) = $47.98
t2.nano-Instanz konfiguriert als eine NAT-Instanz = $4.84/Monat ($0.0065 * 744 Stunden im Monat) + $10 ($.10/GB-Norm AWS-data-transfer-Gebühren für alle übertragenen Daten über die NAT-instance) = $14.84
Diese natürlich ändert, wenn Sie gehen für redundante NAT-Instanzen, da die AWS managed NAT-gateway hat eine eingebaute Redundanz für hohe Verfügbarkeit. Wenn Sie kümmern sich nicht um die extra $33/Monat, dann ist die managed NAT-Instanz ist auf jeden Fall die reduzierte Kopfschmerzen, nicht zu pflegen eine andere Instanz. Wenn Sie ein VPN (z.B. OpenVPN) - Instanz für den Zugriff auf Ihre instances in der VPC, können Sie einfach konfigurieren Sie die Instanz auch als NAT-gateway, und dann brauchen Sie nicht zu pflegen haben eine zusätzliche Instanz, die gerade für die NAT (auch wenn man manchmal die Stirn Runzeln, auf die Idee der Kombination VPN-und NAT -).
InformationsquelleAutor der Antwort Jim Walker
Ich würde vorschlagen, einen anderen Weg - Graben "private" Subnetze und NAT-instances /gateways. Sie sind nicht notwendig. Wenn Sie nicht möchten, dass der Computer aus dem internet erreichbar, nicht in eine Sicherheitsgruppe, die es erlaubt, den Zugang.
Durch Notwasserung die NAT-instance /gateway, eliminieren Sie die Laufenden Kosten für die Instanz /gateway, und beseitigen Sie die Geschwindigkeitsbegrenzung (250mbit oder 10gbit).
Wenn Sie eine Maschine haben, die auch nicht auf das internet zugreifen müssen direkt (und ich würde Fragen, wie Sie patchen es*), dann mit allen Mitteln, nicht zuweisen einer öffentlichen IP-Adresse.
*Wenn die Antwort hier ist eine Art proxy, gut, du bist dass ein Aufwand, aber jedem das seine.
InformationsquelleAutor der Antwort Phil
Antwort Michael - sqlbot macht die implizite Annahme, dass die privaten IP-Adressen sind erforderlich. Ich denke, es lohnt sich also die Frage, die Annahme, -- brauchen wir sogar die Benutzung von privaten IP-Adressen in den ersten Platz? Mindestens ein Kommentator fragte die gleiche Frage stellen.
Sich ein Szenario vorstellen, wo man mit einem VPC und Sie öffentliche IP-Adressen zuweisen, um alle Ihre EC2-Instanzen. Keine Sorge, das bedeutet nicht, dass Sie unbedingt erreichbar über das internet, weil Sie Sicherheitsgruppen verwenden, um den Zugriff einzuschränken, in genau der gleichen Weise, die Dinge funktionieren mit EC2-classic. Durch die Verwendung von öffentlichen IP-Adressen Sie haben den Vorteil des seins in der Lage, leicht setzen und bestimmte Dienste an ein begrenztes Publikum, ohne dass Sie etwas wie ein ELB. Dies befreit Sie von der Notwendigkeit, eine NAT-Instanz oder einem NAT-gateway. Und da braucht man halb so viele Subnetze Sie können wählen, verwenden Sie einen kleineren CIDR-Zuweisung für Ihre VPC oder Sie könnten größere Subnetze mit der gleichen Größe VPC. Und weniger Subnetzen bedeutet, dass Sie weniger zahlen für inter-AZ-Verkehr sowie.
Also, warum tun wir das nicht? Warum bietet AWS sagen, die beste Praxis ist die Verwendung von privaten IPs?
Amazon Web Services hat einen begrenzten Vorrat an public IPv4-Adressen, da das internet als ganzes hat einen begrenzten Vorrat an public IPv4-Adressen. Es ist in Ihrem besten Interesse für Sie zu verwenden Sie private IP-Adressen, die sind praktisch unbegrenzt, eher als übermäßig verbrauchen die knappen öffentlichen IPv4-Adressen. Sie können sehen, einige Beweise dafür, wie AWS die Preise für Elastic IP, EIP, die einer instance zugeordnet ist kostenlos, aber eine ungenutzte EIP Kosten Geld.
Aber um des Argumentes Willen, nehmen wir an, wir kümmern uns nicht um die Verknappung von öffentlichen IPv4-Adressen auf das internet. Schließlich meine Anwendung ist etwas besonderes. Was passiert als Nächstes?
Gibt es nur zwei Möglichkeiten, um befestigen Sie eine öffentliche IP-Adresse einer EC2-instance in einer VPC.
1. Zuordnen der Öffentlichen IP-Adresse
Können Sie verlangen eine öffentliche IP-Adresse beim starten einer neuen EC2-Instanz. Diese option wird als Kontrollkästchen in der Konsole, wie die --Mitarbeiter-public-ip-Adresse Flagge bei der Nutzung von aws-cli, und als die AssociatePublicIpAddress Flagge auf einem embedded-Netzwerk-interface-Objekt, wenn CloudFormation. In jedem Fall die öffentliche IP-Adresse zugewiesen ist
eth0
(DeviceIndex=0). Sie können diese Vorgehensweise nur verwenden, beim starten einer neuen Instanz. Allerdings kommt dieses mit einigen Nachteilen.Nachteil ist, dass eine änderung der security-Gruppe von einer Instanz, die mit Hilfe eines integrierten Netzwerk-interface-Objekts erzwingen den sofortigen Ersatz der Instanz, zumindest wenn man mit CloudFormation.
Ein weiterer Nachteil ist, dass eine öffentliche IP-Adresse zugewiesen, diese Weise verloren wenn die Instanz gestoppt wird.
2. Elastic IP
Im Allgemeinen Elastic IP ist der bevorzugte Ansatz, weil Sie sicherer sind. Sie werden garantiert, um auch weiterhin mit der gleichen IP-Adresse, die Sie nicht Gefahr, versehentlich löschen EC2-instances können Sie frei attach/detach eine Elastische IP zu jeder Zeit, und Sie haben die Freiheit, sich zu verändern Sicherheitsgruppen angewendet, um Ihren EC2-Instanzen.
... Aber AWS beschränkt Sie auf 5 EIP ' s pro region. Sie können verlangen, mehr, und Ihre Anfrage könnte gewährt werden. Aber AWS könnte genauso wahrscheinlich leugnen, dass die Anfrage auf der Grundlage der Argumentation, die ich oben erwähnt. So dass Sie wahrscheinlich nicht wollen, verlassen Sie sich auf EIP ' s, wenn Sie planen, auf immer die Skalierung Ihrer Infrastruktur über 5 EC2-Instanzen pro region.
Abschließend, die Verwendung von öffentlichen IP-Adressen kommt mit einigen netten Vorteilen, aber du wirst laufen in Verwaltungs-oder scaling-Probleme, wenn Sie versuchen, auf öffentliche IP-Adressen ausschließlich. Hoffentlich hilft dies zu veranschaulichen und zu erklären, warum die besten Praktiken sind, wie Sie sind.
InformationsquelleAutor der Antwort Nic