使用AWS设置自己的VPC

本文详细介绍了如何在AWS中设置自己的VPC,包括创建VPC、子网、Internet网关和自定义路由表。通过这样的配置,可以创建一个公共子网用于DMZ和私有子网以隔离EC2服务器。同时,文中提到了使用NAT实例来允许私有子网访问Internet的必要性。
摘要由CSDN通过智能技术生成

虚拟个人电脑 当您使用AWS资源(例如EC2实例)时 ,会将它们分配给默认VPC 。 但是,通过使用AWS,可以轻松设置自己的VPC。 在这篇文章中,我描述了如何设置基本配置。 在此设置中,我们为服务器提供了一个公共子网,必须从外界( DMZ )进行访问,而为我们的(EC2)服务器提供一个私有子网,我们希望与外界隔离。 但是,为了能够从我们的私有子网访问Internet,我们将设置一个NAT实例 ,我将在另一篇文章中进行介绍。

下图显示了我要在本文中创建的设置:

vpc1

这些是我将要设置VPC的步骤:

  • 创建一个VPC
  • 创建子网
  • 创建Internet网关
  • 创建自定义路由表

创建一个VPC

第一步是创建VPC。 我没有使用向导,而是通过菜单:

screenshot-at-may-30-11-28-41

并选择手动创建VPC:

screenshot-at-may-30-11-29-45

填写VPC的名称和CIDR块以分配给该VPC:

screenshot-at-may-30-11-32-08

单击“是,创建”后,我们看到已创建VPC。 接下来是在我们的VPC中创建两个子网。

创建子网

在VPC仪表板中,单击创建子网的选项:

screenshot-at-may-30-11-39-26

创建后,子网如下所示:

screenshot-at-may-30-11-45-40

请记住,一个子网仅映射到一个可用性区域。 默认情况下,它具有一个路由表,该路由表将使两个子网之间的通信成为可能。 但是,要从我们的公共子网访问Internet,我们需要一个Internet网关(它是使用向导自动创建的,但是由于不使用向导,因此必须手动进行操作)。

创建Internet网关

为了使公共访问成为可能,我们需要创建一个Internet网关。 在控制台中这也很简单。 转到Internet网关,单击“创建Internet网关”,然后填写IGW的名称:

截图-May-30-12-46-53

默认情况下,创建的IGW是分离的,我们必须将其附加到我们的VPC(请注意,每个VPC只能有一个IGW)。 要附加它,只需单击“附加到VPC”,然后选择VPC:

screenshot-at-may-30-12-51-13

下一步是创建一个新的路由表,将我们的公共子网附加到IGW。

创建自定义路由表

要将IGW连接到我们的公共子网,我们需要一个路由表来定义路由。 我们通过单击“创建路由表”并在我们的VPC中创建它来执行此操作:

screenshot-at-may-30-12-58-28

创建表后,我们需要添加一条路由以允许传出流量到我们的IGW。 为此,我们向自定义路线表添加新路线:

screenshot-at-may-30-12-59-48

选择我们的IGW作为目标并输入目标'0.0.0.0/0',以允许分配的子网中的所有IP地址访问IGW。 创建路由后,我们需要将公共子网与该路由表相关联,因为默认情况下,没有子网与我们的自定义路由表相关联:

screenshot-at-may-30-13-06-29

因此,将我们的公共子网分配给路由表:

screenshot-at-may-30-13-07-28

现在,我们有一个公共子网作为我们的DMZ,还有一个私有子网。 现在让我们在两个子网中部署EC2实例并对其进行测试!

我创建了一个运行AWS Linux的标准EC2 micro.t2实例 。 重要的是在我们刚刚创建的VPN中创建实例,为其分配公共子网,并自动为其分配一个公共IP:

screenshot-at-may-30-13-57-01

接下来接受默认值,直到安全组步骤为止。 将“ HTTP”作为允许的协议添加到默认安全组:

屏幕快照于May-30-20-36-20

单击下一步并启动实例。 当要求提供密钥对时,请创建一个新的密钥对,并且不要忘记下载它:

屏幕快照于May-30-20-40-32

启动我们的网络服务器时,我们创建一个名为“ MyAppServer”的新实例,该实例将驻留在我们的专用子网中:

屏幕快照于May-30-20-45-41

使用与先前实例相同的安全组(请注意,可以在子网不能使用的可用区中使用安全组)。 还使用与先前实例(MyNewKeyPair)相同的密钥对。

现在,我们的VPC中有两个实例在各自的子网中运行:

屏幕快照于May-30-20-49-12

我们可以在WebServer实例的属性中看到它已经收到了公共IP地址,因此让我们尝试通过SSH访问它。 我为此在Mac上使用Terminal。 确保您下载的pem文件位于正确的SSH密钥位置,并且具有正确的访问权限。 我只是像这样创建一个新文件:

cd ~
nano MyNewKeyPair.pem
** paste pem content of downloaded key file **
[ctrl]-o
[ctrl]-x
chmod 600 MyNewKeyPair.pem

有了这个pem文件之后,我们现在可以建立到Web服务器的ssh连接 。 复制实例的公共IP地址并执行以下命令:

ssh ec2-user@52.7.40.73 -i MyNewKeyPair.pem

这将导致成功的连接,如下所示:

The authenticity of host ‘52.7.40.73 (52.7.40.73)’ can’t be established.
    RSA key fingerprint is 0c:5e:48:9a:44:79:af:bd:18:85:68:53:aa:52:a4:5f.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ‘52.7.40.73’ (RSA) to the list of known hosts.

    __| __|_ )
    _| ( / Amazon Linux AMI
    ___|\___|___|

    https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
    18 package(s) needed for security, out of 46 available
    Run “sudo yum update” to apply all updates.
    -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
    [ec2-user@ip-10-0-1-92 ~]$

现在,当我们执行“ sudo yum update”时,它将通过互联网获取以下软件包来更新必要的软件包:

Installed:
kernel.x86_64 0:3.14.42-31.38.amzn1

Updated:
aws-amitools-ec2.noarch 0:1.5.7-1.0.amzn1 aws-apitools-common.noarch 0:1.1.0-1.9.amzn1
aws-cfn-bootstrap.noarch 0:1.4-9.4.amzn1 aws-cli.noarch 0:1.7.29-1.13.amzn1
0.1.a1.11.amzn1
python27-configobj.noarch 0:4.7.2-7.15.amzn1 python27-devel.x86_64 0:2.7.9-4.115.amzn1
python27-jmespath.noarch 0:0.7.1-1.8.amzn1 python27-libs.x86_64 0:2.7.9-4.115.amzn1
python27-setuptools.noarch 0:12.2-1.30.amzn1 rpm.x86_64 0:4.11.2-2.64.amzn1
rpm-build-libs.x86_64 0:4.11.2-2.64.amzn1 rpm-libs.x86_64 0:4.11.2-1.25.amzn1
rubygem20-bigdecimal.x86_64 0:1.2.0-1.25.amzn1 rubygem20-psych.x86_64 0:2.0.0-1.25.amzn1
rubygems20.noarch 0:2.0.14-1.25.amzn1 time.x86_64 0:1.7-38.9.amzn1
tzdata.noarch 0:2015b-1.33.amzn1 tzdata-java.noarch 0:2015b-1.33.amzn1
unzip.x86_64 0:6.0-2.9.amzn1 yum.noarch 0:3.4.3-137.57.amzn1
yum-metadata-parser.x86_64 0:1.1.4-8.12.amzn1

Complete!
[ec2-user@ip-10-0-1-92 ~]$

现在让我们看一下我们的ApplicationServer实例。 正如我们在控制台中看到的那样,该实例没有公共IP地址,也没有弹性IP地址。 它拥有的唯一IP地址是私有地址:

screenshot-at-may-31-09-13-16

因此,如果我们要SSH进入该实例,则必须从Web服务器启动SSH连接。 我们可以使用与登录网络服务器相同的步骤(我们需要首先创建一个密钥对,然后像这样打开SSH):

[ec2-user@ip-10-0-1-92 ~]$ nano MyNewKeyPair.pem
[ec2-user@ip-10-0-1-92 ~]$ chmod 600 MyNewKeyPair.pem
[ec2-user@ip-10-0-1-92 ~]$ ssh ec2-user@10.0.2.37 -i MyNewKeyPair.pem
Last login: Sun May 31 07:22:39 2015 from 10.0.1.92

__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
[ec2-user@ip-10-0-2-37 ~]$

现在,我们已经登录了我们的应用服务器。 如果现在运行命令“ sudo yum update”,我们将看到以下内容:

screenshot-at-may-31-09-40-23

这是有道理的,因为我们的专用子网未连接到Internet网关,因此无法访问Internet。 为了使子网能够访问Internet,我们应该在VPC中添加一个NAT。 我将在另一篇文章中演示如何做到这一点。

翻译自: https://www.javacodegeeks.com/2015/06/setting-up-your-own-vpc-with-aws.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值