标签: google-cloud-networking

谷歌正在阻止流量,因为它检测到自动查询

当我尝试访问部署在 Google Cloud 上的网站时,我收到以下错误页面:

我们很抱歉...

...但是您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。

以下是我的设置的详细信息:

  • NextJS Web 应用程序部署到 Cloud Run(流量仅限于内部 + 负载平衡)
  • Strapi 内容管理系统部署到 Cloud Run(流量仅限于内部 + 负载平衡)
  • 我在每个 Cloud Run 服务前面都有一个负载均衡器,并且正在使用 Google 保留的 IP 和托管 SSL 证书
  • 身份感知代理 (IAM) 位于两个负载均衡器之前
  • 每次页面访问都会对内容管理系统进行 API 调用以检索内容(这是否会导致网络认为正在发生“自动查询”?)

故障排除:

  • 它似乎与访问该网站的实际用户无关。所有用户、不同设备、不同 IP 地址都会出现此错误消息。之前一直运行没有问题,这是我第一次遇到这个问题。
  • 没有流量到达 Cloud Run 环境。如果我将它们的入口切换为“允许全部”,我就可以直接点击 Cloud Run URL 并且它可以工作
  • 删除并重新创建负载均衡器并不能解决问题

基于此,负载均衡器附近似乎存在一些网络配置/安全性。

有什么解决方案或建议可以继续调试吗?

google-cloud-platform google-cloud-networking google-cloud-run gcp-load-balancer

15
推荐指数
1
解决办法
1492
查看次数

如何使用client_disconnected_before_any_response调试失败的请求

我们有一个由kubernetes ingress创建的HTTP(s)Load Balancer,它指向由运行nginx和Ruby on Rails的pod组成的后端.

看一下负载均衡器日志,我们检测到越来越多的请求,响应代码为0statusDetails= client_disconnected_before_any_response.

我们试图理解为什么会发生这种情况,但我们没有找到任何相关的东西.nginx访问或错误日志中没有任何内容.

这种情况发生在从GET到POST的多种请求中.

我们还怀疑有时尽管请求记录了该错误,但请求实际上是传递给后端的.例如,我们看到了PG :: UniqueViolation错误,因为在我们的注册终端中,两次发送了令人满意的注册请求到后端.

任何形式的帮助将不胜感激.谢谢!


 更新1

这里要求的入口资源的yaml文件:


 更新2

我已经创建了一个基于日志的Stackdriver度量标准,用于计算出现此行为的请求数.这是图表:

图表

大峰大致匹配这些kubernetes事件的时间戳:

事件

完整错误: Readiness probe failed: Get http://10.48.1.28:80/health_check: net/http: request canceled (Client.Timeout exceeded while awaiting headers)"

因此有时候后端后面的pod的准备探测失败了,但并非总是如此.

这是readinessProbe的定义

readinessProbe:
  failureThreshold: 3
  httpGet:
    httpHeaders:
    - name: X-Forwarded-Proto
      value: https
    - name: Host
      value: [redacted]
    path: /health_check
    port: 80
    scheme: HTTP
  initialDelaySeconds: 1
  periodSeconds: 30
  successThreshold: 1
  timeoutSeconds: 5
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine google-cloud-networking kubernetes-ingress

13
推荐指数
1
解决办法
439
查看次数

如何访问 GCP 上的单个计算实例?

一直试图弄清楚这一点,但到目前为止没有运气。与 AWS 相比,实现起来非常困难。

我有一个运行多个计算实例和其他服务的 Google Cloud Platform (GCP) 项目。

我需要向外部开发团队授予对单个计算实例的 root 访问权限,而不是任何其他服务。

在“Compute Engine”视图中,当我选择实例并将用户添加为 Compute Admin(完全控制所有 Compute Engine 资源)但他仍然无法ssh进入实例。

尝试 #1:

出现错误:“需要compute.instance.get许可。”

所以我去给那个用户一个包含该权限的角色。

尝试#2:

出现错误“用户无权访问服务帐户...”

问题 #1 究竟需要做什么才能让角色访问 GCP 中的单个计算实例?

在 AWS 上,有一个特定的角色可以被授予单一资源访问权限,但这里似乎确实如此。

问题 #2 另外,如果“计算引擎”视图中的“权限”右侧栏实际上没有提供任何权限,那么它的用途是什么。

谢谢!

google-compute-engine google-cloud-platform google-cloud-networking

10
推荐指数
2
解决办法
7337
查看次数

如何验证 Cloud CDN 响应是否缓存命中(或来自 CDN)

我在启用了 Cloud CDN 的 Google Cloud HTTP(S) 负载均衡器后面有一个后端 GCS 存储桶。

我试图根据响应标题回答这些问题:

  • 此响应是由 CDN 提供的吗
  • 如果是的话,哪个位置/地区
  • 这是缓存命中/未命中吗

这是响应标头。根据cache-control,理论上,这个应该被缓存。但是,我没有看到可以验证 CDN 正常工作的迹象。同样,所有其他标头x-goog-*Server: UploadServer似乎都来自 GCS 服务器,而不是 CDN。

accept-ranges: bytes
age: 551
alt-svc: clear
cache-control: public, max-age=3600
content-length: 298303
content-type: image/jpeg
date: Wed, 05 Aug 2020 23:07:33 GMT
etag: "f0b6c60f635c784dd7f34ab9c1527867"
expires: Thu, 06 Aug 2020 00:07:33 GMT
last-modified: Wed, 05 Aug 2020 23:07:16 GMT
server: UploadServer
status: 200
X-DNS-Prefetch-Control: off
x-goog-generation: 1596668836233926
x-goog-hash: crc32c=rD4sZw==
x-goog-hash: md5=8LbGD2NceE3X80q5wVJ4Zw==
x-goog-metageneration: …
Run Code Online (Sandbox Code Playgroud)

google-cloud-cdn google-cloud-networking google-cloud-load-balancer

10
推荐指数
1
解决办法
3962
查看次数

从另一个 GCP 项目访问 Cloud SQL

我想从不同的 GCP 项目连接到 Cloud SQL。

Cloud SQL 位于 ProjectSQL 中,VPC 网络位于 ProjectSQL 项目中,名称为 sql_vpc

还有另一个项目 ProjectDataflow,它有一个 vpc dataflow_vpc。我想使用在 ProjectDataflow 项目中启动的 VM 从 ProjectSQL 连接到 cloudSQL

我尝试过的成功和失败的事情。

私人访问:

VPC 对等互连:

Enable Private IP access in Cloud with the vpc sql_vpc
Creating VPC peering between dataflow_vpc and sql_vpc
This solution does not work because you can not access the Peered Network.
https://cloud.google.com/sql/docs/mysql/private-ip
Status: FAILED
Run Code Online (Sandbox Code Playgroud)

共享网络

As per doc I can create the CloudSQL in shared VPC network, that says I 
have to …
Run Code Online (Sandbox Code Playgroud)

google-cloud-sql google-cloud-platform google-cloud-networking

9
推荐指数
1
解决办法
3819
查看次数

从GCE中的旧网络迁移

长话短说 - 我需要在项目之间使用网络来为它们分别计费.

我想从一个点来到达不同项目中的所有虚拟机,我将用它来配置系统(让我们称之为协调节点).

看起来VPC网络对等是一个完美的解决方案.但不幸的是,现有网络之一是"遗产".这是google docs关于遗留网络的陈述.

关于旧网络注意:不建议使用旧网络.传统网络不支持许多较新的GCP功能.

好的,自然会出现这样的问题:您如何迁移出传统网络?文档未涉及此主题.这不可能吗?

我有一堆虚拟机,我可以逐个关闭它们:

  1. 关掉
  2. 改变些什么
  3. 重新开始

遗憾的是,即使VM关闭,它似乎也无法改变网络?

编辑:有人建议重新创建保持相同磁盘的VM.我仍然需要一种方法来将传统网络与新的VPC网络连接起来,以使迁移流畅.有关如何使用GCE工具集的任何想法?

networking google-compute-engine google-cloud-platform google-cloud-networking

8
推荐指数
1
解决办法
1006
查看次数

私有 VPC 网络上的 Google Cloud Build

我有一个 Google Cloud Build 触发器可以在 Google Cloud 上构建我的图像。我还有 VPC 网络,它托管一些在构建图像时应该可以访问的资源。

在构建映像时,我的 docker 脚本需要访问 Web 服务器。GCP Cloud 构建网络似乎不是我的私有 VPC 网络。因此,构建时所需的资源无法访问该脚本。

这是否可以在 VPC 网络中运行构建?如果是,如何?

google-cloud-platform google-cloud-networking google-cloud-build

8
推荐指数
1
解决办法
1077
查看次数

Google Cloud 中全球 IP 地址和区域 IP 地址之间的差异

据我了解,全局外部地址用于外部负载均衡器,而区域外部地址用于虚拟机和区域负载均衡器。为什么全球知识产权和区域知识产权之间存在如此大的分离?

他们都可以通过互联网联系到。有实施细节吗?有人可以解释一下吗?

google-cloud-platform google-cloud-networking

8
推荐指数
1
解决办法
3136
查看次数

为什么我的 GCP 负载均衡器证书在配置时卡住了?

我已经根据文档设置了所有内容:

要继续进行证书供应过程,必须满足以下所有条件:

  • 您域的 DNS 记录必须引用负载均衡器目标代理的 IP 地址,
  • 您的目标代理必须引用 Google 管理的证书资源。
  • 您的负载均衡器配置必须完整,包括创建转发规则。

如果配置正确,则提供证书的总时间可能需要 30 到 60 分钟。

已经2个小时了。

load-balancing certificate google-compute-engine google-cloud-platform google-cloud-networking

7
推荐指数
1
解决办法
5281
查看次数

如何使用 Google Cloud Armor 将 GKE 上的少数 IP 列入白名单?

我们正在尝试阻止除基于此 Cloud Armor演练的一些外部 IP 地址之外的所有非集群流量。

GKE 集群识别了规则,但仍然阻止允许的 IP。以下是遵循的步骤:

1)创建策略+规则

gcloud beta compute security-policies create allow-team-only \
    --description "Cloud Armor deny non-team IPs"


gcloud beta compute security-policies rules create 1000 \
    --security-policy allow-team-only \
    --description "Deny traffic from 0.0.0.0/0." \
    --src-ip-ranges "0.0.0.0/0" \
    --action "deny-404"


gcloud beta compute security-policies rules create 999 \
    --security-policy allow-team-only \
    --description "Allow traffic from <IP ADDRESS>." \
    --src-ip-ranges "<IP ADDRESS>/32" \
    --action "allow"    
Run Code Online (Sandbox Code Playgroud)

2) 将规则应用到我们位于 8080 端口的服务

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"ports": {"8080":"allow-team-only"}}'  
Run Code Online (Sandbox Code Playgroud)

我在忽略什么?

谢谢!

google-cloud-platform google-kubernetes-engine google-cloud-networking google-cloud-armor

6
推荐指数
2
解决办法
7375
查看次数