Google cloud platform 在GCP上创建多IP代理

Google cloud platform 在GCP上创建多IP代理,google-cloud-platform,Google Cloud Platform,我使用GCP为Web爬虫创建多IP代理 我已经用多个nic创建了VPC和新实例 我的config squid如下(部分内容): 我重启squid之后, 我可以访问端口10000上的代理(默认为nic0) 但我无法访问端口10001(nic1,默认) 我可以在控制台中ping我的nic1 ip地址10.0.0.2,但无法ping nic1外部ip 如何配置NIC以响应公共IP上的ping?您有两种方法可以在一个VM上使用多个外部IP 1.艰难的道路 这种方法(您尝试过)稍微复杂一些。 根据设计,如

我使用GCP为Web爬虫创建多IP代理

我已经用多个nic创建了VPC和新实例

我的config squid如下(部分内容):

我重启squid之后, 我可以访问端口10000上的代理(默认为nic0) 但我无法访问端口10001(nic1,默认)

我可以在控制台中ping我的nic1 ip地址10.0.0.2,但无法ping nic1外部ip


如何配置NIC以响应公共IP上的ping?

您有两种方法可以在一个VM上使用多个外部IP

1.艰难的道路 这种方法(您尝试过)稍微复杂一些。

根据设计,如果将多个接口连接到单个VM,则只有第一个(NIC0)配置了到Internet的路由。您必须为每个附加接口配置单独的路由表(请参阅)

对于谷歌支持的图像,当您需要辅助网络时 与任何IP通信的接口(除nic0以外的接口) 地址不是该辅助子网的主子网范围的本地地址 接口的关联子网,您需要将策略路由配置为 确保出口数据包将通过正确的接口离开。 在这种情况下,您必须为每个节点配置单独的路由表 使用策略路由的网络接口

此外,您必须为每个NIC创建单独的VPC网络,如果您想使用两个以上的网络(这是另一个限制)

通常,以下规则适用于n1-standard-x、n1-highmem-x、, n1-highcpu-x、f1微型、g1小型和定制虚拟机:

2个VM 2VCPU网络接口,每个VM最多8个网络接口

最后一步是向GCP防火墙添加适当的规则,允许流量进出您的VM

正如您所看到的,这是可以做到的,但是有一些步骤,并且您仍然被限制在单个VM上只有8个NIC

2.捷径 我个人会尝试这种更简单的方法——不指定VM类型(甚至可以是
micro

你可以用

休耕步骤(我使用了
gcloud
utility)

  • 您需要有一个VM(连接一个公共IP)。如果从头开始进行配置不需要太多工作,您可以使用已经拥有的配置或创建一个新的配置。如果不使用
    gcloud计算实例创建vm2--tags=tag1
  • 然后创建一个防火墙规则,允许到您的VM的流量:
    gcloud计算防火墙规则create allow80--direction=ingres--priority=1000--network=default--action=allow--rules=tcp:80--source ranges=0.0.0/0--target tags=tag1

  • 对于您的虚拟机:
    gcloud计算目标实例创建tar1——实例vm2
  • 最后创建转发规则本身:
    gcloud计算转发规则创建forward1——ip协议TCP——端口80——目标实例tar1
在本例中,我使用“”简化了下面任何防火墙规则和转发规则的应用。如果您不清楚,请查看文档

运行
gcloud compute forwarding rules list
时,您应该

$ gcloud compute forwarding-rules list
NAME      REGION        IP_ADDRESS     IP_PROTOCOL  TARGET
forward1  europe-west3  34.107.72.88   ICMP         europe-west3-c/targetInstances/pf-target-instance
forward2  europe-west3  35.246.227.80  ICMP         europe-west3-c/targetInstances/pf-target-instance
forward3  europe-west3  35.198.70.64   ICMP         europe-west3-c/targetInstances/pf-target-instance
每个转发规则都需要它自己的唯一公共IP—当您按照所述创建一个转发规则时,会为其分配一个新的临时公共IP。您可以事先将它们分配给新创建的转发规则

您可以在控制台中找到转发规则:网络服务>负载平衡>高级>在此特定示例中,由于
目标实例
使用,您无法使用console创建转发规则。控制台仅允许创建规则将其定向到目标池


在这种情况下,您必须使用
gcloud实用程序

您可以分享更多关于VM设置的信息吗?您是否已检查是否配置为响应来自internet的ping(ICMP),如果不确定是否创建正确的规则,请再次检查。还要记住,一个GCP虚拟机只能有一个公共IP(尽管有多个NIC)。如果你提供更多细节,我可以更准确地回答你的问题。首先感谢你的评论。我已经创建了防火墙来允许squid端口。我在它上面创建了一个测试。我已经为10.0.0.0/24创建了vpc1和一个公共ip,为10.0.2.0/24创建了vpc2和另一个公共ip,将nic1映射到vpc1,将nic2映射到vpc2。我可以ping nic1、nic2内部ip,但不能ping nic1、nic2公共ip。只能ping nic0(默认)公共ip。在您的评论中,您的意思是,即使我设置了多个NIC,每个NIC都有一个公共ip,公共ip仍然不能使用?gcloud计算目标实例创建squid目标实例--实例我的实例名称谢谢。我试了两天,对解2还是不太了解。如果我错了,请改正:1。创建一个实例并安装squid,在squid这个例子中设置http_端口80并执行TAG=“myproxy”。2.运行防火墙规则,将$MY-VM-TAG更改为$TAG。3.运行Create target instance,squid target instance是squid的名称,my instance name是一个新的实例名称。4.运行转发规则,但我在浏览器中使用服务器ip和端口80的代理,这不起作用。此外,我可以找到由myrule1创建的新外部ip,目标池是squid目标实例。但是我找不到它。如何在控制台中找到此规则?您无法创建目标实例或在控制台中找到它,也无法创建使用它的转发规则。我已经更新了我的答案,包括你的问题(还有一些关于“标记”的信息)实例。我现在可以按照步骤创建防火墙、目标实例和forwrading。但是,它仍然不起作用。我可以问更多的问题来验证我的配置吗:1.我的实例名称是squid VM名称吗?2.我的squid VM需要更改转发规则的配置吗?3.在我的浏览器中,我输入VM的ip和端口80以将流量转发到squid目标stance的IP?Wojtek_B你太棒了!谢谢你。我编辑了我的答案,所以你可以直接复制粘贴gcloud命令-请求
$ gcloud compute forwarding-rules list
NAME      REGION        IP_ADDRESS     IP_PROTOCOL  TARGET
forward1  europe-west3  34.107.72.88   ICMP         europe-west3-c/targetInstances/pf-target-instance
forward2  europe-west3  35.246.227.80  ICMP         europe-west3-c/targetInstances/pf-target-instance
forward3  europe-west3  35.198.70.64   ICMP         europe-west3-c/targetInstances/pf-target-instance