我在VPC中有一个相当标准的多层子网布局。 有一个数据库层/子网,一个Web服务器层/子网和一个堡垒主机层/子网。 我的问题是,我不能ping或ssh之间的子网。
特别是我想ping和从堡垒层/子网ssh到Web服务器层/子网。
172.31.32.0/20堡垒级 172.31.0.0/20 webserver-tier
两个子网位于相同的可用区域,并且两个子网都连接到相同的路由表。 路由表如下所示:
当地172.31.0.0/16 0.0.0.0/0 igw-xxxxxxxx
目前,Web服务器层的networkingACL允许所有stream量,所有协议,所有端口范围从堡垒层172.31.32.0/20。 出站/出站规则允许所有通信。 安全组织同样是开放的。 以下是Web服务器层的networkingACL。
规则#types协议端口范围来源允许/拒绝 100所有交通全部全部172.31.32.0/20允许 200 HTTP(80)TCP(6)80 0.0.0.0/0允许 202 HTTP *(8080)TCP(6)8080 0.0.0.0/0允许 210 HTTPS(443)TCP(6)443 0.0.0.0/0允许 *所有stream量全部全部0.0.0.0/0 DENY
我已经尝试了跨子网连接到默认/主路由表ping和ssh,我试图与Web服务器子网被连接到自己的路由表。 当我从笔记本电脑的IP地址打开任何这些子网stream量时,我能够通过实例的公共IP地址成功ssh。
我在网上看到了一些信息,这些信息暗示了AWS VPC中的奇怪行为。 例如,在通过VPC控制台创build弹性IP时出现问题,但是通过EC2控制台分配弹性IP,然后使stream量消失,好像陷入了黑洞。 解决scheme似乎是删除错误的EIP,并通过VPC或EC2控制台完全重新创build并分配新的EIP。 然而,这对于可能的/一般的AWS bugginess来说至多是一个间接的观点,因为在我的情况下,没有EIP参与。
我的下一个故障排除措施是重新开始一个新的VPC,创build两个子网,在每个子网中启动一个服务器实例,然后在它们之间testingping和ssh。 单一路由表,以及广泛开放的networking访问和安全组 – 不能简单得多。
这在我看来是一个基本的设置,所以我怀疑有一个基本的解决scheme,我错过了。 有什么想法吗? 谢谢,麻烦您了!
您需要从webserver-tier子网将路由和开放networkingACL返回到堡垒层子网,否则您的响应数据包将永远不会返回到服务器。 启用ICMP(并确保您的ping客户端仅使用ICMP – 一些默认使用UDP数据包)从networking服务器子网到堡垒,并打开适当的临时TCP端口(范围通常取决于操作系统;请参见http://docs.aws .amazon.com / AmazonVPC / latest / UserGuide / VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports )从webserver-tier转换为bastion-tier。
如果你同时在一个web服务器实例和一个堡垒实例上运行tcpdump,你可能会看到web服务器正在获取堡垒包并发送一个响应,但是堡垒实例从来没有得到响应。
检查两个子网中的实例的入口安全组规则。 您需要允许特定的CIDR子网,否则将默认的安全组附加到它们。
“允许来自分配给相同安全组的实例的入站stream量”
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html#DefaultSecurityGroup