我通过Terraform进行了设置,其中包括一个VPC、一个公共子网和一个带有安全组的EC2实例。我正在尝试ping EC2实例,但出现超时。
我试图确保以下几点:
>
EC2 位于子网中,子网通过网关路由到互联网
EC2有一个安全组,允许所有双向流量
EC2 具有弹性 IP
VPC有一个附加到子网的ACL,允许所有流量双向传输
我不确定我错过了什么。
我的tf文件如下所示(已编辑以反映最新更改):
resource "aws_vpc" "foobar" {
cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "foobar_gateway" {
vpc_id = aws_vpc.foobar.id
}
/*
Public subnet
*/
resource "aws_subnet" "foobar_subnet" {
vpc_id = aws_vpc.foobar.id
cidr_block = "10.0.1.0/24"
}
resource "aws_route_table" "foobar_routetable" {
vpc_id = aws_vpc.foobar.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.foobar_gateway.id
}
}
resource "aws_route_table_association" "foobar_routetable_assoc" {
subnet_id = aws_subnet.foobar_subnet.id
route_table_id = aws_route_table.foobar_routetable.id
}
/*
Web
*/
resource "aws_security_group" "web" {
name = "vpc_web"
vpc_id = aws_vpc.foobar.id
ingress {
protocol = -1
from_port = 0
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
egress {
protocol = -1
from_port = 0
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_network_acl" "main" {
vpc_id = aws_vpc.foobar.id
subnet_ids = [aws_subnet.foobar_subnet.id]
egress {
protocol = -1
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
}
ingress {
protocol = -1
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
}
}
resource "aws_instance" "web-1" {
ami = "ami-0323c3dd2da7fb37d"
instance_type = "t2.micro"
subnet_id = aws_subnet.foobar_subnet.id
associate_public_ip_address = true
}
resource "aws_eip" "web-1" {
instance = aws_instance.web-1.id
vpc = true
}
为什么当我通过泰拉形态设置 VPC 和 EC2 时,我无法 ping 我的 EC2 实例?
允许所有流量通过安全组不会启用对实例的 ping 操作。您需要添加特定的安全规则 - 如下所示的图像以启用 ping 请求。
因此,建议仔细更改此规则。
为什么要在安全组规则中添加self参数。terraform文档声明< code >如果为真,安全组本身将作为源添加到此入口规则中。这基本上意味着只有该安全组可以访问该实例。请删除并尝试。
编辑:有关修复问题的步骤,请参见下面的评论
网络:我有一个私有子网和一个公共子网。附有IG的VPC。公共子网中有一个NAT网关。我还有2个路由表,公共路由表将所有内容路由到IG,私有路由表将所有内容路由到NAT网关。 EC2:我的EC2 Windows实例位于带有EIP和公共DNS的私有子网中。它有一个安全组,允许所有来自互联网的入站/出站,但我甚至不能ping两个rdp
我有一个 EC2 实例,其中包含标准的亚马逊 Linux 2 AMI。它位于具有以下入站规则的安全组中: 出站规则: 我可以从我的MacOS命令行SSH实例,但ping失败: 当然,它分配了一个公有IP,它位于具有互联网网关的VPC中的子网中,并且与之关联的NACL如下所示: 出站规则: 我能够成功地 google.com。 我对ping和网络层了解不够,不知道下一步去哪里看,为什么这不起作用。有
我有2个EC2 Ubuntu实例。它们共享相同的VPC、子网和安全组。实例的防火墙已关闭。但我仍然无法通过私有IP彼此ping。如何允许这些实例彼此ping?
我的目标是在VPC上的私有子网中创建一个EC2实例,我可以从外部互联网ping该实例。 到目前为止,我已经: < li >创建弹性IP < li >创建了一个带有一个公共子网和一个专用子网的VPC < li >在公共子网上创建NAT网关,并将其公共IP设置为弹性IP < li >在专用子网上的VPC中创建了EC2实例 < li >为EC2实例创建了允许所有ICMP流量的安全组 当我尝试ping弹性
我对AWS很陌生,已经测试过启动一个实例,如下所示: 下面是附加了入站规则的安全组 我的问题是无法ping此服务器。我能知道我是否理解错了什么吗?