37

The server works fine via the Amazon assigned DNS entry, but I cannot reach it (using a browser) via the Elastic IP address Amazon assigned the box. Ping does not work either. I am trying to confirm it is reachable before I add the IP address to my own DNS entries.

migrated from stackoverflow.com Feb 3 '12 at 16:51

This question came from our site for professional and enthusiast programmers.

  • 1
    Are you sure you're using your elastic IP and not your private, could-local IP? – Piotr Justyna Feb 3 '12 at 16:34
  • @Robert - Hi, well the aws.*** address will not lookup via ping, (but works in the browser) so I am actually at a loss on how to find out. I tried ping and I tried a few internet sites that do a lookup. – Guido Anselmi Feb 3 '12 at 16:42
  • @Piotr - Yep. It's the "Elastic IP Address" not the Private IP Address. It also is used by Amazon in the header for the status tabs. – Guido Anselmi Feb 3 '12 at 16:43
  • Guido, does it have a public DNS and instance ID assigned? – Piotr Justyna Feb 3 '12 at 16:46
  • @Piotr - Yes. And the public DNS is reachable via a browser. Currently I am working behind a firewall, not sure if that will affect.....just attempted to ping a known site (msn.com) and that failed. Tethering my phone... – Guido Anselmi Feb 3 '12 at 17:12
37

Things to check:

  • Your elastic IP associated with your instance?
  • Your security group of instance permits incoming connections?
  • Your instance firewall permits incoming connections?
  • Your application listens?
  • Was security group for me, thanks! They never mentioned this in any AWS tutorial. :( – emotality Aug 28 '16 at 21:35
  • 1
    Other thing to check: try restarting EC2 instance. This did the trick for me (the elastic IP was associated with the instance while it was running). – nedned Feb 23 '17 at 4:27
  • For me it was also restarting the instance, worked magically! – Artipixel Sep 3 '18 at 9:59
  • I'm having the same issue as OP. I checked point 1, 2, 4 in the answer, also rebooted the EC2 instance. How do I check the 3rd point "Your instance firewall permits incoming connections"? Aren't incoming connections allowed by EC2 instance firewall? – Indominus Feb 24 at 17:15
26

As others mentioned, the security group for your EC2 instance may not allow the HTTP port.

First,find the Security Group your instance is using.

enter image description here

Then, under Network & Security, go to the Security Groups section. Select your instance's security group and add an Inbound Custom TCP rule for Port range 80.

Security Groups in EC2

  • 2
    The 1st adequate answer - thx a lot. – Arthur Kushman Jun 11 '15 at 13:10
  • 2
    I`d rather accepted this answer, because AWS EC2 really creates instance without opened port 80 for TCP connections by default. – Arthur Kushman Jun 11 '15 at 13:13
  • Much better answer than Stone's answer. This (James') answer should be accepted as correct answer because it is an actual answer. Stone's respond is too generic ie. Things to check! – kannas Apr 7 '16 at 18:30
  • Worked for me.. I just add Custom TCP Rule with PORT : 80.. Thanks – Muhammad Azeem Jul 20 '16 at 14:40
  • Ohh, this was it! It has been driving me nuts for hours. I created a new Security Group with all the correct bindings. Checked firewall on the instance, checked if the web service is running or not and the VPC Security configs. But it turned out the Instance was using a whole different Security Group called "launch-wizard-1" !! – Zolbayar Jan 30 at 3:40
15

Also make sure Route table of VPC is set to enable IP address outside the VPC (0.0.0.0/0) to flow from the subnet to the Internet gateway.

Navigate to VPC > Route Tables ; Route tab. Check Destination is 'mapped' to Target Internet Gateway Id (apart from local).

  • Following the above instruction, I added a default route using the internet gateway as the target. To specify the default route put 0.0.0.0/0 as the destination. Once this was done I was able to reach my instance from the internet using it's public ip address – Peter Smallwood Nov 24 '18 at 10:30
  • It works for me. But I am curious that before I set up following this way, I already had another existing instance reachable from the Internet. Why cannot this time? – shintaroid Aug 23 at 12:05
10

Just adding this reply as it might help other EC2 Newbies. If the Public DNS for your EC2 instance is: Public DNS: ec2-46-137-53-149.eu-west-1.compute.amazonaws.com you can access the instance using the numeric portion of the DNS Address. In the above case http://46.137.53.149/

Obviously you will need to have the relevant TCP Port open in the security group/profile associated with your instance as mentioned above.

The private IP (e.g. 10.235.47.101) is not accessible from outside the AWS network and is only useful when you have a cluster of EC2 nodes and want faster communication between them.

5

Couple questions: what port are you trying to access? Do you have that port open on the security groups? Do you have an application listening on that port?

If I had to guess your security groups are not setup right. Make sure to open them to the correct ip addresses or to the world (0.0.0.0/0) if you are going access that port from multiple IPs.

If all that is not it, then dissociate and reallocate the IP to the instance.

  • @Chan-da-man- Yes ports are open and there is an app listening. Exact same URL except domain name swapped with IP. – Guido Anselmi Feb 3 '12 at 18:04
  • When you ping the full amazon cname does it come back with the elastic ip? – chantheman Feb 4 '12 at 17:50

Not the answer you're looking for? Browse other questions tagged or ask your own question.