我使用GCP为Web爬网程序创建一个多IP代理。
我已经创建了VPC和带有多个nic的新实例。
我的配置squid如下(部分(:
http_port 10000
http_port 10001
acl port1 myport 10000
acl port2 myport 10001
tcp_outgoing_address 10.170.0.4 port1
tcp_outgoing_address 10.0.0.2 port2
重新启动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网络,如果您想使用两个以上的网络,则需要有一台具有更多CPU的机器(这是另一个限制(。
通常,以下规则适用于n1-标准-x、n1-高成员-x、,n1-highcpu-x、f1 micro、g1小型和自定义虚拟机:
用于VM<=的2个网络接口2vCPU每个vCPU 1个网络接口VM>2vCPU,每个VM 最多有8个网络接口
最后一步是向GCP防火墙添加适当的规则,允许&从虚拟机中取出。
正如你所看到的,这是可以做到的,但有一些步骤,而且你仍然被限制在一个虚拟机上只有8个NIC。
2.简单的方法
我个人会尝试这种更简单的方法——不指定VM类型(甚至可以是micro
(。
您可以使用协议转发规则。
休耕步骤(我使用了gcloud
实用程序(。
- 您需要有一个虚拟机(连接一个公共IP(。如果从头开始配置不需要太多工作,您可以使用现有的,也可以创建一个新的。如果不使用
gcloud compute instances create vm2 --tags=tag1
创建 - 然后创建一个防火墙规则,允许流量到您的VM:
gcloud compute firewall-rules create allow80 --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=tag1
- 为VM创建目标实例:
gcloud compute target-instances create tar1 --instance vm2
- 最后创建转发规则本身:
gcloud compute forwarding-rules create forward1 --ip-protocol TCP --ports 80 --target-instance 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。你可以预先保留一些静态IP,然后将它们分配给新创建的转发规则。
您可以在控制台中找到转发规则:网络服务>负载平衡>高级>转发规则在此特定示例中,由于target-instance
的使用,您无法使用控制台创建转发规则。控制台只允许创建将其定向到target-pool
的规则
在这种情况下,您必须使用gcloud utility
。