2013-06-20 13 views
5

Desidero accedere a alcune istanze nella mia subnet privata tramite EIP. C'è un modo? So che non ha molto senso. Ma lascia che ti spieghi in dettaglio.AWS - Accesso alle istanze nella subnet privata tramite EIP

Ho un VPC con 2 sottoreti.

1) 192.168.0.0/24 (sottorete pubblica) viene PEI ad esso

2) 192.168.1.0/24 (sottorete privata)

C'è un'istanza NAT tra essi per consentire il privato le istanze hanno accesso in uscita a Internet. Tutto funziona bene come indicato qui: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

Ma ora, per un periodo di tempo temporaneo, ho bisogno di indirizzare le istanze sulla sottorete privata direttamente da Internet utilizzando un EIP. È possibile impostare nuove tabelle di rotte solo per quella particolare istanza? o qualsiasi altra cosa? Qui ci sono delle limitazioni:

1) Non ci può essere alcuna interruzione su tutte le istanze sulla sottorete privata

2) Quindi va da sé, non è possibile creare una nuova sottorete e spostare questi casi Là.

Dovrebbe essere semplice come -> Allegare. Uso . Rimuovere. L'unico altro modo in cui mi trovo al momento è una sorta di port forwarding su iptables da istanze sulla subnet pubblica (che hanno EIP) a qualsiasi istanza sulla subnet privata ... Ma questo sembra disordinato.

Qualsiasi altro modo per farlo?

risposta

9

Naturalmente, la roba nella sottorete privata si trova nella sottorete privata perché non dovrebbe essere accessibile da Internet. :)

... Ma sono sicuro che hai ragioni, quindi ecco qui:

In primo luogo, no, non è possibile farlo in un semplice allegare → uso → modo rimuovere, perché ogni sottorete ha esattamente un percorso predefinito e che punta all'oggetto igw (subnet pubblica) o all'istanza NAT (subnet privata). Se si associa un IP elastico a una macchina nella sottorete privata, il traffico in entrata arriverebbe all'istanza, ma il traffico di risposta in uscita verrà reindirizzato attraverso l'istanza NAT, che potrebbe essere scartata o modificata, poiché non è possibile percorso asimmetricamente attraverso NAT, e questo è quello che succederebbe qui.

Se i servizi sono servizi TCP (HTTP, desktop remoto, bla bla) allora qui è un pezzo di aggiustamenti a breve termine che avrebbe funzionato molto bene ed evitare i fastidi di iptables ed esporre solo il servizio specifico è necessario:

Avvia una nuova istanza micro con ubuntu 12.04 LTS nella sottorete pubblica, con un EIP e un gruppo di sicurezza appropriato per consentire il traffico Internet in entrata alle porte desiderate. Consenti accesso ssh alla nuova istanza. Consentire l'accesso da quella macchina alla macchina interna. Poi:

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

Supponendo che si desidera inviare in arrivo il traffico sulla porta 80 alla porta 80 su un'istanza privata:

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

Done. Avrai un log di ogni connessione e disconnetterai con numeri di porta e byte trasferiti nei tuoi syslogs.Lo svantaggio è che se il tuo host privato sta guardando l'IP della macchina connessa vedrà sempre l'IP interno dell'istanza della rete privata.

È sufficiente eseguirlo con sudo se si sta vincolando a una porta inferiore a 1024 poiché solo la radice può eseguire il binding ai numeri di porta inferiori. Per fermarlo, trova il pid e uccidilo, oppure sudo killall redir.

L'utility spettrale redir fa la sua magia nello spazio utente, rendendola più semplice (imho) di iptables. Imposta una presa di ascolto sulla porta designata --lport. Per ogni connessione in entrata, si arresta, stabilisce una connessione in uscita a --caddr su --cport e lega insieme i due flussi di dati. Non ha consapevolezza di cosa sta succedendo all'interno del flusso, quindi dovrebbe funzionare per qualsiasi cosa TCP. Questo significa anche che dovresti essere in grado di passare un bel po 'di traffico attraverso, nonostante l'uso di un Micro.

Quando hai finito, elimina la microistanza e la rete torna alla normalità.

2

A seconda delle esigenze, si potrebbe finire per inserire un percorso statico diretto verso l'igw.

Ad esempio, se si conosce la fonte su Internet da cui si desidera consentire il traffico, è possibile inserire la route x.x.x.x/32 -> igw nella tabella di routing privata. Poiché la tua istanza ha un EIP collegato, sarà in grado di raggiungere l'igw, e il traffico verso quella destinazione andrà dove dovrebbe e non il NAT.

Ho usato questo trucco alcune volte per l'accesso a breve termine. Ovviamente questa soluzione è a breve termine e non adatta agli ambienti di produzione, e funziona solo se sai da dove viene il tuo traffico Internet.

Problemi correlati