取得 EC2 IP 的2種方法
前言
緣起
系統有一項功能需求,當新開啟的 EC2 Instance 需要自動地將本身的 IP 向系統註冊登錄,該如何讓 EC2 Instance 取得自己本身的 Private IP 和 Public IP address 呢?
最快的方法是在 EC2 上透過 curl
特定位置來查詢自身的 Metadata,除此之外,在 linux 環境下可透過 ip
或 ifconfig
指令來取得,算是比較通用的作法。
這邊整理上述2種做法,同時複習一下在 Linux 上查詢 IP 的相關指令。
測試環境
- EC2 Instance 作業系統:CentOS 7
- iproute2 工具包 v4.8 (
ip
指令)
如何取得 EC2 Instance 的 Private IP address
方法1:使用
ifconfig
指令1/sbin/ifconfig eth0 | grep 'inet ' | cut -f2 | awk '{ print $2}'方法2:SSH 登入 EC2 Instance 查詢 meta-data 資訊
1curl https://169.254.169.254/latest/meta-data/local-ipv4
如何取得 EC2 Instance 的 Public IP address
方法1:使用外部的查詢 IP 網頁來獲知自己的 IP 為何,例如
1curl ifconfig.co方法2:AWS CLI
aws ec2 describe-instances
搭配jq
取得 EC2 資訊1aws ec2 describe-instances --filters Name=private-ip-address,Values=${ip} | jq -r '.Reservations[].Instances[].NetworkInterfaces[].Association.PublicIp'方法3:SSH 登入 EC2 Instance 查詢 meta-data 資訊
1curl https://169.254 /latest/meta-data/ -ipv4
參考資料
- EC2 Instance Metadata
- get-your-private-and-public-ip-from-the-linux-terminal
- IP Addressing in Your VPC
- Amazon EC2 Instance IP Addressing
ip 指令介紹
ip
指令 (/bin/ip
) 是 Linux 上有關 TCP/IP 流量控制與查詢的一系列工具 (工具包名稱是 iproute2
)
其功能與老牌但已經不在維護的 ifconfig
(/sbin/ifconfig
) 相似,我們可以使用 ip
取代 ifconfig
指令。
在 CentOS 上需要另外安裝嗎?
不需要另外安裝,ip
指令在 RHEL 及 CentOS 也是預設安裝。而除了查詢網路設定外,也可以用作設定網路,以下是 ip 指令的一些常見用法。
常用的 ip 指令
查詢 ipv4 或 ipv6 的 IP address 資訊。
ipv4:
ipv6:
查詢個別網卡的資訊(網卡名稱及 IP address),有以下三種方式:
|
|
備註:ip 指令的完整參數
|
|
備註:ifconfig 指令的完整參數
|
|
備註:hostname 指令的完整指令
|
|
參考資料
Conclusion
- 取得 EC2 的 IP 最快的方法是在 EC2 上透過
curl
特定位置來查詢自身的 Metadata - 若要比較通用的作法,可在 linux 環境下可透過
ip
或ifconfig
指令來取得。