Amazon Virtual Private Cloud is a service that
lets you launch AWS resources in a logically isolated virtual network that you define. Neil
Davis teaches this course. He's created many popular AWS courses and he's a great teacher.
This is Neil Davis from Digital cloud training. And this hands on video, you're going to
learn Amazon Virtual Private Cloud VPC. In AWS a VPC is a logically isolated portion
of the cloud into which you can deploy your own resources such as Amazon easy to instances VPC
is quite a complex topic. In this video, I'm going to start right at the beginner level and take you
through to an intermediate or even expert level, you'll learn how to define your own IP
address ranges for a VPC, how to create a VPC and launch resources into it. You'll
learn about routing and VPC security groups, network access control lists, and we'll also cover
VPN connections, direct connects and much more. This video comes from my brand new AWS
Certified Solutions Architect associate goals. So if you're planning to take an AWS certification
exam, this video will be very, very useful for you. But it's good for anybody who wants to learn
about Amazon VPC, and actually practice using it. For those who want to learn even more. There
are some supplementary videos on the digital cloud training YouTube channel, including for
creating a client VPN, and a site to site VPN, both hands on videos, you can find the links to
those videos in the description of this video. And you'll also find the course download as well which
you'll need to complete the hands on exercises in this course. Now I really hope that you enjoy
this video. And let's get straight into it. Hi guys, in this lesson, I'm going to cover
a basic primer on IP addressing. And we are specifically talking about IP version four,
not version six. I'll cover version six, a bit later on in this section. Now, what I want
to do here is assume that you don't have much knowledge of IP addressing at all, if any. And
we're going to start right at the basics. Now it is a really complex subject. So I'm only
going to go as far as what you need to know in order to be competent working with Amazon
VPC. And with IP addressing in general with AWS. Now, there'll be some areas of the subject
matter where you may want to go deeper. And there's lots of resources on the internet for
doing that if you wish to. to kick off the lesson, let's start with what is an IP address. Now,
let's say we have a web server on the internet, and you want to communicate with that web
server. Now the web server is likely to have some kind of network interface and attached to
that network interface will be an IP address. And this is going to be a public IP address. In
this case, because the web server is available via the internet, IP addresses are the addresses
that computers use to communicate with each other. So you've got your computer at home, and you got a
web browser open. And you type in example.com, the address of our web server. Now what happens now
because you put in example.com, but like I said, the computers communicate using IP addresses. So
this is where a domain name system or DNS server comes in. Your computer will speak to a DNS
server. And it's going to ask that DNS server what is the IP address for example.com. Once
your computer has the result, it's then able to connect to the web server using the IP address.
So this is the main name resolution, where you're resolving a name, a nice friendly name that
you can remember easily into an IP address, which is less easy to remember. But it's the way
computers actually communicate with each other. Let's move on to the structure of an IP address.
Now you've very likely seen IP addresses we've already worked with them in this course. So an IP
address might look like this 192 dot 168 dot 0.1. This is known as dotted decimal notation. And
it's a simple way of actually representing an IP address. Now each of these parts between the dots
is actually a binary octet. So that's where things get a little bit more complex. But you do need
to know this. So what is a binary octet? Well, octet means that you have eight values,
and those values can either be a one, or they can be a zero. Those are the only two
options. It's binary. In this small table here, you can see that in this case, we have once eight
ones, all in a line. Now on the left hand side we have what's called the most significant bit
that means that if one In this leftmost place, it's going to have a value of 128. If you have
a one, on the right hand side, that's the least significant bit, and its value is only one. If
you have a zero anywhere, it just means zero. So for example, in this address, the third octet is
a zero. So that means all of the eight bits are zeros. The one means that all seven bits here are
zeros. And we have a one on the right hand side, and that equals this least significant
bit here. On the very left, we have 192. Well, 192 is 128 plus 64. So we have a one
and a one, and the remaining values are zeros. And then for 168, we have a one, so that's 128.
Then we have a one in the third place here, which is 32. And then we have a one in the fifth
place here, which is eight. So we have 128 plus 32 plus eight equals 168. The reason it's
important to understand this binary is when we get to subnetting, with variable
length subnet masks that's coming shortly. So firstly, let's understand that network and host
portions of an IP address. Every IP address has a network ID and a host ID, the free blue boxes
on the left there represent the network ID, this value will be the same for every computer on
this network. The host ID will be unique for every computer on this network. As I said before, every
IP address will have a network and host ID. But how this is configured does vary. Now how do we
know which piece is the network ID and which is the host ID? Well, that's where the subnet mask
comes into play. Where we have 255. In this case, essentially where we have a bit that is a one
that represents the network ID. So here we have eight bits that are one, eight bits that
are one and eight bits that are one so those first free octets are all representing the
network ID. Now the last octet in the orange box here is going to be the host ID. That's why it's
zero. So every bit in the subnet mask that is zero means that's where we have values that can
be assigned a host. And every bit that's a one, those are values that are going to be exactly
the same for every computer on the network. So a subnet mask is an easy way to see which bit
is the network and which portion is the host ID. So let's look at an example. We have our 19216800
network with a subnet mask that looks like this. Now this is 24 bits, a 24 bit subnet mask because
we have eight ones in those first three octets. And that means it's a slash 24 network. It's
another way of representing the subnet mask. And that's the format you'll often work with in
AWS. So on this network, we might have several computers. And we can see that they each have
different host IDs. But that same network ID. In this case, the host IDs are 123456 and the
network ID is 1921680. For all of the hosts on the network. We also have something called classes
with IP addresses. Class A looks like this 10 000 and 255000. Essentially, you have an
eight bit subnet mask. And that means the first assignable address is going to
be a one, you can't ever assign zero as an address for a computer on the network. And
the last assignable address is going to be 254 because you can't use 255, which is what's known
as the broadcast address. Now in AWS, there's also a few other addresses that are reserved with
a class a subnet mask, you can have up to 126 networks. And each of those networks can
have a huge number of hosts 16,777,214. And that's because we have all of these bits here
to play with for the host ID. We then got Class B, which has a 16 bit subnet mask. First assignable
address is 172 16 01 For this example, and the last address would be the 254. Here we
have 16,382 networks, so a lot more networks and the usable addresses per network has
reduced to 65 544. Lastly, we have a class C. This has a 24 bit subnet mask. And as you can see,
the number of networks has now really increased, but we don't have as many addresses Available per
network. So those are the standard classes. Now, there's also something called a private IP
address range, there's a few of these that are reserved for private use. That means not on
the internet internally, within your company, we have 10, triple zero to 10 2552 552-551-7216
00217 230-225-5255. And then 19216800321921680255. These addresses are reserved for use in private
networks. So not internet facing, you can't use these on the public Internet, things now get a
little bit more complicated. Sometimes we want to vary the length of our subnet masks. And we
don't want to stick to those standard classes. So we use something called classless inter domain
routing. And this helps us optimize the IP space. Let's have a look at some examples.
Let's say we have this network here, we have a 24 bit subnet mask, we have eight
house bits, and 254 possible addresses. The first address is dot one. The last is dot
254. Pretty standard so far, we then have a 16 bit subnet mask. So with the same network,
we're using a different subnet martyr, a non standard one in this case, because
192168 is typically a Class C network. With a 16 bits subnet mask, we have 16
host bits, and up to 65,534 addresses. And it looks like this. But what about
a slash 20 subnet mask? Well here, as you can see, we have a blue slash orange box.
And that's because we borrowed some bits from the network ID to share them and use them for
the host ID. That means we now have 12 host bits and 4094 addresses. So sometimes that's a better
configuration for the number of computers you need to have on the network and the number of networks
you actually need. And the addresses for this network would start at 01 and go up to 15.254. So
that's classless inter domain routing or cider. And it's using variable length subnet masks. In
other words, breaking away from the standard and optimizing the amount of networks and hosts
that we have. Now I know that's quite complex, and hopefully it will make more sense as we
go through the section. So that's it for this particular lesson. I hope you got lots of value
from that and I'll see you in the next lesson. Bye guys. In this lesson I'm going to teach you
about the Amazon virtual private cloud or VPC. VPC incorporates several different concepts. And
what we're going to do in this section is go into them in much more detail. So first, we'll start
off with the core knowledge around VPC itself. So within a region, we have our VP C's and they
are always within a region they can't span across regions. A VPC is essentially a logically isolated
portion of the AWS cloud that you can then use to deploy your resources inside it. And that's
different to the public space outside of the VPC where services like Amazon s3 set, this is a
private space and you have full control over how you configure your VPC. Now as you know within a
region, we have availability zones, and you can use those within your VPC by creating subnets and
assigning those subnets to an availability zone. A subnet is always assigned to one availability
zone, it can't span across multiple azs. But you can of course have multiple subnets
in the same AZ we then deploy our resources such as easy two instances into our subnets. Now
there's a thing called the VPC router. You don't really see the VPC router, but it exists, and
we interact with it by configuring route tables. Now the VPC router takes care of all routing for
connections that are going outside of a subnet. If you send data out of a subnet, it's got to go
somewhere else, maybe to another subnet, or maybe out to the internet or some other network.
So the router takes care of making sure the data connection is sent to the right place. Now as
I said, you don't see the VPC router. All you do is see the route tables and they are configuring
the VPC router for you. So we need to specify the destinations and the targets for certain
networks and that's how it then knows where to send those connection attempts. If we
want to access the internet, we also need an internet gateway, the internet gateway is attached
to your VPC, you only ever have one per VPC, the internet gateway is used for sending data
out to the internet. That's egress traffic. And in from the internet that's Ingress traffic.
And we configure our route table with a route to the internet gateway ID, that tells it to send all
traffic that doesn't fit one of the networks in the route table before it to the internet gateway.
Now you can create multiple v PCs within a region, you have a limit of five by default, but you
can request an increase on that amount. Each VPC has a cider block. That's the overall block of
addresses from which you then create the addresses you assign to your subnets. So it's kind of
like a master block of addresses. Each VPC has a different one of these. So in this case, we've got
two v PCs. And they have different cider blocks. As you learned in the last lesson, cider
stands for classless inter domain routing, from the overall cider block, we can then create
the network IDs for our subnets. And they fit within that overall cider block. But they have
a different subnet mask, so that essentially a subset of the overall available addresses and
this is why it's really important to make sure we specify our cider blocks correctly so that we
have enough networks and enough hosts per network. We'll cover that in another lesson. So here we
have two v PCs, each with different cider blocks, and then each with different subnets that come
from those cider blocks. Now we're going to cover a lot of these components within this section,
but I just want to cover them at a high level now. So you know what a VPC is and what subnets are,
you know what an internet gateway is as well. Now, an egress only internet gateway is when you're
using the IP v six protocol. And it allows traffic outbound only, whereas an internet gateway is
for IPv IP version four, and it allows both egress and Ingress traffic. As you know the router
the VPC router takes care of routing connections to the right places. Now appearing connection is
something where you can connect multiple v PCs and have private routing between them. We'll
cover that in detail later on in the section. VPC endpoints allow you to connect using private
IP addresses to public services on AWS. Again, we'll cover that in detail later on. Now, Nat
instances and gateways, we covered these earlier in the course, these are both ways that you
can enable internet connectivity outbound only for your instances in private subnets. The next
two components, the Virtual Private gateway and the customer gateway are both related to creating
virtual private network VPN connections to our company offices or our company data centers.
So that's a virtually private network and encrypted tunnel over the internet. We then have
direct connect, that avoids the internet by using private connections right the way
through to your data center or office and security groups and network ACLs are two
different types of firewall. We'll cover them in a bit more detail in this section. We've
used security groups quite a lot so far. They are what we call a instance level firewall,
because they operate at the level of the network interface attached to our EC two instances.
Then we have the network ACL, that's a subnet level firewall. So it only sees traffic going
in and out of the subnet. So just to summarize, that core knowledge of VPC is a virtual network
dedicated to your AWS account. It's similar to having your own data center inside AWS because
you're able to have full control over what you do with defining your cider blocks, creating your own
subnets, setting up your security, your routing and so on. You have lots and lots of control. It's
logically isolated from other virtual networks in the AWS cloud. And as I mentioned before you get
full control over lots of the configuration items in your VPC. And a VPC is a place where you then
launch your resources such as Amazon 82 instances. When you create a VPC, you must specify your cider
block. So that's the overall block of addresses. Now we'll see how to select the best cider block
for our use case. And another lesson a VPC spans all azs within a region. that essentially means
if there's three or six or whatever number of azs in a region, you can create subnets within
your VPC on all of those azs. But remember, each subnet is always within one AZ it can't span azs
but you create multiple subnets if you want to. In an availability zone, you get full control over
access to your resources inside a VPC as well. By default, you can create five per region. But
you can extend that if you submit a request. A default VPC is created in each region with
a subnet in each availability zone. And that's always a public subnet. So whichever region was
changed to your fine is already a default VPC and it already has a number of public subnets in
it. Now that's it for this lesson. In the next lesson, we'll have a look at how we can work
out a suitable cider block for our use case. In this lesson, we're going to look at what we
need to do to define the cider blocks, we're going to use a few of the rules and guidelines and best
practices. So first with the rules and guidelines. And these come from AWS, the cider block size can
be between a slash 16 and slash 28 subnet mask, it cannot overlap with any existing cider block
that's associated with the VPC. And you cannot increase or decrease the size of an existing
cider block. So you must get it right from the beginning, the first four and last IP address
are not available for use. So you got to account for that when you set the size of your subnets.
Because you want to make sure you have enough addresses for your instances that you deploy. AWS
recommend that you use cider blocks from the RFC 1918 ranges. Remember, these are the private IP
ranges. And that's these addresses. And of course, these give you plenty of scope. So that shouldn't
be a problem. Now let's have a look at an example. So let's say I have a VPC cider block that looks
like this. It's 10 000 with a 16 bit subnet mask. So that means it looks like this 10 000 slash 16.
So that's the overall block of addresses. But now we want to create our subnets. So what we need to
do there is we're going to take some of the bits from the host portion here and assign them to the
network portion. So maybe we're going to have 10 010 slash 24. And that means we borrowed all eight
bits from that third octet for the network ID. So your VPC subnets, will have a longer subnet
mask than the cider block that they come from. Now, in this case, it's a 24 bit subnet
mask. Now what's the next network, the next network is 10 020 slash 24. And then
the next one is 10, zero free, zero slash 24. So each of these subnets is going to have
up to 254 potential hosts. But of course, you have to take away a few from that number.
So take away five from that number. And that's how many addresses you have remaining for your
EC two instances. So as long as you're happy with that number of instances per network,
which is quite a big number still, then this is a good and very simple range to
use. Now let's go through a few additional considerations. You got to ensure you have enough
networks and hosts, you really don't want to mess this up. You only get to set the cider block once
and then you're stuck with it. So make sure you plan correctly. Bigger cider blocks are typically
better gives you more flexibility down the road. Smaller subnets are okay for most use cases
you don't need 1000s of instances per subnet. Consider deploying application tiers per subnet.
So if you have a free tier application, you might have different subnets for each tier. And you
might have it as highly available across multiple availability zones as well with a subnet in each
AZ. So that's a good way of getting that high availability and resilience into your workload.
Now VPC peering, which we're going to cover a bit later, is where you connect your VP C's so that
you can route directly between them using private IP addresses, so you don't go out to the public
Internet. Now it's really essential that you don't have overlapping cider blocks. So in other words,
you can't have the same cider block in two v PCs and connect them with VPC peering. So even if
you're not doing peering now, just remember this because you might need to do it in the future. You
want to make sure your cider blocks don't overlap. And this is across all v PCs and all regions and
all accounts so make sure you get it correct. So in general, just avoid overlapping cider blocks as
much as possible. Make sure you consider this when you're designing your IP address ranges. So let's
go back to an example. Let's say we have 10 000 slash 16. So that's our cider block. And we create
a series of subnets. Now each of these subnets has a 24 bit subnet mask and as you can see were
separating them into public and private subnets in different availability zones, the private subnets
have a private route table, and the public ones have a different route table course the main
route table for the public subnets here will have an internet gateway. And those subnets will also
assign public IP addresses to the instances that are launched in them. So that's a bit of theory
behind it and some practical examples there. I also want to show you a very useful tool that
helps you to plan out your cider blocks and your subnets. I'll attach a link to this tool to
the lesson. Now what we can do with this tool is specify our cider block and see the subnets.
And we can actually, the tool will help us to work out which subnets to use based on the number
of networks we need subnets or the number of hosts per network. So let's stick with the example and
put in 10.0 dot 0.0. And then the subnet mask, we're going to scroll down to slash 16. Now I want
to have subnets with at least 254 hosts. So that would be a standard Class C network. Now let's
have a look what we get. So let's click on Create. And it gives us all the subnets
with a slash 24 bit subnet mask that fit within the cider block. So we've got the
zero subnet here. And then all the way down, we get to the very last subnet,
which is 255. So that's 255 subnets, that we can have. And each of those
subnets can support up to 254 hosts. Of course the VPC will actually reserve a few addresses so you
won't get that many but you'll still get close to 250. So that's a really nice tool to use to help
you to work out what your subnets are going to be within your cider block. And that will also help
you to determine the best cider block as well. Hi guys, in this lesson, I'm going to show you
how to use the VPC wizard. The Wizard helps you to really easily create a VPC without having to do
much manual work at all. In my management console. Let's go down to networking and VPC. On the VPC
dashboard here, I can choose launch VPC wizard, and we then get offered four
different pre configured options. And what I want to do is just go through
what you get with each of these options. So the first one is a VPC with a single public
subnet. Very simple. You get a slash 16 cider block and a slash 24. subnet. And it's a
public subnet. So if you select this option, you can specify your cider block and it's
given you this default, you can specify a name, it's already entered the subnet cider block as
well. You could choose an AZ if you want to, or otherwise, after entering the name, you could
literally just create the VPC and it's going to do all the tasks for you. And that would include
attaching an internet gateway so that you have internet connectivity for your public subnet.
Now let's cancel out of that all let's go back, go to VPC with public and private subnets. So now
you simply get public and private subnets. And you get a network address translation device, so
you get a NAT gateway, so your private instances can access the internet. So again, with this
option, there's not too much to configure, other than the different subnets public and
private. The key difference here is your Nat gateway does need an elastic IP, so you need an
elastic IP allocation ID. Now let's go back again. And this time we're going to go to VPC with
public and private subnets and hardware VPN access. Here you have public subnets, private
subnets. And also a VPN tunnel gets created. Now you need to have a VPN device in your
corporate data center. If we select this option, and let's just give this a name, my VBC. And leave
the defaults on this page, click on Next. And then it's going to ask for the customer gateway IP
and that's the IP address of your VPN device on your side of the network on your corporate
data center. So if you specify those details, when you create this VPC, it's going to make
that connection. Let's just go back, back again. And the last one at the bottom is VPC with a
private subnet only and hardware VPN access the same as the one before except that you
only have a private subnet. So you've got a VPN connection from your corporate data center
to a private subnet on AWS, with no routing going out via the internet from that subnet in
AWS. So those are the four options. I just wanted to quickly show you through them. And in the next
lesson, we'll actually create our own custom VPC. In this lesson, we're going to create a
custom VPC with public and private subnets. Now let's have a look at what we're going to
create So we're going to use the same example cider block we've seen in the section, it's going
to be a 10 000 network with a 16 bit subnet mask, that's the overall block of addresses, then
we're going to create these four subnets. We've got private one a in private one, B, and public
one, a public one, B, and the one a and the one B mean that they're associated with a specific
availability zone. Now for the private subnets will have a private route table for the public
subnets will have this main route table that's created, by default, will attach an internet
gateway to our VPC. And the main route table will have a route via the internet gateway out
to the internet for those public subnets. We also must specify that we want our instances to
pick up a public IP address automatically. So that's the configuration let's head over to the
console and build this out. In the VPC dashboard. I'm going to go to your V PCs, and we just have a
single default VPC. So let's create a new one. In your course download in the code directory, Amazon
VPC, you'll have this file a custom bash VPC, we can simply copy values. So I've got the
name, that's going to go under name tag, let's copy the cider block and put that under
ipv4 cider block. We're not going to do ipv6 at this stage. In this course, we'll leave the
tenancy as default. If you change to dedicated, it's going to put your instances on hardware
that's dedicated to you, and that's going to cost you more money. So definitely leave that as
default. And that's all we need to do to create the VPC. So the VPC is being created. One thing I
like to do is go to actions, edit DNS host names, and enable, that means we will get DNS
hostnames for our EC two instances. The next task is to create our subnets we've got
public subnets and private subnets. So I'm just going to copy these values to my clipboard, we'll
come back Go down to subnets. Create subnets, we need to specify our VPC. So my VPC and then we
can put in the name and the subnet name, choose the availability zone as one a US East one a. And
then the IP B's for cider block, we'll come back, we'll copy this cider block. And we'll paste
that in. Now we could create the subnet there or we can add a new one. And we're just going to
do the same for the next three subnets. So just go through this file and copy the settings for your
additional free subnets. When you finished your page should look like this, you've got public one
a in US East one a, we have a 10 01 cyber block, and then you've got subnet to public one, B,
and that should be in US East one, B, so let's modify that. And 10 zero to private one a should
also be in US East one, a 10, zero free, and then private one B in US East one, b 10 04. So that
all looks good. Let's create all four subnets. And that's the four subnets created. Now for our
public subnets. We want to go to actions here, modify auto assign IP settings, and enable
the auto assignment of public ipv4 addresses. So I've done that for public one, B, let's do
it for public one, a. And those are updated now. So the next thing I want to do is I need to
create a route table for my private subnets. So they're not attached to the main route
table, which is where the public subnets will be. So let's go to route tables. Create
route table, we're going to specify a name, I have that in my clipboard from the file
private RT. For VPC, I'm going to select my VPC. And then we'll create the route table. Once
that's created, go to subnet associations, edit subnet associations, and you want to select
private one B and private one a and save. So now we've done that if we go into subnet associations,
we should see an explicit Association for private one A and B. If we come back up to route
tables, we'll see the other route table here. So this is the main route table or the public route
table if you like. And under subnet associations, there are no explicit subnet associations, but
one a and one B public are associated implicitly. The next thing I need to do is go and create an
internet gateway. So under internet gateways, here let's create an internet gateway. We'll
give it a name. And let's just paste this value in from the file and create internet gateway.
Once it's been created, it needs to be attached and the actions you can attach to VPC, select
the VPC and then attach the internet gateway. Now the last thing we need to do now we have an
internet gateway. We do not route from our main route table. So let's go to the main route table
here. Go to routes, edit routes, add a route, and we'll put in the 0000 slash zero, choose our
internet gateway. And there it is in the list. So now, everything within the cider block
will be routed locally by the VPC router. And everything that's not within that VPC cider
block will go out to the internet via the internet gateway. So let's just save those changes. So
that's it, we've created our custom VPC with public subnets, private subnets to route tables,
and an internet gateway. Now, that's all I need to do for this particular lesson. In the next lesson,
what I'd like to do is launch some instances and just test our configuration and make
sure we have the communication we expect. So we've created our custom VPC and I've just like
to test that now. So we're going to launch some easy two instances, two instances in two different
public subnets and one in a private subnet. And we're actually going to do that via the command
line, it's really useful to know the command line. Now not all exams require you to know the command
line. So for the solutions architect associate, doesn't really matter too much. For the developer,
it does a bit more for certain services, and definitely for the sysops exam. Now, whatever
exam you're doing, or whatever career path you're taking in AWS, it's still a really useful skill
to have. So it's definitely worth learning the command line. So we'll launch some instances
using the command line. And then we'll use those instances just to test connectivity with each
other. There's a couple of things I want to do before we get started there. Firstly, I want to
create a NAT gateway. So I'm in the VPC Management Console. Under Nat gateways, let's create a NAT
gateway, I'm just going to call it my Nat GW, and I need to select a subnet. Now remember, with
Nat gateways, they always go in public subnets. So here, I'm going to choose public one a, and
that I know is within the correct VPC as well. So connectivity is public, we allocate an elastic
IP, and then just create the NAT gateway. Now, of course, it won't work until we update
the route table for our private subnets. So under route tables, let's choose the private
RT. Go to routes, edit routes, add route, and we're gonna specify 000 slash zero. And
this time, it's going to be a NAT gateway. And we'll choose that Nat gateway ID. Now our
private subnets will have access to the internet. And that's important because when our instance
launches, we're going to run some user data. And that's going to connect to the internet to
download some binaries for httpd. Next thing is under security groups, we need a security group.
Let's create a security group. I'm going to call it public that web, give it a description, and
make sure I select my VPC. For outbound rules. By default, it allows all traffic to any destination.
For inbound just for now, we're going to add all traffic from any destination. So this is
very open, don't worry, we're going to lock it down in a subsequent lesson and practice with some
different security group configurations. But for now, let's just open everything up. I'm going to
create my security group, and that's ready to use. There's a file in your course download. And that's
in the code Amazon VPC directory, and it's AWS COI run instances, we need to add some values into
this file. The first thing we need to do for this command is specify an image ID. So the command is
AWS easy to run dash instances. And these are the values that we need to specify. So first, let's
find the AMI ID that we want to use. ami IDs are region specific. So we've got to make sure
that everything we do in this lesson is within the same region. It's also where you created your
custom VPC. So for me, that's North Virginia, hopefully it's the same for you. Let's launch
an instance. Next to the Amazon Linux two ami. Let's grab this ami ID don't take anything in
brackets there, copy that to the clipboard. Come back and paste that in the instance type
we can just type this in, it's just going to be T two dot micro for security group IDs. Let's
go back and find the ID of our security group. I can see my public web access security group.
Let's just copy the security group ID come back and paste that one in. Then we need the subnet ID.
This time I'm back in the VPC Management Console. Let's go to subnets. First I want the public
one a subnet ID. So I'm just going to copy that to my clipboard. Key name is the key pair
that you're using in this specific region. Back in EC two, you can go to key pairs if you don't
remember what it is, and just copy this name. And we can paste that in. Lastly, there's
some user data that we're going to specify. Now this is the user data file. What it does is
runs a web server. And then it creates a couple of variables from the metadata were actually
grabs the subnet ID, and it basically just puts that into a simple web page. So we can see where
the instance is running. In our command here, we just need to specify the name of that file. Now
what you want to do is change to your Amazon VPC directory, where we have all this information. And
this is where the file is. So copy that to your clipboard, make sure you have the file colon slash
slash, and then the name of your file. Let's copy this and make sure it works. Before we fill out
the other two, now, you will have had to run AWS configure, before you do this exercise, you should
have specified an access key ID secret access key. And your region must be the same as the region
where we're trying to deploy our instances now. So mine's all good. Let's paste in this command
and run the command. And that appears successful. And we can see that we have an instance running
in US East one a. And there's quite a bit of information if you just spacebar and go down
the page here. So let's go into EC two and check it's launching back in 82, I can see I have this
instance at the bottom here running. Now I'm just going to label this one as public one a so I know
which one it is. Now the next thing we need to do is to go back over to the VPC Management
Console, take the subnet ID of public one, B and come back to our file. And we're going to use
this one. So what we can do is copy all of this, put it in one be here. And then I'm going to
take this subnet ID, and just override this one here. So we should now be able to launch into
public one B, let's copy this to our clipboard, come back and paste it in. That looks good. If I
refresh the page here, and we have this pending instance, that's the public one be. So I'll just
give that a label so we know which one it is. And then lastly, we're going to launch the
instance in our private subnet. So again, I just need to get the subnet ID for private one
v. So I've copied that to my clipboard, come back, paste that in. And now we have the command. And
this user data should run okay in the private subnet, because we're able to connect out to the
internet via the NAT gateway. So I paste this in, hit enter. There we go, we should have another
instance, back in easy to I can see my pending instance here. So let's call this one private, one
be great. So I have these instances, let's just give a refresh and see where we're at. So a couple
of them are running let's saw by name, that might make things a bit easier. I'm just going to copy
to my clipboard, the public IP for public one a, and paste this into a browser window. And I get
this web page. And it gives me the subnet ID. So that should correspond with the subnet for
public one A. So that's great, we've proved that we can connect from the internet to our EC
two instance. Now the other thing I want to do is connect between my EC two instances back in
the console here, what I'm going to do is connect to public one, I use the EC two instance Connect.
And while that's just connecting, let's come back. Next I want to get the private IP address of my
public one B instance. And that's 10, zero to 25. And let's just change back to the EC two instance
Connect. And I'm going to ping 10 dot 0.2 dot 25. And let's see if that response. So that proves
that we have connectivity to our instance, in the other public subnet public subnet one B. So we
have two way connectivity, the responses coming back as well. So that's great. Lastly, let's
check that we can connect to our private subnet. So let's see what the private IP address is.
It's 10 04148. So let's ping 10.0 dot 4.148. And let's see if that works. And it does so we get
an ICMP response. So that's great that shows that we have that connectivity working. One other thing
we could do from here is see if we can connect to that web page. So we'll use the curl command
and specify 10.0 dot 4.148 and hit Enter. And we get a response here that says this instance
is in the subnet with ID and it gives us the subnet ID. So that's the h1 header for the
HTML web page that we have on that website. So we We can see that we have Port 80. Open as
well, were able to connect to the instance in the private subnet. And we can also infer from that,
that the instance can connect out to the internet because it was able to install that web service.
So that's it for our connectivity testing for now. Now I'm going to leave all of these instances
and the NAT gateway running, because we're going to come back and carry on when we do some
testing with security groups and network ACLs. Guys, security groups and network access control
lists. ACLs are two different types of firewall that we can apply in our AWS environment. So let's
have a look at how they work. So here we have a VPC with two availability zones. And we've got a
couple of public and private subnets. And we've got a few EC two instances that have been launched
into different public subnets and private subnets. So let's see how we can control traffic.
Firstly, we can apply something called a network access control list or network ACL. Now
these get applied at the subnet level. So you can see that they're sitting here at the edge of the
subnet. Now, all traffic that goes into and out of a subnet will go through a network ACL. So you're
essentially filtering traffic as it enters or exits the subnet. So ingress and egress traffic,
a security group is different. A security group actually applies at the instance level of an EC
two instance, actually at the network interface level of the EC two instance. So that means we
can have a security group that is applied to EC two instances in different subnets. So this
is the same security group Security Group A, and it's been applied to instances
in several different subnets. So remember that this is the instance level, that
means it's going to filter traffic going between instances in the same subnet, or across different
subnets, we could then have security group B, that's attached to different instances. So
security groups can be applied to instances in any subnet. Now, what happens here with these security
groups, is the same basic thing as a network ACL. They're looking for traffic that's going
in and out of the security group. So if you send traffic from an instance, in security
group A, to an instance, in security group B, it's going to check that there's a rule to allow
the outbound traffic, and then it's going to check here, the Security Group B is going to check Am I
going to allow the traffic from Security Group A, and you can do that by IP address, or you can
actually do it by the ID of the security group itself, we'll look at all this in detail in the
hands on as well. Now I want to talk to you about stateful versus state less firewalls, because
the security group is a stateful firewall. And a network ACL is a stateless firewall. And it's
really important to understand the difference. So let's look at an example. We have a client
here. So this is a computer that wants to access a service on a web server, and we've got a
firewall in the middle. So what happens is the client is going to connect to the server, the
server is a web server, it's listening on port 80. The Source port is the port that's assigned
to the connection by the computer. And this is what's called a high numbered port is
a port above 1024. And it's dynamically assigned for every connection. So we have
a source port and a destination port. And we have a source and destination IP as well.
Now the return traffic has a source port of Port 80, because that's where the web service port
runs, and the destination port of 65188. And of course the IPS are switched around as well.
So the destination IP will be the client, the source IP will be the web server. Now what
do we need in the firewall rule table to allow this to work? Well, what we need here is we
need a rule for HTTP that allows the source IP 10.1 dot 1.1 to talk to the destination IP
10 dot 2.1 dot 10. And it has to have the source port and the destination port specified. Now of
course, this is a dynamically assigned port. So we don't know what that is ahead of time. So what
you'd most likely have here is any so rather than having the source port specified we'd have the
any specified so any source port is acceptable. And then rather than a specific source IP,
we might have any because it's an internet based connection. So those are things that
we can play around with in our rule tables. But the destination port will always be 80
because that's where the web server runs. So we want to make sure that we don't allow
connections to any ports on the web server. Now that's the traffic coming inbound
to the web server. What about the return traffic going back? Well, in that case, things are
swapped around. So we've got the same protocol, the source IP of the web server, the destination
IP of the client, and the source port of 80, and the destination port of the dynamic port at
the clients. Now again, you'd probably have the destination port, and the destination IP is any,
because you want to allow traffic coming from any client on the internet if you're running a
public web service, but you still might need a rule set for the outbound traffic. And this is
where the difference comes in between stateful and stateless firewalls. So a stateful firewall
will allow the return traffic automatically. Now this is what a security group is, what that
means is with a security group, you only need this roll up the top here, you need a role that
says that you're going to allow the traffic from whatever client on whatever port, but you're going
to allow inbound to Port 80 on your web server. And then the return traffic is automatically
allowed. So you don't have to worry about the return traffic is going to just go out
automatically, it's going to be allowed because the firewall is clever enough to know that that's
part of the connection. And so it just allows that return traffic. Now a state less viable checks
for an allow rule for both connections. Now, this is what a network ACL does. So we have
a network ACL, you need both the inbound rule and the outbound rule. So you need to make
sure that you have the inbound rule for traffic coming in, and the outbound rule for traffic
going back. Even if it's the same connection, it doesn't understand that that's part of the same
connection, it treats them separately. So really important to understand those differences when you
configure your network ACLs. Now let's have a look at a security group. This is what a security group
rule set looks like. So here we have separate rules defined for inbound and outbound traffic,
what we're looking at here is the inbound traffic. Now again, because it's stateful, we don't have to
have a rule for the return traffic. But we still might need an outbound rule for traffic going out
from our instances. So when our instances that are attached to the security group are initiating
connections outbound. so here we can see we have several rules using different protocols. And
we've got the protocol specified the port range, and then the source. And the source in many cases
might be either an IP address or IP address range. Or it can be a security group ID as well. security
groups support allow rules only. So there's no such thing as a deny rule in a security group.
Essentially, there's an implicit deny rule at the end of the rule set. And it's going to check
for an allow, and if there is no allow, then by default, it's just going to deny the traffic. As
I mentioned, a security group can use a source of an IP address an IP address range, or the security
group ID of itself or another security group. Now let's have a look at a best practice configuration
when using security groups. What we have here is a public subnet and a private subnet. And we've got
an internet facing load balancer. So this is going to distribute traffic to our web servers. So we
have a load balancer, we have a web server front end. So this is the one that's actually users are
connecting to from the internet. And then there's an application layer that's going to process data.
And this could have multiple servers. So we have a load balancer. And we need a connections to be
able to come from our clients on the internet through to the application layer, it might then
write to a database. I haven't shown that in this diagram. So let's see how we set this up. Firstly,
we create a security group for the public iob. It allows traffic on port 80 for the web service
from any source on the internet. Now outbound it has because it's going to now create a connection
to the web front end. It has a role that allows outbound access to Port 80. And we've specified
the actual security group ID public easy to. So that's the name of this security group. So
it's only going to allow traffic outbound to the web front end, the web front end allows
traffic only from the public lb on port 80. And then it has a destination for outbound traffic
of another security group called private lb, and a port of 8080. So that's what that particular
application is listening on. The private lb security group will in turn, only allow inbound
traffic from the public EC to security group. And it will only allow outbound traffic to the
private easy to security group. And that's the one which has the application layer in it. So
that's a way that we're locking down access to the different layers of our application,
and ensuring that the application can talk to other components but nothing else can.
So that's the best practice security group configuration. Now let's have a look at network
ACLs. One of the first things you'll notice is we have inbound and outbound rules. Again,
and we have allow and deny rules. So with NaCl, you can have an explicit deny that's different
to security groups. Remember, security groups only support allow rules. Rules are processed
in order. So you can see that they're numbered. So we typically number our rules. And you might
want to say that the next rules that you add in are 202 101. And then 303 101, you could work out
your own process for how you assign those numbers, but just remember that they will be processed
in order. Now, the important facts about that means that once you actually reach a rule that
either allows or denies traffic, the processing stops there. So if we have an allow rule at 100,
that allows the traffic, then even if you had a deny rule, later on in the rule set for that
specific traffic, it's not going to get there, it's going to allow it because it reaches DLL
and processing finishes. So you've got to be very careful with how you set up your rules the order
that you create them in, and just remember that they will be processed in order, and then when
an allow or deny is reached, then that's the end of the processing, it will either allow or deny
the connection. So that's it for the theory. In the next lesson, we're going to do some hands on
and set up our security groups, and network ACLs. Hi, guys, in this lesson, we're going to use
security groups and network ACLs. And we should already have some instances running from earlier
on in this section. So you should have free instances running to in a public subnet, and one
in a private subnet. And what we're going to do is test various configurations of security groups,
and network ACLs. Now the first thing I need to do back in EC two is go to security groups. And I'm
going to create a new security group. So we have the public web. Now we're going to create the
private app. So this security group is going to be called private dash app. I've given it
a description. And let's choose my VPC for the VPC. Now, what will the rule be here? Well,
I'm actually going to delete the outbound rules we've already configured, we've given internet
access to this particular instance before. So we were able to download httpd when we
installed the web service. But for now, I'm going to take out outbound rules, which means
From now on, it won't be able to connect out to the internet for inbound rules, what I want to do
is use HTTP. So let's just scroll down, find HTTP, that's the protocol for the web server. And for
source, what I'm going to do here is type s, G. And I can see my public web access. So I'm doing
the best practice here, what I want to do is make sure that the web server in our app there is only
ever going to allow connections that come from the web servers on the front end the public facing web
servers in this security group. So let's create that security group. Now we need to assign it to
our instance. So let's choose private one, B, go to actions, security, change security groups.
And we're going to remove public web. And we're going to choose private app, click on Add
security group, and then click on Save. Great, so that should be set up correctly. Now, the first
thing I want to do, though, is test the access to the security group on our front end. So what I'm
going to do is go to security groups, choose the public web security group. And under inbound
rules, I'm going to edit the inbound rules. And what I want to do here is change from all traffic.
And again, we're going to choose HTTP only. We're going to remove the any source, and we're going to
specify my IP. So what that will do is it picks up my IP address. And that means that I will
be able to connect over the Internet to this particular web service. Now I'm actually using a
VPN and we're going to change it in a moment. So if you do have access to a VPN, you'll be able
to do this as well. Otherwise, it can be a little bit difficult unless you have multiple public IPs.
But I just want to show you the concept anyway. So let's just save this rule, come back to instances,
take the public IP address. And in a browser, let's just hit Enter. And that looks great.
So I get access to this instance. Now what I'm going to do is I'm just going to go in
and change my VPN here. So I'm connecting to a different service. And that means I've got a
different IP now. So let's just refresh the page. Now you can't see anything happening. But if you
look up in the top browser bar here, we can see we're trying to connect and this is what happens
with security groups. When you can't connect, it kind of just hangs for quite a while
and then eventually it will timeout. So that's definitely working. We're
not able to access the instance now. If I come back to security groups, and what I'd
rather do is choose my public web security group edit inbound rules. And instead,
I'm going to change this to any ipv4, because this is a web service. So we
want anyone on the internet to be able to connect. So let's just save that rule. And back over here,
it failed to connect, let's refresh. And now we're back in again. So that's a good configuration.
Now our web service is allowing only HTTP from the internet. And then it should be able to forward
on to the App Service, because of the security group rules we set up before. So let's test that
layer. Now back in EC two, let's go to instances. And what I want to do here is connect to my
public one instance, over instance, connect. And I'm going to check the private IP address of
my instance in my private subnet. And that's 10 04148. Now I've just noticed one of the things
we have done here, we've got to secure so we've locked ourselves out. Now if you just click on
this note here, it takes you over to an article. And we can see that we actually need Port 22 from
our IP address to be able to access the instance. So let's go back and set this up as a secure
configuration. So going back into security groups, what we need to do is go to public
web, edit inbound rules, add a rule. And this one can be SSH. And what we'll do here
is we're just going to add any internet address because I might be changing my internet
address a couple of times. So otherwise, of course, you could use my IP, or have a range
of addresses that you trust, that will be a more secure configuration. But for now we will be
changing IPS. So I'm happy to have that as open. So let's save those rules. Now let's try
and retry this instance Connect, and we're in. So the way I want to try and test that we can
connect to our AP layer is using curl dash s and then putting in the IP 10 04 dash 148. Let's
hit Enter, and we get a response. So that's great. Now remember, we didn't have an outbound rule
from that security group. So the response traffic is coming back purely because this is a stateful
firewall. So that's it for security groups. Let's move on and have a look at configuring a network
ACL back into VPC Management Console. Let's go to network ACLs. And what we'll see is there are
already network ACLs. So we've got one here for our custom VPC. Now let's go in and have a look
at the configuration. So we have inbound rules, we have a rule number 100, allowing all traffic
inbound. And then at the end, we have a deny rule. So remember, these get processed in order.
So in this case, everything gets allowed because of the allow rule. So the deny rule doesn't get
processed. outbound, we've got exactly the same thing. So let's try something, what I'm going
to do is edit the inbound rules. And I'm going to add a rule. And I'm going to make this one
on one. And what I'm going to do is specify HTTP source is going to be my IP address. So I
know my IP address is this one at the moment. So I put slash 32 for an exact match. And I'm
going to click on deny. So I'm going to deny access from this particular IP address to http.
Now do you think this is going to work? Hopefully, you realize there's an error here, but let's just
save the changes. And we'll go and check it out. Back in easy too. I'm just going to copy the
public IP of my instance, go to a new web page, hit Enter, and I get access. So of course,
that didn't work. Now let's go and see why. Back in the VPC Management Console, let's edit
these rules for the network ACL. Now as you know, rules get processed in order. So we've got a deny
rule here that's after and allow the allow allows everything. So actually, this is not going
to work. Let's change this to 99 sort by rule order. And now we have a specific deny before and
allow. So essentially, it's going to look through the rule set, it's going to see that traffic's
coming in on port 80 from this particular IP, and it's going to deny it. So we never get to
the alarm rule for this particular traffic. So let's save changes. So we'll go and test this
out now. But there's just one thing that you need to understand with security group rules, when
you apply them, they do actually get put into effect pretty much immediately, there can be a
bit more of a delay with a network ACL. So if you find you still have access to your instance, then
it's probably just because you're a bit too fast. So just give it a couple of minutes and try
again. And we should find that we do get denied in a browser window here. Let's paste in our
IP address. And sure enough, it looks like it's hanging. So that's clearly not working. Now what
if I change my IP So this time I can change to somewhere different and very quickly, this time,
the connection did actually change, and it did allow me in. So sometimes the network ACL rules
apply super fast. And sometimes there's a bit of a delay. So it really can vary. So that shows
you how to use a deny rule with a network ACL. Now I'm just going to come back in and clean up
that rule. So I don't want to have any deny rules in my network ACL. So let's just remove that one
out from the inbound rules, and save changes. Now there are a couple of things we can clean up now
to make sure that we don't get any bills. Firstly, let's go to our Nat gateway, these can cost money.
So let's just delete this Nat gateway. And that's gone. And don't forget, you will also need to make
sure that the elastic IP has also been removed from your account back in easy to Now I do want
to keep one public and one private instance. But I can terminate the other public instance. Now
we will actually use the command line for this, I just want to show you another ci command.
Back in our file here, we can specify the values for our DC two instances. So I've just got
one here. So I'm going to put it in inverted commas. Copy this command, and back in my command
line, let's just try and terminate this instance. And when you do that, you'll see that the current
state is shutting down, and the previous state was running. So we now know that our EC two instance
is being terminated. So that's it for now, but do leave those other two instances running because
we will be using them in subsequent lessons. Hello, and welcome to this lesson. There are
quite a few circumstances where we might want to be able to connect machines that were running
in different v PCs together using ipv4 or ipv6. So for instance, we might have two v PCs,
which could be in the same region. It could be in a different region or even a different
account. And we want the easy two instances in those two v PCs to be able to communicate using
private ipv4 addresses or maybe ipv6 addresses. Now a way that we can do that is to use
VPC, peering. VPC peering allows routing for those addresses internally between those v
PCs. And when I say internally, what I mean is, it's not going out to the internet. It's using the
AWS global network to route traffic between the VPC so it never touches the internet. It does
get encrypted when it moves between regions, and it uses private ipv4 and also ipv6 addresses.
So it's a great technology for lots of use cases. Let's have a look at how we can use VPC peering.
So let's say we have a VPC, this is VPC a, and then we have another VPC, VPC B, and we
want to be able to route connections between these two. So we got easy two instances, maybe RDS
databases, even lambda functions, anything that communicates inside a VPC and we want to be able
to connect those resources together using private ipv4 addresses. So what we can do is establish a
VPC peering connection between those two v PCs. So this will enable routing using private ipv4
addresses, or ipv6 addresses. Now, the cider blocks for our VP C's must not overlap. So this
is a very important consideration when you're choosing the cider blocks to use your VP C's.
Because even if they're in different accounts, you might someday want to connect your VP C's
together. And if they have the same cider blocks or cider blocks to overlap with each other, then
that won't work. So you must have cider blocks that don't overlap. Now what if we have another
VPC, VPC and VPC d A fourth one? So they all have their own cider blocks so looks good. We can
definitely set up VPC peering between these. So what we do we establish a VPC peering
connection between BBC a and VPC c between VPC B and VPC D and then with VBC C and BBC D.
So we now have four peering connection sets up. But the problem with VPC peering is it doesn't
support transitive peering. Now what that means is, let's say we have resources and VPC a,
and it has a peering connection with VPC B. VPC B then has a peering connection with VPC
D. So does that mean that bpca can communicate with resources in VPC d? By going via the VPC
B Well, no, it doesn't work. transitive routing doesn't work. So what we actually have to do is
set up two more peering connections. We've now got a peering connection between A and D, and between
B and C. So we've got a full mesh topology. Because VPC peering doesn't support transitive
relationships. We do need this full mesh. So that becomes quite a lot of connections. Now with
these four v PCs, it's not too bad. But you can imagine if you spread this out across a lot more
v PCs, soon this full mesh topology means you've got a huge number of connections to set up and to
manage. So it becomes a bit unwieldy. And there are other solutions, which we're going to look at
later on in the section and in sections to come. Now, as I mentioned before, the VP C's can be in
different accounts, and they can be in different regions as well. Now let's have a look in a bit
more detail about how we set this up. So we've got Region One, and we've got region two. So
in this example, we got two v PCs in different regions could be in the same account or different
accounts, and we want to pair them together. Now they each have their own cider blocks, which are
unique, they're not overlapping, so that's good. And then we've got some subnets. Now these could
be private or public subnets. Because remember, it's the private addresses of the instances that
will be used for the VPC, to VPC communication. And we've got some instances running in these
subnets. Now I'm showing public because we're going to set up a lab very much like this,
it makes it easier for us to connect to our EC two instances if they're in public subnets.
So we create a VPC peering connection. And I'll show you how to do this in the console. Now the
next thing we need to do is set up our security groups. So let's say we want to use the ICMP
protocol to send a ping request from one instance to another, and the other instance back again.
Well, in that case, we have to set up a security group rules as well. And we can use the cider of
the other region. So we can use the cider block as the source and say that anything coming from
that cider block is going to be allowed based on this rule. Now another thing we have to set up for
this to work is the route tables. And what we do is we have a destination route, which
goes to the cider block of the remote VPC. And we specify the peering IDs, when we set up
the peering connection will have a peering ID, and we're going to specify that as a target.
And then we do the reverse on the other side, so that the route table will send any
traffic destined for this cider block to the peering connection, and then it
gets routed across to the correct VPC. Hi, guys, in this lesson, we're going to create
a VPC peering connection between two v PCs in two different accounts. So the configuration is going
to be pretty much what we see on the screen here, we have our management account in our AWS
organization and our production account. And we're going to have a VPC in each using these
cider blocks. And then we're going to create security groups. And we're going to specify these
particular rules. Now, firstly, let's have a look at how we establish the connection, we need to
establish a peering connection between the VP C's, and we can do that in the console. Then we need to
update the route table really important that you have a route to your target. So the route table
for this VPC must specify as a destination the cider block of the other VPC and the pairing
target, and then the reverse is true. Over on the right hand side. Our security group rules
will ensure we can use SSH and ICMP to connect and the way we will test the connectivity
is to ping from one instance to the other using the private IP address and that will show
us that we're using the VPC peering connection and not the internet. Now there is a bit of background
work you need to do before we get started. So unless you want to use the default VPC in your
production account, you should create a new VPC using the same ranges I just showed you. So from
the VPC Management Console, you're going to want to change to DCT production, go to your VP C's and
then create a VPC. Now I've already created mine, and I have the values for you in a file. So just
open the code Amazon VPC, custom VPC dash prod file, and this is the information you need there.
You know how to do this, you've done it earlier on in this section. So just create this VPC and
add the subnets. Add your internet gateway, your private route table, and then we're good
to go. Now we don't need all of this for this particular exercise, but let's just create it
standard as per the VPC in our management account, and then we might use some of these
subnets later on. So let's get started. Now I need a couple of pieces of information.
With my VPC selected in my product count. I'm going to copy this owner ID that's the
account ID and I'm going to put that into my file. Next I need the VPC ID and let's put that
in the file. Now we're going to switch back to the management account. Let's go to peering
connections create peering connection. We need to give it a name. Let's just call it my
peer. Select the local VPC, which is my VPC We can choose another account rather than my
account and copy this account ID. we'll paste that in. We're going to stick to the same region,
but we need the VPC ID on the other end as well. So that's the one that we copied here. So let's
copy that to our clipboard, paste that in and create the peering connection. So it says here
a VPC peering connection, PC x, and then it's going to number my peer has been requested, the
owner of the remote VPC must accept the peering connection. So let's go back and do that. Let's
go to DCC production, go to peering connections, and we can see the request pending acceptance. So
just select it on the left, and then go to actions accept request. And we can accept that one. And
that's done. Now one of the things we're going to need to test is going to be an easy to instance.
So let's launch an easy to instance. But before we actually launch that one, I'm going to create
the security group, the security group is going to be called VPC pair dash prod. And these are
the rules we're going to set up. So let's create a security group. Give it a name. I just put that
in the description as well. Choose the correct VPC and the outbound rule is fine. For now. All
we need is the inbound rules to be set up. The first rule I'm going to set up is ICMP ipv4.
So all ICMP that's going to allow ping requests, and it's going to come from 10.0 dot 0.0 slash 16.
The next row is SSH, you can either do custom TCP and put in the port range, or choose SSH, and it
will do it for you. And same as the one above, we just want to give it the same addresses. So this
should allow inbound connections from the VPC in the other account in the management account using
from any IP address in the entire cider block. So we can save the security group. Now let's
launch an instance that uses that security group. So I'm going to launch an instance,
it's going to be Linux to ami, T to micro, make sure you select your
VPC, I'm going to put it into my public subnet public one a. Let's click on
Next, go through to security group. And we're going to select a security group.
And that's going to be VPC peer prod, click on review and launch and launch. If
you don't have a key pair for this region, which I don't at the stage, then I'm going to
create a new one. I've called it prod dash and V or download that key pair and then launch my
instance. So now let's go back in the city management console to the management account. In
the management account, we need to set up this security group and we're going to assign that
to one of our instances in a public subnet. So in this account, we've got two instances
running, let's go to security groups create a security group. It's called VPC, pair
dash MGMT. I'll put the same in the description, select the correct VPC. And then let's add the
same rules as before. This time, the block is going to be 10.1 dot 0.0 slash 16. So now we have
the same protocol specified so we should be able to connect from the prod VPC to the management
VPC using these protocols as well. So let's create that security group. Go back to instances public
one a actions security, change security groups. And we're going to add in VPC pair dash MGMT.
And the reason I'm not going to remove public web is because we have a role in there allowing access
from the internet to Port 22, which we need for instance, connect. So with those two added, let's
save the security group configuration. And the very last thing that we don't want to forget is
our route tables. So let's go and do that. Now. Back in the VPC console for my management
account, I'm going to go to my main route table, choose routes, edit, add, this one's going to
be 10.1 dot 0.0 slash 16. And it's going to go over a peering connection. We've only got one of
those, and it's called my pair. So let's save that switch across to the DCT production account. We
need to choose the main route table. I didn't label this one. Let's do it now. But I can
see that it's attached to my VPC. So let's go to routes, edit routes, add. And this one
should be for 10.0 dot 0.0 slash 16. And again, we're going to specify peering connection, it's
going to see the same peering connection, and we can save changes. So that's it hopefully it's all
set up. Now we've updated our route tables. We've got these two security groups with rules so that
we should be able to use these protocols based on our private IP addresses. So that's that's the
real test areas to Use private IP addresses to see if we can connect, we can definitely ping via the
public IPs if we've got our security group rules set up correctly, but we want to do it via private
IP is because that shows that rather than going out to an internet gateway, we're sticking within
the private space across the peering connection, back in easy to, let's select the instance ID, and
we want to copy the private IP address, I'm going to just put that into my file here. And coming
back here, let's switch to the management account. Choose the public one a instance, connect
by instance Connect. And let me just try and remember this IP 10 11221. So let's ping 10.1
dot 1.2 to one and hit Enter. And there we go, we get a response. That's across accounts. And
it's also across regions. And it shows we've got this bi directional traffic going between these
two v PCs. The other protocol we enabled was SSH. So let's just make sure that we can create
an SSH connection 10.1 dot 1.2 to one. And we can now I'm not actually going to log in, because
I need my key pair. And I'd need to specify some more details as well. But I just want to see
that the port is open. And that shows that the security groups are set up correctly, as well as
the underlying networking to allow this traffic over private IP addresses. So that's really it
for this lesson. Now, the only other thing you might want to do is you can practice by doing
the same thing and extending this configuration through to your instance in your private subnet.
Use your public subnet instance as a bastion host, you might have to use agent forwarding, and then
make sure you can connect bidirectionally from there as well. So that's just an additional
bit of fun that you might want to have if you want to practice a bit more. So now that
we've finished with this lab, we can actually terminate our instance, in the private subnet.
We didn't use that in this lab unless you carried on with the configuration. But
we will leave the public instance running for now. So let's terminate this instance.
And then you should go over to your production environment as well and terminate your EC two
instance there, and then we're all cleaned up. You'll remember that earlier in the course I
talked about how some AWS services are private in that they run within a VPC like EC two,
whereas other services are public because they have a public endpoint like Amazon
s3, for example. So that means when you connect to Amazon s3, you use a public DNS
name, so connect to it as a public endpoint. Now, what if you wanted to connect an instance to
Amazon s3, but you didn't want to use the public Internet, it might be an instance in a private
subnet. Well, that's where VPC endpoints come in. And there's a few use cases for VPC endpoints
with connecting privately to s3 being one of them. And there are two different types. There's a VPC
interface endpoint and a VPC gateway endpoint, the gateway endpoint is one which we can use
for s3. And the interface endpoint is slightly different is used for other services. So let's
start there. First, let's look at an example using a VPC interface endpoint. So we've got AC
two running in a private subnet. And we don't want this instance to have a public IP. And we
don't want it to be routed out to the internet via a NAT gateway. So we provision an interface
endpoint, which creates an EMI in the subnet. And then the instance can connect via that EMI
to public services, but it's using private IP addresses to connect to them. Now each interface
endpoint can connect to one of many AWS services. And you can connect to an AWS private link powered
service as well. We'll look at that shortly to see what that means. So this is a way that we can
connect our EC two instances to these services using private IP addresses. Now let's look at the
difference between that and a gateway endpoint. So in this case, I want to connect to Amazon
s3 to store data in an s3 bucket. And again, I don't want to have a public IP address. So
an instance in a public subnet, in this case, it is in a private subnet. And I don't want to
provision a NAT gateway, or at least I don't want this traffic to go out to the internet.
So I could provision a s free gateway endpoint. This is slightly different. It uses a route table
entry. So we now have to put a route table entry to point our traffic to the s3 gateway endpoints.
And that uses the prefix list for the s3 and the gateway ID. The instance again connects using a
private IP address to the gateway endpoint. And then from there, it connects to Amazon s3. Now you
can secure this with Im policies so you can apply a policy to the endpoint. And you can also apply
bucket policies. So for example, you can have a bucket policy that limits access to any traffic
that's coming from the gateway endpoint. So you now have a bucket Which will only accept traffic
from instances that are using the s3 gateway endpoint. So let's just recap the differences
with the interface endpoint. You've got an elastic network interface with a private IP with a gateway
endpoint, you have a target in your route table for the gateway. So interface endpoints, we
use DNS entries to redirect traffic, whereas gateway endpoints use the prefix list in the route
table to redirect traffic. Now what services Well, there's quite a few with an interface endpoint API
gateway cloudformation. And cloud watch are just a few examples. Lots of the public services can be
accessed via an interface endpoint. But a gateway endpoint is restricted to Amazon s3 and dynamodb.
Only with an interface endpoint, you use security groups to control traffic, whereas with a gateway
endpoint, you can use VPC endpoint policies. Now lastly, let's look at how we can
use this in a service provider model. So what I mean is we have a consumer VPC and a
service provided VPC. So we've got a couple of subnets in each VPC. And what's happening is the
service provider is creating a service. And that service is behind a network load balancer. And
they want to provide that service to consumers. So what happens as a consumer is you provision
an endpoint, and then you use that endpoint to access the service. So we're actually publishing
a service in one side, and then we're consuming it in the VPC on the left, and using an interface
endpoint to actually consume that service. So that's how it works. And in the next lesson,
we're going to set up a gateway endpoint. Welcome to a nother hands on In this lesson,
we're going to create a VPC endpoint, it's going to be a gateway endpoint.
And we're going to use some policies to see how we can control access to an Amazon s3
buckets. So this is basically the configuration we already have a VPC and a public subnet, and we've
got an instance running in it from earlier on. Now we're going to create an Amazon s3 bucket.
I'm getting ahead of myself a little bit here, because we actually cover s3 in a lot of detail in
the next section. If you're completely unfamiliar with it, and you want to get a primer, you could
flick forward, but we won't be doing too much here, it's gonna be fairly straightforward
stuff. Now when we create our endpoint, a route will be added to our route table. And that
will point to a destination which will resolve to the IP addresses of Amazon s3. Now what happens
is, this is a more specific route than any other route, like the route going out to the internet.
So it should follow this path, which means any connections that go to the AWS s3 endpoints
should be routed via the gateway endpoint, and we'll be able to prove that that's happening,
and that we're not using the public Internet. So we will modify the policy here to do that,
you'll see what I mean shortly. And on the s3 bucket, we'll add a policy. Now bucket policies
are basically just resource based policies. It uses JSON language, just like we do with Iam
policies, but we just use them to control access to our buckets. So we apply them directly
to the bucket, rather than to a principle like an identity based policy. The first thing to
do is to head over and create the VPC endpoint. I'm in my management account in North Virginia. On
the left here, under endpoints, we can create an endpoint. Let's click this button Create endpoint.
And under services, if we put in s3 and search, we get these options, we're going
to choose gateway for Amazon s3. Now we need to specify which route table to
actually update. Now as you can see the route table for our VPC, the custom one is not there.
That's because we need to make sure we specify our custom VPC. Now we can see our route tables.
And I'm going to choose the one that's the main route table. So that's the one associated
with my public subnets. Now the policy by default is full access. So we have a statement
here, that's action, any action star effects allow, and then any resource and any principal.
So it's very open, but you can customize that. So let's just create the endpoint, and it's being
created for us. So here is our endpoint. Now what we want to do is go to route tables and just make
sure that the route table has been updated. So that's this one here, the main route table for
our custom VPC. Under routes, we can now see that we have the destination, and this is going
viral and VPC endpoints. So that's the route to Amazon s3 going via the endpoint. So that's
set up correctly. Another thing we need to do, we're going to run commands against Amazon s3
from our EC two instance. So I need to give it some privileges, I'm going to create a role. So
let's choose Create role here in the Iam service. common use cases is going to be easy to so we're
going to allow EC to to call an AWS service for permissions, just type in s3 and search. And
we're going to give full access. I'm going to copy the name of this policy. And we're going
to use that for the role name as well. So let's just paste that in, create the role.
And now we have a roll that we can assign to our EC two instance. So over in EC two, let's choose
our instance, go to actions, security, modify Iam role, and we're going to choose a role and we
should see it in here. And there it is Amazon s3, full access. So let's save an instance now has the
privileges it needs. Over in the Amazon s3 console which you can find under services and storage,
we're going to create an s3 bucket. So a bucket is just a container into which we add objects objects
or files and videos or whatever you want to add. I'm gonna call mine DCT VPC test, and
it's going to be in North Virginia, I can scroll down, don't need to change anything
else at this point and create this bucket. So now that we have a bucket, we can
add some objects objects, as I say, are just files. This is an object based storage
system. So we can come in and add files, I'm just going to add a couple of JPEG images and
upload. So simple as that we have some files on Amazon s3. Now let's come back to easy to choose
our public one a instance, go to instance connect and connect. Now we haven't specified any policies
yet, but let's just check that we can connect to Amazon s3. So now we should be able to run
commands against s3. Let's try running AWS s3 Ls and hit Enter. And we can see our
buckets, we should be able to run AWS s3 Ls and then s3 colon slash slash and our
bucket name as well. And if we hit enter here, we should see the contents of the bucket. So
at the moment, everything is working great. Now how do we know this is going over the
endpoint rather than going over the internet because we are in a public subnet? Well, let's go
back to our endpoint. With my endpoints selected, I'm going to choose policy. I'm going to copy this
code here in the endpoint policy, choose Custom paste it in. And let's just change the policy
to deny. So this should deny everything. Now if we're going by the internet, this shouldn't
make any difference. But if we're going via the endpoint, then this should block access. So back
in our instance, let's try and rerun that command and we get an Access denied. Let's try and run
the ls command. Again, we get an Access denied. So it's definitely not working back in my
endpoint. I'm just going to change this back again, because I don't really want that to deny
me from access at this point. So let's just go back to full access, click on Save. The next thing
we're going to do is set up our bucket policy. And the bucket policy is going to prevent any access
except from the VPC endpoint. And that's something that comes up in a lot of exam scenarios. So
let's go into our bucket here. Go to permissions. Come down to bucket policy, click Edit, and
I'm going to copy the bucket AR n. Now this is the bucket policy. So it's in your code Amazon
VPC directory bucket policy VPC, what you need to do is take this whole AR n here and just paste
your correct AR n over the top for your bucket. And there's two options here. One is without the
slash star, and one is with. So the one with a slash star means that you can also look at the
objects within the bucket. Now the last thing we need here is the VPC ID. So back at my endpoint
here, I'm going to copy the endpoint ID and then come back and paste that into my policy. So that's
it, this policy should now apply. Now what does it do? Let's have a look. The policy is a deny. So
it's going to deny any principle any s free action on these resources specifically, if the condition
does not equal, this VPC endpoint ID so in other words, if you're not coming from this VPC endpoint
ID you're going to get denied. If you are coming from this VPC The endpoint ID, it doesn't apply.
So let's copy all of this code to our clipboard. And back in the bucket policy editor
here, I'm going to paste it all in and just save these changes. So let's go
back and make sure we haven't broken access. Back in our instance, let's try them to run
the AWS s3 ls command, and we see our buckets, let's check that we can see inside our bucket and
that works correctly. That's good because this instance is coming from the VPC endpoint. So
again, we've proven we're coming via the endpoint. But the other thing we can do is check from
our own computers. And we shouldn't be allowed access. So back in a terminal here, I'm going to
run AWS s3 Ls. And I do see the buckets. But what about if I try to see inside the bucket, so the
full command is AWS s3 lS s3 colon, slash slash, and then your bucket name and hit enter. So
I've got an access is denied. So that proves that I'm not able to access the bucket from my
computer because I'm not coming via the endpoint. Now let's just go back to the console and have a
look at the bucket in the bucket here, you can see that we no longer have permissions to this bucket,
we've actually locked ourselves out because I'm actually coming through the console here,
and the console doesn't come by the end point. So what we need to do is
go back to our 82 instance. Now that is it for this lesson, we have
finished with the easy to instance, and the VPC endpoint with the endpoint, you
can simply select the endpoint, go to actions, and then delete endpoint. And that should
clean up the entry in your route table as well. But you can always just go and check, you
might need to refresh the page. And then it has gone. So once you've done that terminate
your instance. And we've finished for this lesson. Hi, guys, welcome to this lesson. This lesson is
about the AWS client VPN. So it is exactly what it sounds like. This is a way that you can connect
your client computer to the AWS data center to a VPC via a VPN connection. So a virtual private
network connection. So let's say you've got a computer which is Windows or Mac or Linux, you're
able to set up a client connection from there into a VPC. And that means you're then able
to communicate with resources in that VPC. So you might be able to connect to an EC two
instance, directly using private IP addresses. Now, of course, it's a virtual private network. So
that does mean that it's encrypted as well end to end. So let's look at how you set them up. So here
we have a region. in that region, we have a VPC, we have a couple of subnets. Now we create a VPN
endpoints. And the VPN endpoint is associated with subnets. So the client VPN network
interfaces are created in the subnet. And that is the method by which the VPN connection
is then able to communicate with resources in the subnets. Because there is an association between
this network adapter that's provisioned into the subnet, and the VPN endpoint, we then have the
client computer, and that's going to be running some VPN software. The VPN software is not
AWS software. So you need to choose one of the available options. There's lots of free options
in the hands on in the next lesson, we're going to use open VPN, the client software will establish a
connection with the VPN endpoint over SSL TLS. So Port 443, and that's going to be via the internet,
the VPN endpoint will actually perform source network address translation from the cider
block that's associated with the VPN client to the cider block that's associated
with the VPC. And on the client side, if you look in your route table, you can run
a command on Windows, which is route print, and you would then see your route table and you'd
be able to see that you have a destination for the cider block of the VPC and a gateway, which
is pointing at the VPN endpoint. So that's the theory behind how our client VPN works. Again,
this is an encrypted connection over the internet from your computer. So your computer is then
able to communicate using private IP addresses over to your instances in your subnets within your
VPC. So that's how it all works. And in the next lesson, we're going to set this up using a Windows
client on Amazon workspaces and a VPN endpoint. Guys The other type of VPN that we can establish
in AWS is a site to site VPN. So a site to site VPN is where you might connect for instance, a
customer data center or office location into AWS And have a private network established over the
internet. So an encrypted connection, which you can then tunnel through your traffic, and again,
use internal IP addresses private IP addresses. So the setup looks something like this. We've got
an AWS VPC on the left. And then on the right hand side, we've got a corporate data center,
that could be a data center or an office, and you want to connect that into AWS. So AWS
VPN is a managed IPsec VPN. And what we do is we create something called a virtual private gateway,
which is also known as VG W. On the AWS side, the VG W is deployed on the AWS and then a
customer gateway is deployed. On the customer side, when you have those two components, you
can then establish a encrypted VPN connection over the internet. The VPN connection supports
either static routes, or BGP peering and routing. So in our route tables, we can actually
specify a destination for the cider block of the corporate data center, and then point it to
a Virtual Gateway ID. So that's this device here. So that means any traffic going to this IP
range will be sent over the VPN connection. So it's fairly straightforward. And the most
common use case for this is what we see here, it's connecting in data centers, or office
locations, to AWS, so that you can then tunnel your traffic over an encrypted connection using
the internet. It can also be used sometimes as a backup connection for Direct Connect. And we'll
look at that later on in this section. That's all the theory I wanted to cover for now. And what
we'll do in the next lesson is it's going to be practical, we're going to do a hands on lab
where we're going to set up a VPN connection. AWS VPN cloud hub is not actually a service that
you can go and find in the AWS console. What this really is, is a pattern and architectural pattern
that you can use when you utilize the AWS site to site VPN technology. So let's have a look at the
architecture in which you can implement cloud hub. So we've got a VPC. And we've implemented a
virtual private gateway a VG W. And that's obviously deployed on the AWS side. We then
have multiple customer offices, or these could be customer data centers. But they're different
on premises environments that we want to connect using a virtual private network to AWS. Now, the
way that we connect them in a cloud hub topology, is using a hub and spoke model. So in
other words, AWS is the hub, the VPC. And then the spokes go out to each of these
offices. So what we do is we deploy a customer gateway into each of these offices. Each of
these customer gateways has a unique BGP ASN, that's a Border Gateway Protocol autonomous system
number. So BGP is a protocol that you can use for advertising routes to different parts of your
network. And each environment has its own ASN. And that corresponds with the routes that would be
advertised into the network, so the IP prefixes, so you must have a unique BGP ASN for each
office. And then we can establish a VPN connection between each of those customer gateways and
the same Virtual Gateway on the AWS side. Now network traffic can originate from an office
and go to the VPC or the VPC back to an office. But also, it can go between the customer offices
or the customer on premises environments, whether their offices or data centers. So the
customer office here can communicate via the VG W. So this custom office here. So we're using the AWS
site to site VPN to establish a routing topology, which connects multiple customer offices, as well
as the VPC itself. Now, this is using IPsec VPN, the same VPN, as we just looked at in previous
lessons. So that's it. That's VPN cloud hub. As I mentioned, if you go around looking in the
AWS console, you won't find cloud hub. But if you actually do a search online, you'll find some
articles about this architecture, which can give you a bit more insight as to how it's set up. But
basically, we're just connecting multiple customer gateways to a single virtual private gateway.
And then it's up to you to configure your BGP protocol accordingly to advertise the
routes that you want to advertise into the network. So that's it for a quick overview
of cloud hub. I'll see you in the next lesson. We've already talked about virtual private network
connections VPN. Now VPN is typically run over the public Internet That means that we are subject
to the bandwidth constraints and the potential latency issues on the internet, we can't control
the internet, we don't know from minute to minute hour to hour, what's going to happen, we can get
a good service provider. But still, sometimes there's a long way between us and our services
on AWS. And that means somewhere along that path, we could have congestion or latency. So one of the
solutions to that is using direct connect or dx dx means that you have a private connection into
AWS, that means it's not shared, it's not public, it's dedicated to you, it's a connection all
the way into your AWS data center and into your Amazon VPC. So let's have a look at how
we set this up. So let's say we have a VPC, we have a couple of subnets. And then we've got
our corporate data center, or it could be your office. Now in the middle here is something called
a direct connect location. These are different two AWS regions. And there's lots of these around
the world. So there could well be direct connect locations in the data center where your
equipment is, or somewhere nearby in your city. In the Direct Connect location, AWS have a cage
so they have a rack full of their own equipment. And then there's the customer or partner cage.
So either you have a rack with some equipment in that data center, or you leverage an AWS partner.
Now both of these cages will have a router. So we got the Direct Connect endpoint on the AWS cage.
And then in the customer or partner cage, we have the customer or partner router, and you must use
certain types of connectors, a dx port is actually allocated for you. And then what you do is cross
connects between the customer or partner router, and AWS, we then have a customer router, actually
in your data center, and direct connects in AWS. And we can form the Direct Connect connection. So
now, from your customer router, you need to have a physical connection into the customer or partner
cage. So that might be something you need to speak to your local ISP to get that connection
from this point into your data center unless you happen to have all your equipment in a direct
connect location, which can often be the case. Then from there, we have the cross connects into
AWS and then a physical connection all the way in to an AWS region where your VPC is, that's a
physical fiber connection, running at either one, or 10 gigabits per second. Now, 100 gig has
just been released recently for some locations. If you want slower speeds, you can talk to
a partner, and they can give you speeds from 50 megabits per second upwards. So let's have a
look at some of the benefits. You've got private connectivity between AWS and your data center or
office, you get a consistent network experience, you can control the network path, it's not like
on the internet where you just don't know what's happening. That means you can increase the
speed, improve latency, get better bandwidth and throughput for your connection. dx can
be quite expensive for many customers. But for those who transfer a lot of data from their
data center into AWS, it can be cost effective. Now let's go a level deeper. So we've got the
same configuration here. And you can see some of the AWS services that are in the public space at
the bottom of this box set. So how do we provision connectivity across this private line? Well, we
have to create something called a private viff. A Vf is a virtual interface. A private
viff is the way that you connect into your VPC in the same region using a Virtual
Gateway. So there's a virtual private gateway attached your VPC and the private viff will
send data across the DX connection into your VPC is a virtual interface that uses 802 point
one Q, virtual local area networks VLANs and a BGP session as well. Now what
about connecting to the public space, you don't connect to the public AWS services via
a private viff. Instead, you need a public fifth, our public This will allow you to connect to
AWS services in the public space that are in any AWS region. But you can't connect to the
internet via the public fifth. Now what if you want to connect to multiple v PCs in the same
region, when in that case, you have multiple virtual private gateways and multiple private
this to connect to each VPC You can also create something called a hosted Vf, which means you
can share a Vf with another AWS account as well. As I mentioned a bit earlier, you can get lower
speeds from APN partners. So these are partners in the AWS partner network. And those speeds can
then be from 50 to 500 megabits per second 100 gig is also featuring in some select locations,
those are the AWS Direct Connect locations. So that could be where you are might not be probably
won't be on the exam, yet, it's very, very new. Something that is really important for the exam is
to remember that dx connections are not encrypted, you cannot encrypt a dx connection. So there's
no way that you can select a checkbox and enable encryption in transit. It just isn't a feature.
So what do you do if you want to encrypt your traffic? Well, you can then create an IPsec site
to site VPN over the top of the connection. So you have your dx connection, and you're basically
running a VPN over that connection. So now your traffic is private, it's on your private
DNS connection, you've got the latency and bandwidth features. And you're also encrypting
your traffic as well using a VPN tunnel. So that's really important to remember, it
does come up in a lot of exam questions. Now that's it for the core
theory around Direct Connect. And in the next lesson, we're going to look at
another feature called direct connect gateway. Welcome to this lesson. In this lesson, I'm
going to cover AWS Direct Connect gateway. Now the best way to understand the benefits
of direct connect gateway is to have a look at an architecture where we don't use it and how
complex it can get. And then we're going to look at when we use direct connect gateway and
how it can solve some problems. So here's an example architecture where we're not using direct
connect gateway. Now we have multiple regions, and we have an office. And we have multiple
dx locations in different parts of the world. And what we're doing is we're connecting each of
those regions to a dx location that's close to that region and then into a corporate office. And
we're doing the same in the EU central one region at the bottom here, as we are in US West one. So
this company now has multiple locations, where they then have connections into AWS using dx, then
must establish a private viff. And that connects to a single VPC in the same region using a Virtual
Gateway, we do the same in the second region. Now dx is a regional service. So obviously multiple
DNS locations have to be used for this topology, and also requires at regional offices, or long
distance, expensive links. So in other words, these customer routers here have to either be
in one low physical location, one geographic location, and you've got a very long distance
link coming from Europe, or the US, or these are multiple offices in different geographical areas.
So when we want to start connecting our offices to multiple regions, using direct connects, it can
become quite expensive, and quite complex. So now let's look at an architecture where we use direct
connect gateway. So in this case, we have the same two regions, we have a single corporate office
and a single dx location. And so we now only have that connection into our office from one location.
And we have a dx gateway. And then the DX gateway is actually connecting to multiple regions, a
private Vf is associated with the DX gateway. And then the DX gateway is associated with a
Virtual Gateway. In each of the regions, BGP advertises around to all v PCs via the DX gateway.
And the traffic that's going from the DX gateway to these different regions is going over the AWS
backbone, so it's using that consistent network experience of the AWS global network. Now network
traffic can go from the office to either region, so any of the VPC is connected. And of course,
I'm only showing two here. But you can have many, many regions that are connected to a dx gateway.
Now, what you can't do is actually route regional traffic from one region to another via the DX
gateway, it doesn't support that. But you can use it to connect from your corporate office using a
single dx connection into multiple regions around the world. So that's the x gateway. It's a really
useful technology if you're a global company, but you don't have global offices or you want a
single office location to have this consistent network experience into multiple regions around
the world and this is a great technology to use AWS transit gateway is a really awesome service.
It's described by AWS as being a Cloud Router, and it connects v PCs and on premises locations
together using a central hub. So let's have a look at what this means. Now again, what
I want to do is show you a fully meshed architecture without AWS transit gateway to help
you understand the problem we're trying to solve, because when we have lots of VP C's, and on
premises locations, it can get really complex, the peering connections that we set up if we use
VPC peering can become extremely complex. So let's say we have VPC A, B, C, and D again,
and we've established our VPC peering links. And as you know, there's going to be
quite a few peering links here, we've got six peering links that we've got to set up
just for for V PCs. And as you increase the number of VP C's, it gets very complex. So here
we have six VPC peering connections, we then have a corporate office connected via a customer
gateway. So how do we connect the corporate office using a site to site VPN to each of these v
PCs? Well, we need a Virtual Gateway in each VPC, then we need to establish a connection
to the customer gateway from each VPC. And each of those is its own encrypted IPsec VPN.
So there's for site to site VPN connections. And that's not even including redundancy. If you
wanted to add redundancy, you'd need another customer gateway, and double the amount of sts VPN
connections. So it starts getting super complex. Let's now look at the same architecture. But with
transit gateway. In this case, the same for V PCs and a corporate office, we stick transit
gateway in the middle, and it becomes the network transit hub that interconnects the V
PCs and on premises networks. So now we have connections into each of these v PCs, the V
PCs become attached to the transit gateway. And you specify one subnet from each availability
zone, and that enables routing within that availability zone for any other subnets. We then
have the customer data center, we've got the corporate office here with a customer gateway,
and the customer gateway connects in. And that's it. This is now a service, which is allowing us to
connect through this Cloud Router, the central hub to any of these v PCs, tgw. W's can be attached
to VPNs, Direct Connect gateways, third party appliances, and also transit gateways in other
regions and also other accounts. So let's have a look at how it works with the x gateway. So in
this case, rather than using a site to site VPN, our corporate office has a customer router,
and we're connecting into a dx location, and we're using a dx gateway. So now the DX
gateway has a connection to transit gateway. And that's called an association. We then have the
physical connection back to the corporate office from direct connect, and we create something
called a transit van. So this is another type of virtual interface specifically used for Direct
Connect gateways, when are associated to a transit gateway. So transit Vf is only used when you're
attaching a dx gateway to a transit gateway. Now this architecture then supports for
transitive routing between on premises, the transit gateway and all of those
connected v PCs. As you can imagine, when your company gets bigger and starts using
more VP C's in more regions, and you want to have that transitive pairing between them, it
can get so complex, that transit gateway will really solve a lot of challenges. So that's it
for this lesson. I'll see you in the next lesson. Hello, and welcome to this lesson. I'm now going
to talk about using the ipv6 protocol in an Amazon VPC. So remember, I mentioned earlier in the
course that there's two versions of IP, which are used extensively. One of them is ipv4, that's
by far the most commonly used, it's been around for quite a long time. And then there's ipv6. Now,
ipv6 has also been around quite a few years, but it's not being used anywhere near as extensively.
But that needs to change over time because we are running short of ipv4 addresses. So we're going
to have a look at how you can use ipv6 in a V PC. So let's start by looking at the structure of
the IP v4 address. So remember, it's made up of four numbers separated by dots. And those numbers
come from an octet. So that's eight binary bits, which are either one or zero. So an ipv4 address
is 32 bits long. Now let's have a look at how many addresses you get for that you get 4.3 billion
addresses, which sounds like a big number. And it's a big number of its dollars in your bank
account. But when it's addresses that needs to be assigned to all sorts of different devices all
over the world, in a world full of 7 billion people, it's just not anywhere near enough. And
it might have sounded like more than enough, quite a few years ago, but it was became apparent,
even in the 90s, that it was not going to suffice, and it hasn't. So we are close to exhausting these
addresses. And Nat has to be used extensively. So if you're in a company, and your company has 1000s
of computers internally, then those computers will most likely be using ipv4 addresses. And those
will be private addresses. And when they access the internet, they go for a NAT device or some
sort. And that means that a public IP address is used to represent many, many PCs. So that's a
workaround that we have to put in place with ipv4. With ipv6, we don't have to worry about that. So
let's look at the structure of an ipv6 address. So this is the structure of ipv6. It also has
a network part and a node part. But it's 128 bits long. So it's a much, much bigger number.
But also it uses hexadecimal. Whereas ipv4 uses dotted decimal. So that means there's a lot more
potential values that you can use in hexadecimal versus decimal. So that means the amount of
addresses is much, much bigger. And this is the number that's the number of addresses you can
get out of ipv6. And it's absolutely huge. So put it into some kind of perspective. And by the way,
if you look on Google for analogies for the size of the ipv6 address base, there's all sorts of
fantastic analogies, because it really is massive. So one that I like is that you can get 100 ipv6
addresses for every atom on Earth. So that is a huge, huge number, which means we never ever have
to worry about running out of ipv6 addresses. So let's have a look at how we need to set up our
VPC. So we've got a VPC with a couple of subnets, we need to have an ipv4 cider block. And then we
need the individual subnet ranges for our subnets. Now, we also need an ipv6 cider block now, so
we've allocated one to this account. Now, AWS will assign a slash 56 ipv6 address range to the VPC,
then you can create your subnet ranges within that address space. And those become slash 64 subnets.
Now, a slash 64 subnet will allow 18 million trillion addresses. So again, it's an example of
why you really don't need to worry about how many addresses you're going to have for your computers,
because it's just huge. Now, you'll notice there's two numbers highlighted in red at the end of the
IP address. This is a hexadecimal pair, which has values from 00 to FF. And this designates the
individual subnet. So it has to be unique for each subnet. And it means that you're going to
have a possible 256 subnets, with ipv6 blocks in them. And each of those is a slash 64. So each of
those will support 18 million trillion addresses. So lots of flexibility for your VPC. Now let's
look at the route table once we've enabled ipv6, so we now have a local route for the ipv6 cider
block. And we need a route to the internet gateway for everything that's outside of that
range, just like we did for ipv4, we have the colon colon slash zero for ipv6, pointing at the
Internet gateways ID. And that means that anything that's not an ipv6 address in this range will go
to the internet gateway. So we'll make sure that we have that specified in our route table when we
enable ipv6. Now all ipv6 addresses are publicly routable. That means there's no network address
translation. Now, if you want to, you can use something called an egress only internet gateway.
Now the purpose of this is when you want to allow outbound access only using ipv6. So it's kind of
like having a EC two instance in a private subnet with ipv4 and then adding a NAT gateway into a
public subnet. It means that that instance is protected from the internet, no one can access
it directly from the internet, but it does have internet access outbound. So that's what an egress
only internet gateway does. So that's it for the ferry on this topic, and in the next lesson,
we're going to go in and enable ipv6 for our VPC. Hi, guys, in this lesson you're going to learn
about VPC flow logs And then we're also going to set a flow log up to see how it works and
what data actually captures. So VPC flow logs capture information about the IP traffic
going to and from network interfaces. In a VPC, the data is stored using cloud watch, or Amazon
s3. And you can create the flow log at different levels. So at the VPC level, at the subnet
level, or at the interface level, service at the interface level, it's associated with the
ENI, that's attached to an EC two instance, you can capture a lot of traffic, which is really
useful for troubleshooting purposes and security as well. So let's go and create a flow log in
easy to I still have an instance running, if you don't have an instance running, just launch an
instance, just as we have done before, and put it into your public one, a subnet, and it should have
a public IP address. Next, we're going to actually send our data to cloudwatch logs. So in the cloud
watch service, I'm going to go to log groups, create log group, and create myself a log group,
I'm going to call it my subnet logs, I can set a retention setting. For me, let's put five days so
after five days, I don't need that data anymore. And let's create the log group. Next, we need to
create a role. So the flow log service has the permissions it needs in the identity and access
management service, we're going to create a role. So let's create a role. choose Create role, we're
going to choose easy to for now we're going to modify that soon, because that's not actually the
service that's going to be assuming this role, we're going to go straight past policies,
because we're going to add an inline policy. And I'm going to call my role flow logs
cloud watch, I'm gonna remove the description and create this role. Now let's find the
role. And under permissions, we're going to add an inline policy, we're going to go to JSON.
And we have this JSON code here in your code, Amazon VPC directory. And it's VPC flow logs dot
JSON. So all we need to do is copy all of this. As you can see, the service is going to be provided
with the permissions to create a log group, create a log stream, but log events, describe log groups
and describe log streams. So with that copied, let's come back, override all that code, click
on review, give it a name, I'll just call it cloud watch permissions and create the policy.
Now we do need to edit the trust relationship is not actually easy to that's going to assume this
role. So coming back here, the trust policy can be replaced, we can literally just copy this piece
of text here. And we're going to paste it over where it says EC to dot Amazon aws.com. So now the
service that is able to assume this role is VPC flow logs. Let's update that trust policy. That's
it, we're now ready to go and create our flow log. Back in easy two, I've only got one instance
running. So it's going to be easy to identify the network interface, we're going to create the flow
log here at the network interface level. So flick over to flow logs, create flow log, I'll just call
it my flow log. Let's put it for all traffic, and a one minute aggregation. So we get some data
nice and fast. we'll delete it afterwards when we terminate our instance anyway. And we're
going to send a cloud watch logs. So we've got our log group. And let's find our role, which is
starts with flow. So it's flow logs cloud watch. And we're going to leave the default format, and
then just create that flow log. So now let's try a couple of things. We want to send some successful
connections. So let's copy our public IP, go to a new window here and put that in. And we've now
generated some HTTP traffic. I might refresh that a couple of times. And what about sending some
traffic, which we're going to get rejected on that's another thing that we could do. So let's
come back to instances, check out what security group this instance is in. And it's actually got
two. So let's go to the public web one, because I think that's the one that's got some rules
which allow certain protocols from the internet. And yes, we can see the SSH and HTTP rules are
in there. So let's go and edit the inbound rules. And I'm just going to temporarily delete my SSH
rule and save. Now from a command line, I'm simply going to try without any arguments to SSH to that
instance. And that shouldn't work, it should just keep failing because we don't have the security
rules to allow this. So that's basically it just generating a bit of traffic. So what we can do now
is go to cloud watch logs, and see if some data is starting to be sent there. Back in cloud.
Watch logs, I'm going to select my log group. And let's see if we've got a stream. And I
do have a stream that's nice and fast. Now, don't worry if it's not there yet, you might
have to wait a few minutes, and it will turn up. So let's select my log stream and see what data
we have in here. And you can see there's a few entries here, we can see some rejects. And
associated with those is various information, including the elastic network interface,
the source and destination IP addresses, we've got port numbers, we've got protocol
numbers, we've got various bits of information in there that could be useful in whatever
analysis you're doing. If you want to refresh, you can click on resume, and then you should
see some more data coming in over time. So there we go, we've got quite a few more rejects
coming in as well. And just a couple of minutes later, I've refreshed my screen. And we can see
some accepts as well. So there's quite a few, we can see the port number here, Port 80. So those
are successful connections go into our web server. So that's it. There's lots of data there
that you can use for various analysis. And it's really useful to understand the different
types of logs, we've got an AWS, what data is included in them so you know which ones to
use for your troubleshooting or your analysis. So that's it for this lesson. And we have
finished with our EC two instance now, so we can go ahead and delete it. Once you've
terminated your instance, you're all cleaned up