У меня 2 VPC
Настройка сервера (instdual) с nic0 из VPC1 и nic1 из VPC2
Статический публичный IP-адрес на обоих nic
Установите еще 2 экземпляра insta и instb: один только на VPC1, а другой только на VPC2
Пинг извне на публичный IP -> VPC2 работает (instb)
из insta я могу пинговать instdual nic0
из instb я могу пинговать instdual nic1
из insta Я НЕ МОГУ пинговать частный IP nic1
VPC подключены к сети - маршруты отображаются правильно
Брандмауэр установил правило разрешить всем по умолчанию, чтобы устранить проблемы брандмауэра.
В основном на instdual я могу получить к нему доступ только с общедоступного IP-адреса nic0. не публичный IP-адрес nic1.
Любые идеи ? Я отстала на 12 чашек кофе и сейчас вижу вдвое больше.
Вот чего не хватало (сейчас работает на 100%):
Выполните следующие действия, чтобы настроить маршрутизацию политики для экземпляра на базе Linux с несколькими интерфейсами:
gcloud compute ssh multinic-vm
sudo ifconfig eth1 192.168.0.2 сетевая маска 255.255.255.255 широковещательная передача 192.168.0.2 mtu 1430
sudo echo "1 rt1" | sudo tee -a / etc / iproute2 / rt_tables # (sudo su - сначала, если в разрешении отказано)
sudo ip route добавить 192.168.0.1 src 192.168.0.2 dev eth1
sudo ip route добавить значение по умолчанию через 192.168.0.1 dev eth1 table rt1
sudo ip rule добавить из таблицы 192.168.0.2/32 rt1
sudo ip rule добавить в 192.168.0.2/32 таблицу rt1
В облаке Google есть документация о том, как это сделать: https://cloud.google.com/vpc/docs/create-use-multiple-interfaces Но здесь отсутствует информация о том, как убедиться, что дополнительные интерфейсы снова будут работать после перезагрузки.
Чтобы дополнительные внешние IP-адреса были постоянными, необходимо убедиться, что команды для активации маршрутизации политики выполняются после перезагрузки, но только после активации дополнительных интерфейсов. Это делает dhcp-клиент. Итак, лучший способ, который я мог найти, - это поместить сценарий в /etc/dhcp/dhclient-exit-hooks.d/ со следующим:
#!/bin/sh
#
if [[ $reason == "REBOOT" || $reason == "BOUND" ]] ; then
sudo ip route add 192.168.0.1 src 192.168.0.2 dev eth1
sudo ip route add default via 192.168.0.1 dev eth1 table rt1
sudo ip rule add from 192.168.0.2/32 table rt1
sudo ip rule add to 192.168.0.2/32 table rt1
fi
(измените IP-адреса на IP-адреса вашей внутренней сети)
Если вы также хотите иметь возможность привязать сервер (например, nginx или httpd) к одному из этих IP-адресов во время загрузки, вы заметите, что это не удается, потому что сервер запускается до того, как dhcp-client завершит свою задачу. Один из способов решить эту проблему - разрешить программному обеспечению связываться с IP-адресами, которые еще не активны. Для этого положите
net.ipv4.ip_nonlocal_bind=1
в /etc/sysctl.d/10-policyrouting.conf