У меня есть виртуальная машина Ubuntu 16.04LTS с двумя сетевыми адаптерами (у каждой есть общедоступный IP-адрес) в Google Cloud. Мне нужно настроить его таким образом, чтобы весь трафик на порт 2000 проходил через interface1, а весь трафик на порт 2001 через interface2. Я уже настроил брандмауэр через gcloud, и он отлично работает.
У меня также есть 2 правила IP и 2 маршрута IP для проталкивания трафика через правильные сетевые адаптеры.
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
или любые файлы, указанные в этом файле, расположенные в /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}
Таким образом, со всем вышесказанным, когда виртуальная машина запускается, она каким-то образом настраивает сеть с двумя сетевыми адаптерами и игнорирует вышесказанное. Может кто-нибудь объяснить мне, как это нужно сделать.
Очень ценится заранее
Если вы хотите выполнять это с помощью сценария при каждом запуске экземпляра виртуальной машины, используйте сценарии запуска.
Проверьте их документацию на https://cloud.google.com/compute/docs/startupscript