2017-07-19 53 views
1

我的安全組入站規則內的連接如下:亞馬遜安全組 - 不能從其他安全組

WebAccess的

HTTP TCP 80 0.0.0.0/0

SSH TCP 22 0.0.0.0/0

and

DB

MYSQL /極光TCP 3306 SG-0252186b(WebAccess的)

我的情況是設置這樣的:

實例1,Web服務器 - 安全組WebAccess的

實例2,Web服務器 - 安全組WebAccess

實例3,DB服務器 - 安全 組DB

如果我的理解是正確的,任何人都應該能夠訪問HTTP和SSH對我的Web服務器,只有WebAccess的組的成員實例應該能夠訪問數據庫服務器。但是,數據庫服務器無法從Web服務器訪問。

當我將3306規則更改爲打開以允許來自任何人的入站時,我可以很好地訪問它(也可以從我的本地計算機上按預期操作)。

請有人能幫我理解我要去哪裏錯了嗎?

謝謝, 克里斯

+0

這聽起來像您已將數據庫公開,並且EC2實例正在嘗試訪問互聯網並返回AWS訪問數據庫。嘗試在其中一個EC2實例上執行數據庫主機名的nslookup,並查看它是否解析爲VPC地址範圍中的IP地址,或者解析爲公用IP。 –

+1

也嘗試明確地將實例的內部IP地址添加到數據庫安全組。這主要是爲了排除故障。 –

+1

根據@Mark B,您如何識別數據庫服務器到您的應用程序?你使用DNS名稱還是IP地址?你可以把它展示給我們嗎?所有實例是否在同一個VPC中?數據庫服務器是由Amazon RDS提供的,還是您自己在Amazon EC2上創建的? –

回答

0

當您將安全組更改爲0.0.0.0/0 您可以從您的桌面,這意味着您的實例已供公衆查閱已啓用訪問數據庫以後(即擁有公共知識產權)。當你連接到這樣一個實例時,流量會離開子網到互聯網並返回。因此,流量不再來自你的網絡實例,而是來自互聯網。在這種情況下,您需要使用Web實例的公有IP。

另請注意,您提出問題/評論的方式,建議您使用RDS的IP而不是主機名。如果您使用單個AZ RDS部署,這將起作用。如果您使用多可用區或將此RDS實例轉換爲多可用區(HA設置),它將不起作用。原因是,在故障轉移期間,AWS將DNS名稱更新爲指向新的主服務器。如果您的應用程序使用IP,則不會發生故障切換。

更糟糕的是:如果你使用的IP和單AZ現在,但後來決定升級到多AZ您的應用程序將繼續工作,直到第一個故障轉移(最有可能是由於保養)