2016-08-10 26 views
-1

我在Amazon EC2上有兩個簡單的VPC:SFTP服務器和Web服務器。我希望將來自Internet的端口22的傳入流量路由到SFTP服務器,並將端口80和443路由到Web服務器。將端口路由到使用Amazon VPC的實例

我很難找到如何做到這一點。使用所有硬件路由器都非常簡單。

任何人都可以指向我的文檔/示例/或只是告訴我該怎麼做?

編輯: 我不清楚,我想遠程主機能夠做出一個IP地址的請求,但在不同的端口,並且有路由到不同的情況不同的端口;我已經設置了我的安全組,以便我可以接受每個實例的公共IP地址的流量。

回答

1

以下是您需要遵循的步驟來實現您的用例。

  1. 正如你所說的兩臺服務器都在VPC你需要確保它們與連接到它的互聯網網關公共子網 (這可以 在私人子網來實現太多,但會變得更加複雜你 處理)欲瞭解更多信息,檢查SFTP這個 https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario1.html

  2. EC2服務器1,你需要通過添加您的IP地址或開放的世界規則以打開安全組中的SSH端口22。然後您可以使用您的首選SFTP客戶端的SFTP。

  3. EC2服務器2用於端口80和443.您需要在您的實例的安全組中添加兩條規則。檢查下面的截圖。一旦完成,您將能夠通過端口80和443路由http流量。

有關安全組的更多信息,請參閱此處。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

enter image description here

關於你的編輯。你必須在實例前面運行一個實例。

將HTTP代理添加到此新創建的實例。然後使用IP表來實現端口重定向。檢查下面的IP表配置你需要添加到該服務器。假設你的HTTP代理服務器是服務器1.端口22服務器是服務器2,端口80和443服務器是服務器3.因此,服務器1 IP表將具有以下規則。

#!/bin/sh 

    echo 1 > /proc/sys/net/ipv4/ip_forward 

    iptables -F 
    iptables -t nat -F 
    iptables -X 

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <Server3-IP>:80 

    iptables -t nat -A POSTROUTING -p tcp -d <Server3-IP> --dport 80 -j SNAT --to-source <Server1-IP> 

    iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination <Server2-IP>:80 

    iptables -t nat -A POSTROUTING -p tcp -d <Server2-IP> --dport 22 -j SNAT --to-source <Server1-IP> 

    iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination <Server3-IP>:80 

    iptables -t nat -A POSTROUTING -p tcp -d <Server3-IP> --dport 443 -j SNAT --to-source <Server1-IP> 
+0

我明白,我怎麼可以設置安全組允許訪問實例的單個公共IP地址。我希望能夠將請求路由到單個IP地址(我的Internet網關的IP地址?),如1.2.3.4,但1.2.3.4:22轉到一個實例,1.2.3.4:80轉到另一個實例。 – juacala

+1

如果您希望他們使用相同的DNS名稱,則需要設置運行haproxy或squid等的實例,以根據端口將流量路由到所需的後端實例。 –

+0

這個答案沒有解決OP對所有3個端口都有單個IP地址的使用情況。 –

0

直至今日,亞馬遜彈性負載平衡器具有支持請求路由到基於東西不同EC2實例如HTTP路徑,和端口一個新的「應用負載平衡器」模式。

要這樣設置,請執行下列操作:

  1. 創建一個新的ELB,使用新的「應用負載平衡器」模式。
  2. 爲端口22創建一個目標組。
  3. 將您的EC2實例作爲SSH目標添加到此目標組。
  4. 的端口80創建另一個目標羣體和443
  5. 添加您的EC2實例,這將是HTTP/HTTPS的目標,以這個目標羣體。

使用這個系統,SSH請求到ELB將被轉發到SSH實例,和HTTP/HTTPS的ELB請求將被轉發到Web服務器

+0

謝謝。我將其標記爲答案,因爲它不需要啓動額外的實例 – juacala

+0

@juacala使用此應用程序負載平衡器,您不能通過該負載平衡器發送SSH請求,它僅適用於HTTP和HTTPS請求。而且您也無法使用單個IP地址,因爲Load Blancers IP地址不是靜態的,而是動態的。 – error2007s

+0

ELB(現在是ALB)不僅適用於HTTP和HTTPS連接。 ELB可以處理任何TCP/IP連接(因此是TCP偵聽器)。許多人將其用於SSH。儘管它可能沒有使用單個靜態IP地址,但它確實使用了一個CNAMEable或ALIASable端點。 –