EC2 t2.micro instance has no public DNS

Amazon Ec2Amazon Vpc

Amazon Ec2 Problem Overview


I launched an Amazon Web Service (AWS) EC2 Instance, t2.micro, which must be launched into a VPC.

The VPC has Auto-assign Public IP set to Yes.

DNS resolution: Yes

DNS hostnames: Yes

But on the EC2 Dashboard, the instance still has a blank Public DNS and Public IP. I have tried to restart the instance several times, but it still has not been assigned a Public IP. The 5 Elastic IPs that came with our AWS account have already been used. Is it possible to get a Public IP assigned to a t2.micro instance without using Elastic IP?

I have read the post: https://stackoverflow.com/questions/20941704/ec2-instance-has-no-public-dns, but I do not have reputation points to be able to add a comment, so I am posting this as new question.

Amazon Ec2 Solutions


Solution 1 - Amazon Ec2

Rightclick on the VPC row in the VPC management console page and select "EDIT DNS Hostname". Set it to "Yes". It´s necessary to allow all the instances with the same VPC.

When you create the new instance in the "Step 3: Configure Instance Details", you need to enable "Auto-assign Public IP".

That´s it! :-)

Solution 2 - Amazon Ec2

The most common cause of no public IP address for your EC2 instance is that you're launching your EC2 instance in a private subnet. A private subnet means that any EC2 instances located in that subnet are not directly addressable from the public Internet. In other words, by definition, EC2 instances in a private subnet cannot have a public IP address.

This would explain why checking "public IP address" has no effect, and why you're unable to assign an Elastic IP address.

You can't just relocate an instance from one subnet to another. If you need to do that, you can create an AMI of your instance (right-click on the EC2 instance and click create image), and then launch a new instance from that AMI in a different subnet.

To determine if your subnet is private, look at the Route Table and see if you have an Internet Gateway route. Go to VPC > Subnets > Select a Subnet > Route Table tab. Look for an entry that has something like igw-***. If you see this, it's a public subnet. If you see something like eni-*** / i-***, it's a private subnet.

Solution 3 - Amazon Ec2

Also check:

VPC -> Subnets -> Subnet Actions -> Modify Auto-Assign Public IP

Solution 4 - Amazon Ec2

Face the same issue today. My EC2 instance has no public DNS thus I'm unable to connect via ssh.

I tried and success with these steps:

> - Go to VPC > Internet Gateways: make sure an Internet Gateway is created and attached to the EC2's VPC > > - Goto VPC > Route Tables, select a VPC route, navigate to Routes tab: add a new rule with > > ++ Destination: 0.0.0.0/0 > > ++ Target: select the created Internet Gateway > > - Goto VPC > Subnet > Route Table tab: click edit, change to the Route Table with destination 0.0.0.0/0 above

Done.

Solution 5 - Amazon Ec2

Hmm. So many responses. All of them on the order of "you did something wrong."

Newsflash: AWS doesn't always work correctly. I've used AWS for a very long time. I've personally witnessed instances that do not start, instances that do not stop, disk corruptions on deployed instances and network failures on running instances.

I've never seen a case where a public IP was not created. Until this morning. Now I can add that to the list.

For the record - here's what I verified :)

  • Three identical instances in the cluster
  • All instances are in the same availability zone
  • All instances have same VPC
  • VPC DNS settings are correct (resolution / hostnames enabled)
  • All instances have same subnet
  • Subnet has: a) public routing table; b) option enabled to create public IP
  • Plenty of IP space available in the subnet

Two of the three instances receive a public IP. The third does not.

So for any others in the future getting to this post: No, you are not insane. Yes, it is possible that AWS screws up.

In our case, manually terminating the problem instance and issuing a new cluster up..."fixed" the problem.

And - I upvoted the answer that indicated a "launch more like this" from a STOPPED instance had an impact on public IP. Not because it is the correct answer (it is not) but because it demonstrates an admirable response to an otherwise inexplicable situation: trial and error / experimentation. The good old "Gee, what happens if I try this...". As cloud professionals: If all other standard troubleshooting steps fail and the only alternative is to blow away the instance (or subnet, or Lambda function, or DynamoDb, or SNS queue; whatever the failing resource) then it's wise to think outside the box and try other actions.

In other words: keep an open mind.

Solution 6 - Amazon Ec2

There are many possible reasons. Check the follow.

You need to have a VPC created.

The DNS resolution and DNS hostnames should be enabled.

Choose your VPC -> Actions -> Edit DNS resolution -> enable
Choose your VPC -> Actions -> Edit DNS hostnames -> enable

Into the VPC maybe you need a private and public subnet.

In the private subnet, you need to have a NAT Gateway associate to this. In the public subnet, you need to have an Internet Gateway associate to this.

You need to enable the auto-assign IP for your public subnet.

Choose the public subnet -> Actions -> Modify auto-assign IP settings -> enable

Later when you launch a new instance in Step 3: Configure Instance Details.

You should choose your VPC and your public subnet. And in the "Auto-assign Public IP" section choose "Use subnet setting (Enabled)"

I think that that should solve your problem...

Solution 7 - Amazon Ec2

Go to VPC -> Subnets And make sure that the Auto-assign public IPv4 address is set to YES

Solution 8 - Amazon Ec2

I had the same issue. The reason of my issue turned out to be that I was using a route table which was not associated with a subnet.

enter image description here

After I changed my subnet, my instances were assigned public ips.

Solution 9 - Amazon Ec2

After creating a Subnet - make sure the Auto-assign public IPv4 setting is set to Yes or Enabled. After making sure the above setting is turned on - then launch the EC2 instance. If the above setting is not enabled after Subnet creation - the EC2 instance will be treated as Private and won't have a public IPV4 address.

Solution 10 - Amazon Ec2

My big "gotcha" on this was when creating a VPC & Subnets from a CloudFormation stack, my Subnets were missing the Property "MapPublicIpOnLaunch" : true.

Solution 11 - Amazon Ec2

When I use "launch more like this" option from a STOPPED instance, I'll get a new instance without a public ip. But if I "launch more like this" from a running instance, the new instance has a public ip.

Solution 12 - Amazon Ec2

Most likely, the public subnet has no enabled feature for "Auto-assign IPv4". It is selected as "No". And during your instance creation process the default option is "Use subnet setting (Enabled)". That's why newly issued instances cannot get public IP address.

Go VPC dashboard and click Subnets. Select a public subnet and select Modify auto-assign IP settings from Actions list and check Auto-assign IPv4. After saving your changes, your instances will get public IP automatically.

Solution 13 - Amazon Ec2

My Observation :

You need to enable the auto-assign IP for your public subnet. Choose the public subnet -> Actions -> Modify auto-assign IP settings -> enable

Only after the above is done, then launch an EC2 instance and you will start seeing public IP assigned. Once an EC2 instance created without above setting enabled, that EC2 will not have public IP assigned even after reboot , it already considered that subnet to be private. Hope this helps!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJ21042View Question on Stackoverflow
Solution 1 - Amazon Ec2Laura LiparuloView Answer on Stackoverflow
Solution 2 - Amazon Ec2Josh PadnickView Answer on Stackoverflow
Solution 3 - Amazon Ec2Adam JimenezView Answer on Stackoverflow
Solution 4 - Amazon Ec2Trung LaiView Answer on Stackoverflow
Solution 5 - Amazon Ec2user1318024View Answer on Stackoverflow
Solution 6 - Amazon Ec2Jose NView Answer on Stackoverflow
Solution 7 - Amazon Ec2Nathan BView Answer on Stackoverflow
Solution 8 - Amazon Ec2pancView Answer on Stackoverflow
Solution 9 - Amazon Ec2Prasad PandeView Answer on Stackoverflow
Solution 10 - Amazon Ec2dewhackerView Answer on Stackoverflow
Solution 11 - Amazon Ec2xyzView Answer on Stackoverflow
Solution 12 - Amazon Ec2Ali Emre ÇakmakoğluView Answer on Stackoverflow
Solution 13 - Amazon Ec2user12996845View Answer on Stackoverflow