我并不完全清楚您想要实现什么,但我认为您希望您的子网访问 Internet,并阻止 Internet 直接访问驻留在您的私有子网中的实例。
很难以这种方式可视化您的工作流程。但我想我遵循:
(AWS VPC 互联网网关)--> 互联网
AWS VPC CIDR 范围包含:
a) 公有/私有子网#1
b) 私有子网#2。私有子网 #3.. 等
实现的典型设置需要以下亚马逊实体:
1) IGW - 互联网网关
2) VPC 的 CIDR 范围是你想要的大小。对于要保护的 VM,在仍然可以访问 Internet 的情况下,您需要为它们分配子网。子网必须在 VPC CIDR 范围内。但是不要使子网与 VPC 的 CIDR 相同,如果您这样做,那么它实质上会使您的私有子网成为公共可访问的子网,因为您已经使用了所有 IP 范围,在这种情况下,您必须将其分配给IGW 这不是你想要的。
3) 堡垒服务器 - 什么是堡垒服务器?这是您故意放置的服务器,用于接收 Internet 传入请求,从而保护您的私有子网。这可以是充当路由器或 NAT 的服务器的形式。这可以是
3a)Ubuntu(我最喜欢的发行版)的自制安装,转发了 iptables 和 ipv4 数据包,或者你可以这样做
3b) 亚马逊 VPC 中的 Nat 网关,或
3c) 可以在 AMI 社区中找到的 vpc-nat AMI。所以只要选择你想要的方法。
4) 创建安全组 #1 - 为堡垒服务器创建一个安全组。我通常将其称为“NAT SG”,并根据您正在运行的任何内容确定您的出站端口需求,有入站 0.0.0.0/0 和出站到 TCP 80、443、22 等。
5) 安全组#2 - 为私有子网创建一个安全组。这适用于允许子网内的所有流量并将所有出站非私有数据集中到 0.0.0.0/0 到堡垒服务器的流量。
要实现这一点,您需要做一个简化的概念操作顺序:
1)创建一个具有 CIDR 范围的 VPC(比如说 10.0.0.0/16)
1.5)创建一个互联网网关并将其分配给VPC(10.0.0.0/16)
2)创建具有在 VPC CIDR 中的 CIDR 范围(10.0.1.0/24、10.0.2.0/24、10.0.2.0/24 等)的私有子网。
3)创建一个公共子网,其中将包含堡垒服务器或您希望 Internet 看到的任何内容。(10.0.254.0/24(这是巨大的,允许子网中有 256 个服务器。您很可能只有堡垒服务器只消耗 1 个服务器,因此它可能会自动分配 10.0.254.2)
4)创建 2 个路由表- 一个称为private,一个称为public。对于私有路由表,编辑,然后为 0.0.0.0/0 添加一条新路由到堡垒服务器 ID。对于公共路由表,编辑 ,然后将 0.0.0.0/0 的新路由添加到 Internet 网关 ID(参见步骤 1.5)
5)启动您自己的服务器并将其设置为 NAT 路由器(如果您知道如何操作),或者启动 vpc-nat AMI (amzn-ami-vpc-nat-hvm-2016.03.0.x86_64 -ebs - ami-311a1a5b)是最新的,所以使用它。创建实例时,选择公有子网、VPC,并为其分配公有 IP(不要等待,给它一个弹性 IP,您将需要公有 IP),选择“NAT SG”安全组,然后然后启动它。启动后,您将选择它并选择 Network --> src/dest。检查并禁用它。这允许所有流量流入。您只需要 1 个堡垒服务器,我并不是说要全部 3 个。
6)启动您想要私有的 AMI 或自定义 VM,并位于私有子网(10.0.1.0/24、10.0.2.0/24、10.0.3.0/24...等)内。并为其分配一个私有安全组和相同的 VPC。如果是 linux 或 windows,您可能需要生成一个新的私钥 (pem) 以供将来登录。使用 puttygen 将 pem 转换为 ppk。
测试,以确保您有互联网连接:
堡垒服务器必须能够到达世界私有子网中的虚拟机实例(如果路由正确完成),应该通过将数据包流向 0.0.0.0/ 来到达互联网0 规则通过堡垒服务器,并且堡垒服务器将允许解析并流向互联网以进行出站请求。
我通常对 google 进行 ping 操作,因为它们不会阻止 ICMP 请求并且非常可靠。所以 ssh 进入堡垒服务器,ping google.com。如果您获得了 IP 但它无法获得回复,则意味着您的 Internet 网关或安全组没有所有出站流量 0.0.0.0/0,因此请仔细检查。
现在 SSH 进入私有服务器(假设是 linux)并 ping 堡垒服务器(10.0.254.X),你应该能够得到响应。这是一个好兆头。现在 ping google.com 看看你是否得到回复。我希望你会。如果您获得了 DNS 解析,但它在获取任何响应时卡住了,那么您忘记在堡垒服务器上禁用 Src/Dest 检查。然后转到您的 ec2 控制台,找到堡垒服务器并选择,然后选择操作、网络,然后选择 src/dest 检查并确认禁用并保存。
这应该使您的专用网络能够解决并影响世界,同时仍然受到互联网的保护。
我希望这有帮助。
理查德。