Google compute engine 从一台没有';I don’我没有连接到internet的公共IP

Google compute engine 从一台没有';I don’我没有连接到internet的公共IP,google-compute-engine,Google Compute Engine,在Google Compute Engine上,我们的机器没有公共IP(因为配额限制了可以拥有公共IP地址的机器的数量)。我们需要这些非公共IP机器来访问来自谷歌存储桶的数据,这似乎意味着我们必须路由到互联网。但我们无法从这些非公共IP机器访问网络之外的任何东西。所有数据包都会丢弃 我们发现一些文档描述了如何设置从没有公共IP地址的机器到有公共IP地址的机器的路由 我们尝试创建一个机器“代理”,它打开了ip转发,并且有允许http和https的防火墙规则(我认为这个细节不重要,但我们做到了)。我

在Google Compute Engine上,我们的机器没有公共IP(因为配额限制了可以拥有公共IP地址的机器的数量)。我们需要这些非公共IP机器来访问来自谷歌存储桶的数据,这似乎意味着我们必须路由到互联网。但我们无法从这些非公共IP机器访问网络之外的任何东西。所有数据包都会丢弃

我们发现一些文档描述了如何设置从没有公共IP地址的机器到有公共IP地址的机器的路由

我们尝试创建一个机器“代理”,它打开了ip转发,并且有允许http和https的防火墙规则(我认为这个细节不重要,但我们做到了)。我们创建了一个具有0.0.0.0/0转发到“代理”规则的网络“nat”。我们的希望是,来自“nat”网络上的非公共IP机器的数据将把它们的数据包转发给“代理”,然后“代理”将以某种方式充当互联网的网关,但这不起作用


我怀疑我们必须在“proxy”上执行某种路由指令,而我们没有这样做,这会告诉proxy转发到谷歌互联网网关,但我不确定这应该是什么。也许是iptables中的规则?或者某种NAT程序?

您可以使用iptables NAT使其工作。在代理实例上(作为根):


它成功了,我不得不重新创建代理,但在那之后它成功了。非常感谢!
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward