我在 Google Cloud 上有一个带有两个 NIC(每个都有一个公共 IP)的 Ubuntu 16.04LTS VM。我需要以某种方式配置它,使端口 2000 上的所有流量都通过接口 1,而端口 2001 上的所有流量都通过接口 2。我已经通过 gcloud 设置了防火墙,并且运行正常。
我还有 2 条 IP 规则和 2 条 IP 路由来将流量推送到正确的 NIC。
echo 300 guest >> /etc/iproute2/rt_tables
ip route add 10.2.0.2/32 dev interface2 table guest
ip route add default via 10.2.0.1 dev interface2 table guest
ip rule add from 10.2.0.2/32 table guest
ip rule add to 10.2.0.2/32 table guest
我正在努力解决的是如何将这些更改应用于启动。我想我可以将上述内容添加到/etc/network/interfaces
或通过此文件引用的任何文件(位于 with 中)/etc/network/interfaces.d
。source
但这似乎没有任何区别。
以下是我添加的内容/etc/network/interfaces
auto interface2
iface interface2 inet dhcp
post-up ip route add 10.2.0.2/32 dev interface2 table guest
post-up ip route add default via 10.2.0.1 dev interface2 table guest
post-up ip rule add from 10.2.0.2/32 table guest
post-up ip rule add to 10.2.0.2/32 table guest
这只有我这样做才有效ifdown interface2 && ifup interface2
。
我也遵循了以下
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
因此,当虚拟机启动时,它会以某种方式设置具有两个 NIC 的网络并忽略上述内容。有人可以向我解释一下应该如何做到这一点吗?
非常感谢
答案1
如果您希望每次 VM 实例启动时使用脚本完成此操作,请使用启动脚本。