Reputation: 3737
I have amazon VPC set through wizard as "public only network", so all my instances are in public subnet.
Instances within VPC that have Elastic IP assigned connect to internet without any troubles.
But instances without elastic IP can't connect anywhere.
Internet gateway is present. Route table in aws console looks like
Destination Target
10.0.0.0/16 local
0.0.0.0/0 igw-nnnnn
and route from inside instance shows
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
default 10.0.0.1 0.0.0.0 UG 100 0 0 eth0
I tried to open ALL inbound and outbound traffic to 0.0.0.0/0 in security group that an instance belongs to. Still no success.
~$ ping google.com
PING google.com (74.125.224.36) 56(84) bytes of data.
^C
--- google.com ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5017ms
What else can I do?
Upvotes: 54
Views: 68387
Reputation: 3737
It appears that the only way to get outside from instances that don't have Elastic IP is:
ami-vpc-nat-beta
So, just adding NAT is not enough. Instances should be stopped and moved to another IP from another subnet.
Upvotes: 57
Reputation: 1876
Instances without EIPs can access the Internet in one of two ways Instances without EIPs can route their traffic through a NAT instance to access the Internet. These instances use the EIP of the NAT instance to traverse the Internet. The NAT instance allows outbound communication but doesn’t enable machines on the Internet to initiate a connection to the privately addressed machines using NAT.
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html
Upvotes: 1
Reputation: 1294
They have a relatively new product called NAT gateway that does exactly this, creates a managed NAT instance at the edge of your pub/private subnets.
Upvotes: 1
Reputation: 970
Security Groups -> Outbound
* ALL Traffic ALL ALL 0.0.0.0/0 Allow
Please allow Outbound, if you want to connect to external servers like google.com or even want to update- sudo apt-get update
You can allow the outbound using AWS front-end goto Security Groups -> Outbound
Make sure you select the right group for your AWS instance
Upvotes: 1
Reputation: 1
This works for me with :
To do :
root@gw:~# sysctl -q -w net.ipv4.ip_forward=1 net.ipv4.conf.eth0.send_redirects=0
root@gw:~# iptables -t nat -C POSTROUTING -o eth0 -s 172.20.222.0/24 -j MASQUERADE 2> /dev/null || iptables -t nat -A POSTROUTING -o eth0 -s 172.20.222.0/24 -j MASQUERADE
if it works, add this 2 lines in /etc/rc.local
Upvotes: 0
Reputation: 4137
Q. How do instances without EIPs access the Internet?
Instances without EIPs can access the Internet in one of two ways Instances without EIPs can route their traffic through a NAT instance to access the Internet. These instances use the EIP of the NAT instance to traverse the Internet. The NAT instance allows outbound communication but doesn’t enable machines on the Internet to initiate a connection to the privately addressed machines using NAT, and
http://aws.amazon.com/vpc/faqs/
You can find detailed instructions on how to setup a nat instance here: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html
Upvotes: 10
Reputation: 1764
You can do it on any instance in your VPC, that has EIP. There few instructions that i described here should help you. BTW: don't forget disable source/dest. check
Upvotes: 2
Reputation: 41
Or create a NAT Instance within the public VPC and add a static route to that NAT instance
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.5 eth0
where 10.0.0.5 is your nat instance, just make sure your the security group which contains the NAT instance can accept internal traffic from the boxes you require internet access
Upvotes: 4
Reputation: 349
Did you check the Network ACL on the subnet?
Cross check the security groups for rules.
The route table looks fine. It should work.
Upvotes: 0