iT邦幫忙

0

[AWS] 請教如何讓Linux EC2 instance 直接對應到一個外部的 IP address?

  • 分享至 

  • xImage

想請教各位大大,關於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呢? 謝謝~

zanhsieh iT邦新手 4 級 ‧ 2019-07-01 02:35:56 檢舉
方案一:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html
方案二:
curl http://169.254.169.254/latest/meta-data/public-ipv4 -> cloud-init 或者 cron on boot 腳本
yenct iT邦新手 5 級 ‧ 2019-07-01 09:50:05 檢舉
您好,我研究看看,謝謝您。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
Ray
iT邦大神 1 級 ‧ 2019-06-30 23:25:21

先問: 甚麼樣的應用程式, 不能透過 NAT 的方式轉換來運作?
我好像還沒見過這樣的設計, 除了特別將 IP 綁定軟體授權以外...

若不是在公有雲上, 使用這樣的軟體, 你們都怎麼設計防火牆?

看更多先前的回應...收起先前的回應...
yenct iT邦新手 5 級 ‧ 2019-07-01 00:00:09 檢舉
  1. 若不是在公有雲上,就只能在私有雲裡面的電腦可以使用。
  2. 僅開這軟體所接受的port號。

所以,如果要對外,這軟體就必須有一台獨立電腦是Public IP的。請不用問能否請工程師修改,目前無法。 @@"

但AWS上面我找不到這樣的設定或調整。
阿里雲上的Instance設定是允許直接assign一個public IP到該instance上,就可以解決此問題,但目前沒打算使用阿里雲。
Azure與GCP我不確定可不可以,沒特別研究。

Ray iT邦大神 1 級 ‧ 2019-07-01 01:15:20 檢舉

我猜, 這可能不是 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 了...

此外, 我也好奇: 除了阿里雲可以這樣用之外, 騰訊雲和百度雲也可以這樣指定嗎?

yenct iT邦新手 5 級 ‧ 2019-07-01 09:49:46 檢舉

您好,確實不是Web based 的應用程式。
用VPN可能不是這麼適用在此情境。

我們的需求有點類似在防火牆的DMZ上架設這個服務,但機器本身需直接指派一個Public IP,不能是private IP,這樣程式本身才能正常運作且能讓外部使用者使用到這台的服務。

但目前看來AWS都是把所有的VM會放入一個VPC中,裡面都給的是private IP,再透過AWS的機制讓Public IP對應到private IP的VM,有點像是NAT的方式。

騰訊雲與百度雲這兩個目前也都沒有試過。

yenct iT邦新手 5 級 ‧ 2019-12-19 14:15:39 檢舉

[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或設定等等之類的限制吧。。。

目前看來:

  1. AWS VPC 無法
  2. CHT 無法
  3. 阿里雲 經典網路 可以 / VPC網路 無法
Ray iT邦大神 1 級 ‧ 2019-12-19 15:09:46 檢舉

如果是 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

yenct iT邦新手 5 級 ‧ 2020-01-15 14:28:41 檢舉

謝謝raytracy您的分享。

我要發表回答

立即登入回答