Я раскручиваю виртуальную машину в Google Compute Engine под управлением Debian Buster и настраиваю ее с двумя сетевыми интерфейсами.
Первый использует временную IP-конфигурацию и назначается общедоступной маршрутизируемой сети, настроенной через DHCP. Я бы хотел оставить это как есть.
Второй интерфейс использует статическую IP-конфигурацию и назначается частной сети. Я хотел бы запретить GCE использовать DHCP для настройки этого интерфейса, а вместо этого использовать systemd-networkd для его самостоятельной настройки с целью простого добавления некоторых пользовательских маршрутов.
Хотя конфигурация systemd-networkd работает успешно, проблема в том, что при перезагрузке компьютера настройка DHCP GCE запускается после установки systemd-networkd и перезаписывает мою пользовательскую конфигурацию.
Я пробовал множество способов решить эту проблему, в том числе:
Единственное, что сработало до сих пор, - это отвратительный взлом сценария, который выжидает 30 секунд после загрузки, а затем снова запускает systemd-networkd, чтобы перезаписать конфигурацию GCE.
Могу ли я внести какие-то более чистые изменения в конфигурацию на уровне ОС или настройки конфигурации во время настройки сети / сервера, которые не позволят GCE автоматически настроить этот второй сетевой интерфейс?
РЕДАКТИРОВАТЬ №1:
Это пример конфигурации systemd-networkd, которую я бы предпочел использовать:
[Match]
Name=ens5
[Network]
Address=10.1.3.30/32
LinkLocalAddressing=no
[Route]
Destination=10.1.3.1/32
Scope=link
[Route]
Gateway=10.1.3.1
Destination=10.1.3.0/24
GatewayOnlink=yes
[Route]
Gateway=10.1.3.1
Destination=10.1.1.0/24
GatewayOnlink=yes
[Route]
Gateway=10.1.3.1
Destination=10.1.2.0/24
GatewayOnlink=yes
[Route]
Gateway=10.1.3.1
Destination=10.10.0.0/24
GatewayOnlink=yes
Использование этой конфигурации позволяет мне устанавливать дополнительные маршруты на интерфейсе к другим подсетям. Обратите внимание, что эти другие подсети могут входить или не входить в GCP.
Вышеупомянутая конфигурация работает, даже с учетом того, что я должен объявить статический IP-адрес 10.1.3.30 как часть моей настройки сервера GCE. Проблема только в том, что я не могу заставить GCE перестать выполнять свою собственную конфигурацию интерфейса, которая перезаписывает приведенную выше. В Azure я могу просто закомментировать source
ссылка на /var/run/network/interfaces.d
в /etc/network/interfaces
.
Что касается того, почему я предпочитаю эту настройку, это элегантный метод настройки моей внутренней сети с помощью программного обеспечения для управления конфигурацией сервера - я просто перетаскиваю приведенную выше конфигурацию в /etc/systemd/network/
и выпуск systemctl enable systemd-networkd && systemctl restart systemd-networkd
, и он обрабатывает настройку интерфейса и настройку конфигурации, которая также выполняется при загрузке.
ОБНОВЛЕНИЕ №1:
Я подал https://issuetracker.google.com/issues/153513472 в трекере проблем GCP, надеюсь, они решат. Я обновлю проблему соответственно, когда они это сделают.
К сожалению, в настоящий момент вы не можете реализовать такой сценарий на GCP. Вы можете использовать описанные способы управления внутренними IP-адресами, следуя документации, например Использование статического внутреннего IP-адреса для вторичного сетевого интерфейса.
В качестве возможного обходного пути вы можете подать запрос функции на Отслеживание проблем Google под этот компонент.