首先让我描述一下我的操作步骤:
我设置了一个带有CIDR 10.20.0.0/16的VPC(我创建并附加了一个IGW,igw-14ed6f75)。
然后我设置子网subnet_A 10.20.1.0/24。该子网的路由表为10.20.0.0/16 -->local
(注意:我未在此路由表中设置0.0.0.0/0 --> igw-14ed6f75
的路由)
我在subnet_A中启动了一个实例instance_A,其自动创建的公共IP为52.53.245.253
。 (顺便说一句,此实例使用的密钥对是bastion_box)
我想通过ssh -i ~/.ssh/bastion_box.pem ec2-user@52.53.245.253
现在我将一条路由0.0.0.0/0 --> igw-14ed6f75
添加到与subnet_A关联的路由表中,然后再次执行ssh操作ssh -i ~/.ssh/bastion_box.pem ec2-user@52.53.245.253
以下是我的问题:为什么我们需要0.0.0.0/0 --> igw-14ed6f75
的路由才能成功进入实例?我认为这个规则适用于连接到Internet的实例,但不适用于在子网中连接的外部计算机。
答案 0 :(得分:2)
TCP连接是双向连接。服务器需要能够向客户端发送流量(一旦初始握手完成,两者就无法区分)。如果没有出口路由,服务器就无法将任何数据包发送回客户端以建立连接。
来自http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html(加粗):
为VPC中的实例启用访问或从访问Internet 子网,您必须执行以下操作:
- 将Internet网关连接到您的VPC。
- 确保您的子网路由表指向Internet网关。
- 确保子网中的实例具有公共IP地址或弹性IP地址。
- 确保您的网络访问控制和安全组规则允许 流入和流出您实例的相关流量。