在 Google Compute Engine 上,我们有没有公共 IP 的机器(因为配额限制了可以拥有公共 IP 地址的机器数量)。我们需要这些非公共 IP 机器来访问 Google 存储桶中的数据,这似乎意味着我们必须路由到互联网。但我们无法从这些非公共 IP 机器访问网络之外的任何内容。所有数据包都会丢失。
我们找到了一些文档https://developers.google.com/compute/docs/networking#routing描述了如何设置从没有公共 IP 地址的计算机到有公共 IP 地址的计算机的路由。
我们尝试创建一个机器“代理”,它打开了 ip 转发并具有允许 http 和 https 的防火墙规则(我认为这个细节并不重要,但我们做到了)。我们创建了一个网络“nat”,它具有 0.0.0.0/0 转发到“代理”规则。我们希望来自“nat”网络上的非公共 IP 机器的数据将其数据包转发到“代理”,然后“代理”将以某种方式充当互联网的网关,但这不起作用。
我怀疑我们必须在“代理”上执行某种我们没有执行的路由指令,告诉代理转发到 Google 互联网网关,但我不确定这应该是什么。也许是 iptables 中的规则?或者某种 NAT 程序?
您也许可以使用 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)