อินสแตนซ์ EC2 ไม่มี DNS สาธารณะ


299

ผู้ชายที่ฉันทำงานด้วยให้ข้อมูลรับรอง EC2 แก่ฉันเพื่อเข้าสู่คอนโซล EC2 ของเขา ฉันไม่ใช่คนที่ตั้งค่า อินสแตนซ์บางตัวแสดงชื่อ dns สาธารณะและอื่น ๆ มี DNS สาธารณะที่ว่างเปล่า ฉันต้องการที่จะเชื่อมต่อกับอินสแตนซ์ที่มี DNS สาธารณะที่ว่างเปล่า ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งเหล่านี้จึงปรากฏเป็นที่ว่างเปล่า


2
อินสแตนซ์ใน VPC มีหรือไม่ ตรวจสอบว่ามีค่าติดกับฟิลด์ VPC ID ในหน้าจอคำอธิบายอินสแตนซ์
David Levesque

1
ผมมีปัญหาเดียวกัน. อินสแตนซ์ของฉันอยู่ใน VPC และใน Subnet ฉันได้ตรวจสอบ DNS สาธารณะว่าพร้อมใช้งานแล้ว ฉันยังไม่ได้รับชื่อ DNS สาธารณะ ฉันเห็นได้ว่าในการกำหนดค่า VPC ของฉันมันพูดDNS hostnames: noแต่ฉันไม่สามารถเปลี่ยนค่านั้นและการเพิ่ม VPC ใหม่ไม่ได้ให้การเลือกเช่นกัน
ประแจ

ฉันมีปัญหาที่แตกต่างกันเมื่อติดตั้งmy-vpc , The DNS hostname: yes, แต่มันเป็นเพียงรหัสส่วนตัวเมื่ออินสแตนซ์เริ่มทำงาน ฉันสามารถรับ Public IP ได้เมื่อใช้ Elastic IP เท่านั้น
Chetabahana

1
สิ่งที่ช่วยฉันได้คือหยุดและเริ่มต้นอินสแตนซ์ที่ไม่มี IP / DNS สาธารณะ (การรีบูทไม่ช่วย) หลังจากเริ่มต้นอินสแตนซ์ใหม่จะได้รับ IP สาธารณะ
justadev

คำตอบ:


613

ฉันมีปัญหาเดียวกันแก้ไขได้ ดูคำแนะนำทีละขั้นตอน:

  • ไปที่ console.aws.amazon.com
  • ไปที่ บริการ -> VPC
  • เปิดVPC ของคุณ
  • เลือกVPC ของคุณเชื่อมต่อกับ EC2 ของคุณและ
  • เลือกการกระทำ => แก้ไขชื่อโฮสต์ DNS ---> เปลี่ยนชื่อโฮสต์ DNS: เป็นใช่

หวังว่านี่จะช่วยได้!

ไชโย


6
นี่คือคำตอบที่ดีที่สุด ควรตรวจสอบ!
Alberto Spelta

2
ตอนนี้ส่วนที่มี VPC เรียกว่าระบบเครือข่าย และในการแก้ไขคุณคลิกขวาที่ VPC
nasch

89
+1 ตอนนี้คุณต้องตั้งค่าเครือข่ายย่อยของคุณเพื่ออนุญาตการกำหนดไอพีสาธารณะโดยอัตโนมัติ คลิกขวาที่ซับเน็ตของคุณ> แก้ไขการกำหนดไอพีสาธารณะโดยอัตโนมัติ> ทำเครื่องหมายที่ช่อง
อดัมเฮ้

1
แม้เมื่อฉันพยายามเพิ่ม Elastic Ip แต่ก็ไม่ทำงานจนกว่าตัวเลือกในการเปลี่ยนชื่อโฮสต์ dns นั้นจะถูกตั้งค่าเป็นใช่
RenatoSz

5
@Vignesh ฉันไม่ได้รับ IP สาธารณะหรือ DNS สำหรับอินสแตนซ์ที่มีอยู่ การหยุดและเริ่มต้นใหม่ไม่ได้เปลี่ยนแปลงอะไรเลย สิ่งเดียวที่ทำงานได้คือการยกเลิกและสร้างอินสแตนซ์ใหม่
Y e z z

59

มีการตั้งค่าจริง ๆ ใน VPC ที่เรียกว่า "DNS Hostnames" คุณสามารถปรับเปลี่ยน VPC ที่มีอินสแตนซ์ EC2 อยู่และเปลี่ยนเป็น "ใช่" นั่นควรทำเคล็ดลับ

ฉันพบปัญหานี้เมื่อวานนี้และลองคำตอบข้างต้นจาก Manny ซึ่งไม่ได้ผล อย่างไรก็ตามการตั้งค่า VPC นั้นใช้งานได้สำหรับฉัน

ในที่สุดฉันก็เพิ่ม EIP และฉันใช้มันเพื่อเชื่อมต่อ


1
มีวิธีการทำเช่นนี้โดยไม่ทำการดัดแปลง VPC โดยรวมหรือไม่? ฉันต้องการ DNS สาธารณะสำหรับหนึ่งโหนดใน VPC แต่ไม่ต้องการให้มันนำไปใช้กับทุก ๆ โหนดที่มี IP แบบยืดหยุ่นใน VPC นั้น
Robbie Averill

2
ฉันคิดว่าคุณน่าจะสามารถเพิ่ม IP แบบยืดหยุ่นสำหรับโหนดนั้นได้หรือไม่?
Mike T

ใช่ แต่มันจะไม่แก้ไขภายในโดยไม่ต้องคำแนะนำของคุณในคำตอบ :-)
ร็อบบี้ Averill

ใช้ "ชื่อโฮสต์ DNS" ฉันสามารถดู DNS สาธารณะ
Sujit Dhamale

38

ฟังดูเหมือนอินสแตนซ์เปิดตัวใน VPC และในขณะที่ทำเช่นนั้นช่องทำเครื่องหมายสำหรับ Automatically assign a public IP address to your instancesไม่ได้ถูกทำดังนั้นอินสแตนซ์ไม่มี IP สาธารณะ

คุณสามารถกำหนด IP แบบยืดหยุ่นให้กับอินสแตนซ์นี้จากนั้นเข้าสู่ระบบโดยใช้ IP นั้น


1
ฉันพยายามเชื่อมต่อโดยใช้ไอพีสาธารณะกับสีโป๊ว แต่มันบอกว่า "เซิร์ฟเวอร์ปฏิเสธกุญแจของเรา" ฉันแปลงไฟล์. pem เป็นไฟล์. ppt โดยใช้ puttygen
user1456508

1
คุณใช้ชื่ออะไร AMI นี้คืออะไร นี่คือระบบปฏิบัติการอะไร
slayedbylucifer

3
มีวิธีกำหนด IP สาธารณะหลังจากข้อเท็จจริงหรือไม่ ฉันไม่เห็นวิธีแก้ไขการตั้งค่ารายละเอียดอินสแตนซ์
David Balažic

2
@slayedbylucifer แล้วอินสแตนซ์ที่หยุดทำงานล่ะ?
David Balažic

3
@ DavidBalažicเหมือนกัน สำหรับวงจรชีวิตของอินสแตนซ์คุณไม่สามารถแนบ pub IP Pub IP สามารถแนบได้เมื่อเปิดตัวเท่านั้น
slayedbylucifer

30

ในกรณีของฉันฉันพบคำตอบจากslayedbyluciferและคนอื่น ๆ ที่ชี้ไปที่เดียวกันนั้นถูกต้อง
แม้ว่าจะมีการตั้งค่าไว้DNS hostname: yesก็ตามไม่มีการกำหนด IP สาธารณะในmy-pvc (เฉพาะ Privat IP)

เป็นที่แน่นอนว่ารถยนต์กำหนด IP สาธารณะEnableจะเป็นชุดที่มี
หากไม่ได้เลือกไว้ค่าเริ่มต้นจะถูกตั้งเป็นUse subnet setting (Disable)

กำหนด IP สาธารณะ


23
  1. ไปที่ AWS Console
  2. ไปที่บริการและเลือก VPC
  3. คลิกที่ vpc
  4. เลือกตัวอย่างและคลิกที่การกระทำ
  5. เลือกแก้ไขชื่อโฮสต์ DNS คลิกที่ใช่

ในตอนท้ายคุณจะได้รับ DNS สาธารณะ


เพิ่ม Public DNS ให้กับ VPC พร้อมกับ Elastic IP ที่ได้รับมอบหมาย ด้วยเหตุผลบางอย่าง IP ยืดหยุ่นสามารถส่ง Ping ไปจากโลกภายนอกผ่านกลุ่มรักษาความปลอดภัย แต่การกดปุ่มแอปพลิเคชันเว็บเช่น Solr ล้มเหลวเว้นแต่จะมีการกำหนด DNS สาธารณะ ..
false_memories

22

นี่คือเคล็ดลับที่มีให้เพื่อแก้ไขปัญหาที่ไม่สามารถใช้งานได้:

เคล็ดลับ - หากอินสแตนซ์ของคุณไม่มีชื่อ DNS สาธารณะให้เปิดคอนโซล VPC เลือก VPC และตรวจสอบแท็บสรุป หากการแก้ไข DNS หรือชื่อโฮสต์ DNS ไม่ใช่คลิกแก้ไขและเปลี่ยนค่าเป็นใช่

สมมติว่าคุณทำเช่นนี้และคุณยังไม่ได้รับ Public IP จากนั้นไปที่ซับเน็ตที่เป็นปัญหาในหน้าจอผู้ดูแลระบบ VPC และคุณอาจพบว่า "กำหนด IP สาธารณะอัตโนมัติ" ไม่ได้ตั้งค่าเป็นใช่ ปรับเปลี่ยนการตั้งค่านั้นและฉันรู้ว่าคุณไม่ต้องการที่นี่นี่สร้างอินสแตนซ์ใหม่ในซับเน็ตนั้น เท่าที่ฉันสามารถบอกได้ว่าคุณไม่สามารถแก้ไขสิ่งนี้บนโฮสต์ฉันพยายามและลองเพียงแค่ยกเลิกมัน


22

สำหรับฉันปัญหาอยู่ในการตั้งค่าเครือข่ายย่อย

  1. เปิดhttps://console.aws.amazon.com/vpc
  2. ไปที่ซับเน็ตในเมนูด้านซ้าย
  3. เลือกเครือข่ายย่อยของคุณ
  4. แก้ไขการตั้งค่า IP ที่กำหนดโดยอัตโนมัติเพื่อเปิดใช้งาน

14

มันเกี่ยวข้องกับคุณสมบัติของ VPC ที่เรียกว่า "DNS Hostnames" คุณสามารถเปิดหรือปิดการใช้งาน ไปที่ VPC ภายใต้เมนูการกระทำให้เลือกรายการ "แก้ไขชื่อโฮสต์ DNS" จากนั้นเลือก "ใช่" หลังจากทำเช่นนั้น DNS สาธารณะของอินสแตนซ์ EC2 ควรจะปรากฏขึ้น


ฉันสามารถใช้ชื่อที่กำหนดเองได้ไหม? เพราะเมื่อฉันส่งอีเมลจากอินสแตนซ์ของฉัน Gmail จะแสดงเมลโดย ec2..ip ที่อยู่ ... ที่ตั้ง .. ฯลฯ แทนชื่อโดเมนของฉัน
mrid

@mrid คุณต้องเชื่อมโยง DNS ของคุณกับ DNS ที่สร้างขึ้นของ EC2 คุณสามารถทำได้ด้วยบริการ AWS Route53 ผู้จัดการโฮสติ้ง / DNS ของเรา
Lior Kirshner

10

เพียงเปิดตัวอินสแตนซ์อื่น (และลบอันที่มีปัญหาหากไม่ได้ใช้งาน) และตรวจสอบให้แน่ใจว่าครั้งนี้คุณทำเครื่องหมาย "กำหนดที่อยู่ IP สาธารณะให้กับอินสแตนซ์ของคุณโดยอัตโนมัติ" ถ้าไม่เช่นนั้นก็แนะนำโดย slayedbylucifer; กำหนด Elastic IP (EIP) ให้กับอินสแตนซ์แล้วล็อกอินโดยใช้ IP นั้น ระวังแม้ว่าถ้าคุณใช้งาน AWS เทียร์ฟรี EIP จะทำให้คุณเสียเงิน - นั่นคือหัวข้อทั้งหมด


6

ก่อนอื่นอาจมีสองเหตุผลสำหรับสิ่งนี้:

  1. คุณได้สร้าง VPC ของคุณเองและลืมเปิดใช้งาน DNS สาธารณะ

เพื่อแก้ปัญหานี้:

i) ไปที่คอนโซล AWS VPC และเลือก VPC ที่คุณสร้างขึ้น

ii) จากนั้นคลิกที่การกระทำแล้วเปิดใช้งานการแก้ไข DNS

            OR
  1. คุณยังไม่ได้เปิดใช้งานตัวเลือกการกำหนด IP สาธารณะในการกำหนดค่า EC2

ที่นี่คุณไม่สามารถเปลี่ยนการตั้งค่า; ดังนั้นสร้างภาพอมิจากนั้นสร้างอินสแตนซ์ใหม่จากนั้น


สิ่งเหล่านี้เป็นสาเหตุที่เป็นไปได้สองอย่างแน่นอนไม่ใช่ความเป็นไปได้เพียงสองอย่างเท่านั้น
Madbreaks

6

ที่นี่ฉันจะสรุปปัญหาที่พบบ่อยที่สุดที่เกิดขึ้น:

เมื่อคุณสร้าง VPC ที่กำหนดเองหากคุณต้องการทรัพยากร aws เช่นอินสแตนซ์ ec2 เพื่อรับที่อยู่ IP สาธารณะเพื่อให้อินเทอร์เน็ตสามารถสื่อสารกับพวกเขาได้อันดับแรกคุณต้องแน่ใจว่าอินสแตนซ์ ec2 นั้นเชื่อมโยงกับซับเน็ตสาธารณะของ VPC ที่กำหนดเอง ซึ่งหมายความว่าซับเน็ตมีเกตเวย์อินเทอร์เน็ตที่เชื่อมโยงอยู่ นอกจากนี้คุณต้องตรวจสอบให้แน่ใจว่ากลุ่มความปลอดภัยของ VPC ที่เกี่ยวข้องกับอินสแตนซ์ ec2 มีกฎที่อนุญาตการรับส่งข้อมูลขาเข้าไปยังพอร์ตที่ต้องการเช่น ssh, http และ https แต่นี่คือการตรวจสอบทั่วไปที่ยังคงเกิดขึ้น:

1) คุณต้องแน่ใจว่าเปิดใช้งานชื่อโฮสต์ DNS สำหรับ VPC

2) คุณต้องตรวจสอบให้แน่ใจว่าซับเน็ตสาธารณะที่เชื่อมโยงกับอินสแตนซ์ EC2 นั้นเปิดใช้งาน 'การกำหนดอัตโนมัติของ IP สาธารณะ' เปิดใช้งานแล้ว

3) หากมีการสร้างอินสแตนซ์แล้วคุณอาจจำเป็นต้องยกเลิกและสร้างอินสแตนซ์ใหม่สำหรับ IP สาธารณะและฟิลด์ DNS สาธารณะที่จะถูกบรรจุ


เมื่อไอพีสาธารณะนี้ปรากฏในอินสแตนซ์ที่เปิดตัวเราสามารถใช้ไอพีนี้เพื่อเชื่อมต่ออินสแตนซ์ผ่าน putty SSH
rinilnath

5

หลังจากตรวจสอบการตั้งค่า VPC และ Subnet อินสแตนซ์ EC2 ของฉันยังคงไม่มี DNS สาธารณะ หลังจากค้นหาความละเอียดได้หนึ่งวันในที่สุดฉันก็ค้นพบมัน

ฉันต้องสร้างที่อยู่ IP แบบยืดหยุ่นใหม่จากนั้นเชื่อมโยงกับอินสแตนซ์ของฉัน

จากแผงควบคุม EC2:

ไปที่Elastic IPจากแถบด้านข้าง

คลิกจัดสรรที่อยู่ใหม่จากนั้นจัดสรรจัดสรร

กลับไปที่ EC2 Dashboard ไปที่อินเทอร์เฟซเครือข่ายเครือข่ายการเชื่อมต่อ

เลือกอินสแตนซ์ EC2 ที่ไม่มี DNS สาธารณะ การดำเนินการ - ที่อยู่เชื่อมโยงที่อยู่รอง

อยู่ให้เลือกที่อยู่ IP ยืดหยุ่นใหม่

รองไปยังที่อยู่ IP เอกชนฟิลด์เลือกที่อยู่ IP ส่วนตัวไม่มี DNS สาธารณะ

คลิกเชื่อมโยงที่อยู่ที่อยู่รอง

อินสแตนซ์ EC2 ของคุณควรมี DNS สาธารณะ


1
นี่คือคำตอบสำหรับฉัน VPC ของฉันถูกตั้งค่าให้เปิดใช้งาน DNS สาธารณะแล้ว
Melicent

DNS สาธารณะปรากฏขึ้น แต่ยังไม่สามารถเชื่อมต่อผ่าน scp / putty แสดงการหมดเวลาการเชื่อมต่อ!
ShivarajRH

2

การเปลี่ยนการตั้งค่าชื่อโฮสต์ DNS สามารถทำได้โดยใช้ AWS CLI:

aws ec2 modify-vpc-attribute --vpc-id $vpc_id --enable-dns-hostnames '{"Value": true}'

(โดยที่ $ vpc_id คือ ID ของ VPC ที่แนบกับอินสแตนซ์ของคุณ)

ทันทีที่มีการอัปเดต VPC อินสแตนซ์จะได้รับ DNS สาธารณะ


2

สำหรับผู้ที่ใช้ CloudFormation คุณสมบัติหลักคือEnableDnsSupportและEnableDnsHostnamesซึ่งควรตั้งค่าเป็นจริง

VPC: {
    Type: 'AWS::EC2::VPC',
    Properties: {
      CidrBlock: '10.0.0.0/16',
      EnableDnsSupport: true,
      EnableDnsHostnames: true,
      InstanceTenancy: 'default',
      Tags: [
        {
          Key: 'env',
          Value: 'dev'
        }]
    }
  }

คำตอบที่เป็นประโยชน์ขอบคุณ FYI ค่าเริ่มต้นสำหรับ EnableDnsSupport เป็นจริงดังนั้นโดยทั่วไปจะเพียงพอที่จะระบุ EnableDnsHostnames: จริง
jarmod

1

หากอินสแตนซ์อยู่ใน VPC ตรวจสอบให้แน่ใจว่าทั้ง "การแก้ไข DNS" และ "ชื่อโฮสต์ DNS" ถูกตั้งค่าเป็น "ใช่" คุณสามารถทำได้ใน UI คอนโซลของ Aws HTH!


1

ไปที่คอนโซล VPC เลือก VPC ของคุณแล้วคลิกเมนู ACTIONS เลือกแก้ไขชื่อโฮสต์ DNS - เลือกใช่ ที่ควรแก้ไข



0

ฉันพยายามแก้ไข 'no DNS สาธารณะ' เมื่อ EC2 เริ่มทำงานฉันไม่สามารถเพิ่ม DNS สาธารณะได้

นี่คือแม้หลังจากทำตามขั้นตอนข้างต้นทำให้ mods เป็น VPC หรือ Subnet

ดังนั้นฉันต้องทำการแก้ไข subnet และ vpc ก่อนที่จะเริ่มต้นอินสแตนซ์อื่นและจากนั้นเริ่มอินสแตนซ์ใหม่

อินสแตนซ์ใหม่มี DNS สาธารณะ นั่นคือวิธีการทำงานสำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.