想請教各位大大,關於AWS上的EC2 intance IP address
我想要達到的目的是,當我的EC2 Instance是裝Linux時,我希望在Linux裡面,對應的IP address是public IP address,而不是private IP address,我該怎麼修改設定呢?!
因為不論在建立一個EC2 instance是有指定一個Public IP address (Elasic IP)或沒有,在instance建立之後,裡面都是配一個private IP address,即便設定了一個Public IP給這台EC2,但從shell console來解析自己的instance,還是private IP,但是對於某些應用程式來說,沒法透過像是NAT的方式轉換來運作,會無法正常提供服務給外部使用者。
該怎麼做,才能讓AWS Linux EC2 instance,在內部設定上,也是直接對到Public IP address呢? 謝謝~
先問: 甚麼樣的應用程式, 不能透過 NAT 的方式轉換來運作?
我好像還沒見過這樣的設計, 除了特別將 IP 綁定軟體授權以外...
若不是在公有雲上, 使用這樣的軟體, 你們都怎麼設計防火牆?
所以,如果要對外,這軟體就必須有一台獨立電腦是Public IP的。請不用問能否請工程師修改,目前無法。 @@"
但AWS上面我找不到這樣的設定或調整。
阿里雲上的Instance設定是允許直接assign一個public IP到該instance上,就可以解決此問題,但目前沒打算使用阿里雲。
Azure與GCP我不確定可不可以,沒特別研究。
我猜, 這可能不是 web based 的應用軟體?
如果是用常見的 Web Server 運作的話, 我想不出有甚麼理由, 寫出來的軟體不能通過 NAT?
我印象中 AWS,GCP,Azure 的 VPC 好像都不能這樣做
回過頭來看, 其實你不需要膠著在:
讓 Server 上 Public IP
這件事情, 若如您 1. 所述, 私有雲裡面可以用的話, 其實你可以讓 Server 保持用 Private IP, 也不用指定 Public IP 給他, 但是請所有的 Client, 通通打 VPN 進 AWS 的 VPC, 這樣全部的 Client 就會跟 Server 是同一個 Subnet, 是 Flat route, 中間不會經過 NAT 了....
還有一個方法是:
改用純 IPv6 的 Public IP, 這樣就不會過 NAT 了...
此外, 我也好奇: 除了阿里雲可以這樣用之外, 騰訊雲和百度雲也可以這樣指定嗎?
您好,確實不是Web based 的應用程式。
用VPN可能不是這麼適用在此情境。
我們的需求有點類似在防火牆的DMZ上架設這個服務,但機器本身需直接指派一個Public IP,不能是private IP,這樣程式本身才能正常運作且能讓外部使用者使用到這台的服務。
但目前看來AWS都是把所有的VM會放入一個VPC中,裡面都給的是private IP,再透過AWS的機制讓Public IP對應到private IP的VM,有點像是NAT的方式。
騰訊雲與百度雲這兩個目前也都沒有試過。
[2019-12-19] 後續
結論:目前AWS上EC2確實無法讓這軟體(支援H.323/SIP protocol等相關的) 100%的功能運作。
這問題困擾了半年,但在11月的時候,有機會跟AWS的技術顧問尋求協助,在業務的協助下開了一個技術的support ticket。技術顧問有建議可以調整的部分包含了 source/distination check 的關閉 (預設是開啟的) / 允許更寬範圍的 UDP port - 1024~65535 (軟體原廠建議 3000-10000即可)
確實,在調整了這兩個部份的當天,我們的軟體確實能短暫的打通了任督二脈,原本無法使用的功能就突然可以運作了;但好景不常,當天測試完,關閉了VM,隔天再進行相同測試時,就打回原形了。 @@" (那。。。變動的那天為何可以?? 只能是個謎了)
另外,AWS VPC的firewall port session timeout時間,TCP是5天 (沒打錯,真的是5天),UDP是300秒。
有詢問顧問是否可以針對我們的VPC改變TCP session timeout的時間,我想將TCP縮短至30分鐘,但技術顧問說無法只針對我們VPC,只好作罷。。。(我有點懷疑是否是因為session timeout太長,被占用掉未釋放所至,但無法調整來驗證)
業務也尋求其他技術顧問的看法,結果最後就是告知目前AWS無法支援我們的軟體在VPC的EC2上運行。
另外,我們也在中華電信(CHT)的雲環境中測試,雖然CHT的雲環境可以提供直接網卡綁public IP的這類VM,但實際測試,也是發現部分功能無法運作。。。很神奇。。。但只能說,應該也還是雲端平台商它們firewall的topology或設定等等之類的限制吧。。。
目前看來:
如果是 SIP/H.323 的話, 那這樣聽起來就很合理了....
一般企業內的防火牆, 對於 SIP 協定過 NAT 的問題, 需要靠一個 ALG (Application Layer Gateway) 來協助中介處理, 所以他並不是單純只用 FW 內建的 Stateful Packet Filter 就可以解決掉...
但是雲上面的 FW 都沒有 ALG 機制, 因此也造成你缺少了中介轉換機能, 導致 SIP/H.323 功能不正常, 這點是可以預期的....
這問題很多年前就知道了:
Is ALG (Application Level Gateway) features supported in AWS Internet GW ?
但印象中 Asterisk, 3CX 的 IP-PBX 他們好像都可以用雲去跑...我想想有沒有甚麼可以在雲上面跑的 SIP ALG...
這裡有些原理和解法可以先參考:
NAT and VOIP
謝謝raytracy您的分享。