在Google Compute Engine上,我们拥有没有公共IP的计算机(因为配额限制了可以拥有公共IP地址的计算机数量)。我们需要这些非公共IP机器来访问Google Storage存储桶中的数据,这似乎意味着我们必须路由到Internet。但是,我们无法通过这些非公共IP机器访问网络之外的任何内容。所有数据包都会丢失。
我们找到了一些文档https://developers.google.com/compute/docs/networking#routing,其中介绍了如何设置从没有公共IP地址的计算机到具有公共IP地址的计算机的路由。
我们尝试创建一台机器"代理"已启用ip-forwarding并具有允许http和https的防火墙规则(我不认为这个细节很重要,但我们做到了)。我们创建了一个网络" nat"它有一个0.0.0.0/0转发到"代理"规则。我们希望来自非公共IP机器的数据来自" nat"网络将他们的数据包转发到"代理"然后"代理"将以某种方式充当互联网的门户,但这不起作用。
我怀疑我们必须在"代理"上做某种路由指令。我们不这样做会告诉代理转发到Google Internet网关,但我不确定这应该是什么。也许在iptables中有规则?还是某种NAT程序?
答案 0 :(得分:2)
您可以使用iptables NAT来使其正常工作。在代理实例上(以root身份):
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