2013-06-20 5 views
5

Ich möchte mit EIPs auf einige Instanzen in meinem privaten Subnetz zugreifen. Gibt es einen Weg? Ich weiß, dass es nicht viel Sinn macht. Aber lassen Sie mich das im Detail erklären.AWS - Zugriff auf Instanzen im privaten Subnetz mithilfe von EIP

Ich habe eine VPC mit 2 Subnetzen.

1) 192.168.0.0/24 (public Subnetz) hat EIPs daran befestigten

2) 192.168.1.0/24 (privates Subnetz)

Es gibt eine NAT-Instanz zwischen diesen den privaten zu ermöglichen Instanzen haben ausgehenden Zugriff auf das Internet. Alles funktioniert gut wie hier erwähnt: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

Aber jetzt, für eine temporäre Zeit muss ich die Instanzen auf dem privaten Subnetz direkt aus dem Internet mit einem EIP adressieren. Ist dies möglich, indem Sie für diese bestimmte Instanz neue Routentabellen einrichten? oder irgendetwas anderes? Hier sind die Grenzen:

1) Es kann keine Ausfallzeiten auf alle Fälle auf dem privaten Subnetz

2) sein Daher ist es selbstverständlich, ich kann nicht ein neues Subnetz und bewegen diese Instanzen erstellen Dort.

Es sollte so einfach sein wie -> Anhängen. Benutzen . Löschen. Der einzige andere Weg, den ich gerade habe, ist eine Art von Port, der auf iptables von Instanzen im öffentlichen Subnetz (die EIP haben) zu jeder Instanz im privaten Subnetz läuft ... Aber das sieht chaotisch aus.

Jede andere Möglichkeit, es zu tun?

Antwort

9

Natürlich befinden sich die Daten im privaten Subnetz im privaten Subnetz, da sie nicht über das Internet zugänglich sein sollten. :)

Aber ... Ich bin sicher, dass Sie Sie Gründe haben, so hier geht:

Erste, nein, Sie können dies nicht in einem einfachen befestigen → Verwendung → entfernt Art und Weise, weil jedes Subnetz hat genau eine Standardroute und zeigt entweder auf das Objekt igw (öffentliches Subnetz) oder die NAT-Instanz (privates Subnetz). Wenn Sie eine elastische IP-Adresse an eine Maschine im privaten Subnetz binden, würde der eingehende Datenverkehr bei der Instanz ankommen, der ausgehende Antwortdatenverkehr würde jedoch über die NAT-Instanz zurückgeleitet werden, was sie entweder verwirft oder verfälscht, da dies nicht möglich ist Route asymmetrisch durch NAT, und das würde hier passieren.

Wenn Ihre Dienste sind TCP-Dienste (http, Remote Desktop, bla bla), dann ist hier ein Stück kurzfristig hackery, die sehr gut funktionieren würde, und den Ärger der iptables vermeiden und setzen nur die spezifische Dienstleistung, die Sie benötigen:

Starten Sie eine neue Mikroinstanz mit ubuntu 12.04 LTS im öffentlichen Subnetz mit einer EIP und einer entsprechenden Sicherheitsgruppe, um den eingehenden Internetverkehr zu den gewünschten Ports zu ermöglichen. Erlaube dir ssh Zugriff auf die neue Instanz. Ermöglichen Sie den Zugriff von diesem Computer auf den internen Computer. Dann:

$ sudo apt-get update 
$ sudo apt-get upgrade 
$ sudo apt-get install redir 

Angenommen, Sie eingehenden Port 80 Traffic auf Port 80 auf einer privaten Instanz senden möchten:

$ sudo redir --lport=80 --cport=80 --caddr=[private instance ip] --syslog & 

Erledigt. Sie haben ein Protokoll für jede Verbindung und trennen die Verbindung mit den Portnummern und Bytes, die in Ihren Syslogs übertragen werden.Der Nachteil ist, dass wenn Ihr privater Host die IP des Verbindungsrechners betrachtet, er immer die interne IP der privaten Netzwerkinstanz sieht.

Sie müssen es nur mit sudo ausführen, wenn Sie an einen Port unter 1024 binden, da nur root an die unteren Portnummern binden kann. Um es zu stoppen, finden Sie die PID und töten sie oder sudo killall redir.

Das spicy kleine redir Dienstprogramm macht seine Magie im Benutzerraum und macht es einfacher (imho) als iptables. Es stellt eine Abhörbuchse auf dem angegebenen Port --lport her. Er verzweigt sich für jede eingehende Verbindung selbst, baut eine ausgehende Verbindung zu --caddr on --cport auf und bindet die beiden Datenströme zusammen. Es hat keine Ahnung von dem, was im Stream vor sich geht, also sollte es für fast alles TCP funktionieren. Dies bedeutet auch, dass Sie in der Lage sein sollten, ziemlich viel Verkehr durchzulassen, trotz der Verwendung eines Micro.

Wenn Sie fertig sind, werfen Sie die Mikroinstanz weg und Ihr Netzwerk ist wieder normal.

2

Je nach Ihren Anforderungen könnten Sie eine statische Route direkt zum igw erstellen.

Wenn Sie beispielsweise Ihre Quelle im Internet kennen, von der Sie Datenverkehr zulassen möchten, können Sie die Route x.x.x.x/32 -> igw in Ihre private Routing-Tabelle einfügen. Da Ihre Instanz eine EIP angehängt hat, kann sie die igw erreichen, und der Datenverkehr zu diesem Ziel wird dorthin geleitet, wo es hingehört und nicht an die NAT.

Ich habe diesen Trick ein paar Mal für den kurzfristigen Zugriff verwendet. Offensichtlich ist dies eine kurzfristige Umgehungslösung und nicht für Produktumgebungen geeignet und funktioniert nur, wenn Sie wissen, woher Ihr Internetverkehr kommt.

Verwandte Themen