【问题标题】:Mapping private network ports for Terraform ingress/egress using to_port and from_port configs?使用 to_port 和 from_port 配置为 Terraform 入口/出口映射专用网络端口?
【发布时间】:2021-03-18 06:48:03
【问题描述】:

我不确定此处的 Terraform 端口转发命名法。如果我在专用网络的 5000 端口上有一个应用程序,我想在 8000 端口上向公​​众公开 - 我应该设置哪些变量?

会不会是从私网的角度?

from_port: 5000
to_port: 8000

还是公网视角?

from_port: 8000
to_port: 5000 

如果我的内部应用程序需要响应数据,我是否还需要设置出口值?

示例来自:intro to terraform

resource "aws_security_group" "elb" {
  name = "terraform-example-elb"
  # Allow all outbound
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  # Inbound HTTP from anywhere
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

【问题讨论】:

  • 你有完整的例子吗?入口/出口规则是什么? AWS 安全组?
  • 您好 - 我在原始问题中添加了一个示例。它来自流行的博客文章“Terraform 简介”,这是我的问题的来源。由于该示例对 from_port 和 to_port 使用相同的端口号 - 我无法理解哪个端口是哪个 [

标签: terraform


【解决方案1】:

将安全组 (SG) 视为您的实例周围的封闭气泡。它与您的实例内部发生的事情无关。它在实例之外运行。

您设置的 SG 规则,在这个气泡中打洞,指定允许哪些端口上的哪些流量(TCP、UDP)进入实例和实例外部。

在您的情况下,由于您希望允许端口 8000 上的传入流量到您的实例,您将使用端口 8000 制作一个“洞”:

resource "aws_security_group" "elb" {
  name = "terraform-example-elb"
  # Allow all outbound
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  # Inbound port 8000 from anywhere
  ingress {
    from_port   = 8000
    to_port     = 8000
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

上述 SG 将允许端口 8000 上的传入流量到您的实例。不允许其他端口,因此是from_port == to_port。一旦允许此流量,您的实例正在执行的操作超出了 SG 范围和规则。因此,通常您必须在实例上安装一个服务器,侦听端口 8000。如果您的应用程序在端口 5000 上工作,那么您需要在实例上使用 反向代理,例如 nginx。 Nginx 将接受端口 8000 上的连接并将它们重定向到您的应用程序的端口 5000::

client--->SG:8000--->Instance:8000--->Nginx:8000--->Your app:5000

相反,如果你这样写

from_port: 5000
to_port: 8000

您将打开从 5000 到 8000 的所有端口,以通过气泡到达您的实例。

【讨论】:

  • 哇哦好吧 - 不知道 from_port to_port 指定了一个范围!这让我明白了,谢谢。
  • @alex 没问题。很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2020-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多