Конфигурация маршрута многоинтерфейсного экземпляра GCE Ubuntu

Я использую Ubuntu 16. 04 с несколькими интерфейсами. Я хочу настроить маршруты на втором интерфейсе. Хотя я могу сделать это вручную, это не сохраняется после перезагрузки.

Большинство методов предлагают определять маршруты с помощью интерфейса в / etc / network / interfaces, который преобразуется в /etc/network/interfaces.d/50-cloud-init.cfg на основе вызова из файла интерфейсов.

Что меня смутило, так это то, что я не уверен, где и как вообще определен 2-й интерфейс.

Эти 2 интерфейса - ens4 и ens5. Только ens4 определяется с помощью iface ens4 inet dhcp . Я ожидал увидеть нечто подобное для Ens5, но этого не произошло.

Выполнение ifconfig показывает, что Ens5 запущен. Кроме того, ip link show показывает это.

Похоже, что я могу добавить ens5 в / etc / network / interfaces без каких-либо поломок. Если я это сделаю, похоже, случатся и другие вещи. Например, файл «ifstate.ens5» теперь появляется в / run / network. Кроме того, ifdown / ifup работают на интерфейсе.

Однако даже добавление post-up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 не приводит к созданию маршрута на загрузка ... Но если я выполняю ifdown, а затем ifup, маршрут добавляется, как и следовало ожидать.

Мое дополнительное исследование показывает, что ens5 определяется через пакет cloud-init из источника данных Google GCE, а это все хорошо и хорошо, но не отвечает, почему в файле 50-cloud-init.cfg находится только ens4.

Итак, где определяется ens5 и как я могу добавить статический маршрут для ens5?

0
задан 28 February 2018 в 12:37
1 ответ

Я не уверен, что это лучшее решение, но я нашел способ достичь желаемого результата.

Во-первых, я считаю, что пакет python google_compute_engine выполняет работу в сети операции настройки в какой-то момент во время процесса загрузки. Я нашел это в "/usr/lib/python3/dist-packages/google_compute_engine/network_setup".

К сожалению, я считаю, что, хотя результатом этого метода является рабочая сеть, он делает некоторые вещи за пределами обычного Ubuntu "каналы". Например, хотя второй интерфейс (ens5) работает и распознается в большинстве случаев, поскольку он не определен в / etc / network / interfaces, все, что зависит от этого, вряд ли будет работать.

Поскольку другие команды, такие как " route "по-прежнему работает, я не уверен, насколько это важно.

Я не уверен, есть ли способ использовать этот пакет Google, поэтому не уверен, что это будет хорошей идеей.

Мое текущее решение - использовать сценарии запуска, как определено в « https://cloud.google.com/compute/docs/startupscript ».

Поскольку эти сценарии запуска выполняются После того, как сеть настроена, я помещаю сценарий сценария в корзину, которая выполняет набор действий на хосте на основе файла конфигурации локальной сети. Это позволило создавать мои статические маршруты при загрузке с помощью команды «route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev ens5».

3
ответ дан 4 December 2019 в 12:18

Теги

Похожие вопросы