In this lab, you will design a VPC with a public subnet, a private subnet, and a Network Address Translation (NAT) device in the public subnet. For NAT devices, it is generally recommended to utilize a NAT Gateway over creating your own NAT instance. However, this lab will go through the process of creating a NAT instance in case you'd like to be able to customize the EC2 instance used for network address translation. The NAT Gateway version of this lab replaces the NAT instance lab step with one that walks you through configuring a NAT Gateway.
A NAT device enables instances in the private subnet to initiate outbound traffic to the Internet. This scenario is common when you have a public-facing web application while maintaining back-end servers that aren't publicly accessible.
A common example is a multi-tier website, with the web servers in a public subnet, and the database servers in a private subnet. You can set up security and routing allowing the web servers to communicate with the database servers. The instances in the public subnet can send outbound traffic directly to the Internet, whereas the instances in the private subnet cannot. The instances in the private subnet can access the Internet via the NAT instance in the public subnet. In this Lab, you will also increase the network security using a network access control list (NACL), which is an optional layer of security that acts as a firewall for controlling traffic in and out of a subnet. After completing this lab, you might consider setting up network ACLs with rules similar to your security groups, in order to add an additional layer of security to your VPC.
Upon completion of this lab you will be able to create, configure and test the following:
You should be familiar with:
After completing the lab instructions, the environment should look similar to:
October 26th, 2022 - Updated screenshots and instructions for changes in the UI & Linux AMIs
December 29th, 2021 - Provided additional information regarding the time out encountered in the Lab
June 29th, 2021 - Updated lab step format and screenshots
June 8th, 2020 - Added troubleshooting instructions to ensure SSH agent forwarding is enabled when connecting to the bastion host from Windows
August 16th, 2019 - Increased the maximum allowed time on the Lab to allow for a better-paced learning environment
January 10th, 2019 - Added a validation Lab Step to check the work you perform in the Lab
September 7th, 2018 - Updated instructions and screenshots to the latest VPC and EC2 user interfaces
May 24th, 2018 - Clarified instructions for connecting to the EC2 instances on Windows.
Jun is a Cloud Labs Developer with previous experience as a Software Engineer and Cloud Developer. He holds the AWS Certified Solutions Architect and DevOps Engineer Professional certifications. He also holds the AWS Certified Solutions Architect, Developer, and SysOps Administrator Associate certifications.
Jun is focused on giving back to the growing cloud community by sharing his knowledge and experience with students and creating engaging content.