NMAP 显示 GCP 中所有过滤的端口 Kubernetes/Docker
NMAP shows all filtered ports in GCP with Kubernetes/Docker
我有一个工具可以使用 nmap
到 运行 主机上的基本端口扫描来检查打开的端口。它安装在 docker 容器和我的本地机器上,运行完美(显示预期端口已打开等)。
当我将此容器部署到 Google 云中的 Kubernetes 集群并触发扫描时,我注意到端口始终显示为已过滤。
我知道显示为已过滤的所有 1,000 个端口通常意味着某处有防火墙规则导致数据包丢失,但我不知道它在哪里。
我们的基础设施设置是:
- GCP/GKE 适用于 GCP 上的 Kubernetes
- 由 Kube 部署和管理的 Dockerized 容器
- Istio 服务网格
这是我尝试过的方法(没用):
- 更新了 GCP 中的
egress
防火墙规则以允许我所有实例上的所有内容(所有端口、协议)
- 向网络添加了 NAT 网关以确保它可以访问外部事物
- 确保 Istio 启用了所有出站(没有限制性出口规则)
我能做些什么来帮助进一步调试这个问题或找出可能应用防火墙规则的地方吗?
感谢您的帮助。
以下是我最终解决这个问题的方法:
我在 Pod 上使用了 traffic.sidecar.istio.io/includeOutboundIPRanges
注释。我将其设置为服务网格的 CIDR。
这样做使得任何从那个 pod 到 我的网格中的东西的请求都是通过 Envoy 发送的。 Envoy 忽略了其他所有内容(允许 nmap
请求正确扫描而不是被过滤)。
考虑到 Istio 中似乎有多少自定义可用,可能还有许多其他方法可以使它工作,但这满足了我的要求。
我有一个工具可以使用 nmap
到 运行 主机上的基本端口扫描来检查打开的端口。它安装在 docker 容器和我的本地机器上,运行完美(显示预期端口已打开等)。
当我将此容器部署到 Google 云中的 Kubernetes 集群并触发扫描时,我注意到端口始终显示为已过滤。
我知道显示为已过滤的所有 1,000 个端口通常意味着某处有防火墙规则导致数据包丢失,但我不知道它在哪里。
我们的基础设施设置是:
- GCP/GKE 适用于 GCP 上的 Kubernetes
- 由 Kube 部署和管理的 Dockerized 容器
- Istio 服务网格
这是我尝试过的方法(没用):
- 更新了 GCP 中的
egress
防火墙规则以允许我所有实例上的所有内容(所有端口、协议) - 向网络添加了 NAT 网关以确保它可以访问外部事物
- 确保 Istio 启用了所有出站(没有限制性出口规则)
我能做些什么来帮助进一步调试这个问题或找出可能应用防火墙规则的地方吗?
感谢您的帮助。
以下是我最终解决这个问题的方法:
我在 Pod 上使用了 traffic.sidecar.istio.io/includeOutboundIPRanges
注释。我将其设置为服务网格的 CIDR。
这样做使得任何从那个 pod 到 我的网格中的东西的请求都是通过 Envoy 发送的。 Envoy 忽略了其他所有内容(允许 nmap
请求正确扫描而不是被过滤)。
考虑到 Istio 中似乎有多少自定义可用,可能还有许多其他方法可以使它工作,但这满足了我的要求。