2013-06-20 32 views
5

我想使用EIP訪問我的私有子網中的幾個實例。有沒有辦法?我知道這沒有多大意義。但讓我詳細解釋一下。AWS - 使用EIP訪問私有子網中的實例

我有一個2個子網的VPC。

1)192.168.0.0/24(公共子網)具有連接到它的電子信息產品

2)192.168.1.0/24(私人子網)

有一個NAT實例之間的這些以允許私人實例具有出站訪問互聯網的權限。一切工作正常,因爲在這裏提到:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

但現在,我需要在一個臨時的時間直接從互聯網使用EIP專用子網上的實例。 這可能是通過爲這個特定實例單獨設置新的路由表嗎?還是其他什麼? 這裏有侷限性:

1)不能有對私人子網

2在任何情況下,任何停機時間),因此不用說,我不能創建一個新的子網和移動這些實例那裏。

它應該像 - > Attach一樣簡單。使用 。去掉。 我現在唯一的另一種方式是在iptables上從公有子網(具有EIP)的實例到私有子網上的任何實例的某種端口......但是這看起來很亂。

還有其他的辦法嗎?

回答

9

當然,私有子網中的東西在私有子網中,因爲它不應該從Internet訪問。 :)

但是...我敢肯定,你有你的理由,所以這裏有雲:

首先,不,你不能在一個簡單的連接→使用→刪除的方式做到這一點,因爲每個子網只有一條默認路由,並且指向igw對象(公有子網)或NAT實例(專用子網)。如果將彈性IP綁定到私有子網中的計算機,則入站流量將到達實例,但出站回覆流量將通過NAT實例路由回去,該實例會丟棄或破壞該實例,因爲您無法通過NAT不對稱路由,這就是在這裏會發生的事情。

如果你的服務是TCP服務(HTTP,遠程桌面,內容非常重要),那麼這裏的一塊短期兩輪牛車的,將工作非常漂亮和避免的iptables的麻煩和揭露只有特定的服務,您需要:

在公有子網中使用ubuntu 12.04 LTS啓動一個新的微型實例,並使用EIP和適當的安全組來允許入站Internet流量到達所需的端口。允許你自己訪問新的實例。允許從該機器訪問內部機器。然後:

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

假設你想進入的80端口發送到端口80上的私有實例:

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

完成。您將擁有每個連接的日誌,並斷開與系統日誌中傳輸的端口號和字節的連接。缺點是,如果你的私人主機正在查看連接機器的IP,它總會看到私有網絡實例的內部IP。

如果您綁定到低於1024的端口,則只需使用sudo運行它,因爲只有root可以綁定到較低的端口號。要停止它,找到pid並殺死它,或者sudo killall redir

漂亮的小redir實用程序在用戶空間中發揮其魔力,使其比iptables更簡單(imho)。它在指定的端口--lport上設置一個偵聽套接字。對於每個入站連接,它自行分叉,建立到--caddr的出站連接--cport,並將兩個數據流連接在一起。它沒有意識到流內部發生了什麼,所以它應該適用於任何TCP。這也意味着你應該能夠通過相當多的流量,儘管使用了Micro。

完成後,扔掉微型實例,網絡恢復正常。

2

根據您的要求,您最終可能會將靜態路線直接輸入igw。例如,如果您知道您想在其中允許流量的Internet上的源,則可以將路由x.x.x.x/32 - > igw放入您的私有路由表中。由於您的實例具有附加的EIP,因此它將能夠到達igw,並且流向該目的地的流量將會到達應該的位置,而不是NAT。

我幾次使用這個技巧來進行短期訪問。很明顯,這是一個短期的解決方法,不適合刺激環境,只有在知道您的互聯網流量來自何處時纔有用。