Назад | Перейти на главную страницу

CentOS 7 с двумя сетевыми адаптерами в Google Cloud

У меня 2 VPC

Настройка сервера (instdual) с nic0 из VPC1 и nic1 из VPC2

Статический публичный IP-адрес на обоих nic

Установите еще 2 экземпляра insta и instb: один только на VPC1, а другой только на VPC2

VPC подключены к сети - маршруты отображаются правильно

Брандмауэр установил правило разрешить всем по умолчанию, чтобы устранить проблемы брандмауэра.

В основном на instdual я могу получить к нему доступ только с общедоступного IP-адреса nic0. не публичный IP-адрес nic1.

Любые идеи ? Я отстала на 12 чашек кофе и сейчас вижу вдвое больше.

Вот чего не хватало (сейчас работает на 100%):

Выполните следующие действия, чтобы настроить маршрутизацию политики для экземпляра на базе Linux с несколькими интерфейсами:

  1. Подключитесь к экземпляру, настроенному с несколькими сетевыми интерфейсами:

gcloud compute ssh multinic-vm

  1. Настройте маршрутизацию политики с помощью ifconfig для nic1. В приведенном ниже примере предполагается, что GCP назначил nic1 внутренний IP-адрес 192.168.0.2, а шлюз - 192.168.0.1.

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

  1. Повторите команды шага 2 для дополнительных интерфейсов в экземпляре (nic2, nic3 .... nic7).

В облаке 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