Google compute engine GCE&x2B;负载平衡器&x2B;没有公共IP的实例

Google compute engine GCE&x2B;负载平衡器&x2B;没有公共IP的实例,google-compute-engine,Google Compute Engine,我有一个故意没有公共IP的例子 我有一个GCE网络负载均衡器,它使用上述实例作为目标池 一切都很好 然后我想让我的实例与internet通信,所以我遵循以下文档:(配置NAT网关) 实例可以很好地与internet通信,但负载平衡器无法再与我的实例通信 我认为这些步骤造成了loadbalancer的问题: $ gcloud compute routes create no-ip-internet-route --network gce-network \ --destination-r

我有一个故意没有公共IP的例子

我有一个GCE网络负载均衡器,它使用上述实例作为目标池

一切都很好

然后我想让我的实例与internet通信,所以我遵循以下文档:(配置NAT网关)

实例可以很好地与internet通信,但负载平衡器无法再与我的实例通信

我认为这些步骤造成了loadbalancer的问题:

$ gcloud compute routes create no-ip-internet-route --network gce-network \
     --destination-range 0.0.0.0/0 \
     --next-hop-instance nat-gateway \
     --next-hop-instance-zone us-central1-a \
     --tags no-ip --priority 800

user@nat-gateway:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
```


你知道怎样才能使这两件事协同工作吗?

我已经重新创建了你描述的环境,没有遇到任何问题

$ gcloud compute routes create no-ip-internet-route --network gce-network \
 --destination-range 0.0.0.0/0 \
 --next-hop-instance nat-gateway \
 --next-hop-instance-zone us-central1-a \
 --tags no-ip --priority 800
上面的命令将要做的唯一一件事是创建一个路由规则,以便没有外部流量的实例被指向NAT网关,以获得它们想要发送的任何流量。这不会影响LB到达实例的能力

在我的测试中,我遵循了您引用的精确的指南,结果如下:

  • 1新网络
  • 1防火墙规则允许在端口22上使用SSH
  • 1允许所有内部通信的防火墙规则
  • 1个新实例用作NAT网关
  • 1个新实例没有外部IP地址的内部实例
我还将内部实例添加到“TargetPool”中,并为测试创建了一个LB

我的内部实例可以通过LB的外部地址和内部NAT网关访问。由于NAT网关的配置,内部实例还能够与Internet通信。一切正常


我建议你和其他读者(因为这篇文章现在已经很老了)再试一次。确保您没有任何其他冲突的规则、路由或软件。

您想使用NAT网关的原因有什么特别的吗?否则,您只需创建一个防火墙规则来允许所需的流量和端口。您的实例应该可以通过internet进行连接。@Boyan根据Google文档:“目前,任何发送到Internet的数据包都必须由具有外部IP地址的实例发送。如果创建从特定实例向Internet发送数据包的路由,则该实例还必须具有外部IP。如果您创建了一个将数据包发送到Internet网关的路由,但源实例没有外部IP地址,则数据包将被丢弃。“-因此,似乎需要NAT网关才能从实例与Internet通信