Có cách nào để lấy địa chỉ DNS công cộng của một thể hiện không?


18

Tôi có một dự án trong đó tôi cần cập nhật các tệp cấu hình mỗi khi một phiên bản EC2 được khởi động với địa chỉ DNS công cộng của phiên bản hiện tại. Tôi sẽ sử dụng Perl hoặc Sed cho việc này, vì vậy đó không thực sự là câu hỏi, nhưng câu hỏi thực sự là: có cách nào để tôi có thể xác định địa chỉ DNS công khai của cá thể không? Có một api EC2 mà tôi có thể truy cập từ thể hiện để xác định nó không?

Câu trả lời:


27

Có. Từ bên trong thể hiện, bạn có thể chạy:

curl http://169.254.169.254/latest/meta-data/public-ipv4

Để có được tên máy chủ DNS công cộng, bạn có thể thay đổi tên đó thành:

curl http://169.254.169.254/latest/meta-data/public-hostname

Bạn cũng có thể lấy IP riêng:

curl http://169.254.169.254/latest/meta-data/local-ipv4

Là một lưu ý phụ, bạn có thể kiểm tra kỹ nó với một trang web không phải AWS trên internet, như http://ip4.me

#!/bin/bash

pubip=$( curl http://ip4.me 2>/dev/null | sed -e 's#<[^>]*>##g' | grep '^[0-9]' )

echo $pubip

Nói chung, điều đó sẽ hoạt động để kiểm tra "IP công cộng" của bất kỳ hệ thống NATed nào hoặc để tìm IP proxy công cộng của bạn, v.v.

Và đây là một liên kết tốt để đọc các loại thông tin bạn có thể nhận được từ API của Amazon: http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your- amazon-ec2-dụ /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) Bạn, thưa ngài, là kim loại.
Naftuli Kay

rất vui được giúp đỡ :)
Tim Kennedy

2

Tôi xác định hàm này bên trong .bashrc của mình để lấy ip và dns công khai:

export PUBLIC_DNS=`curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null`
export PUBLIC_IP=`curl http://169.254.169.254/latest/meta-data/public-ipv4 2>/dev/null`

function get-pub() {
  if [ $# -ne 1 ]; then
    echo "Invalid number of arguments"
    return 1
  else
    case $1 in
      dns)
        echo $PUBLIC_DNS
        ;;
      ip)
        echo $PUBLIC_IP
        ;;
      *)
        echo $"Usage: get-pub {dns|ip}"
        return 2
    esac;
  fi
  return 0
}

1

Bạn có thể cài đặt và định cấu hình AWS CLI ( aws configure) và sử dụng lệnh sau:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.