Google Cloud Compute устанавливает маску подсети /20 для внутреннего интерфейса

Google Cloud Compute устанавливает маску подсети /20 для внутреннего интерфейса

Google Cloud использует DHCP для назначения IP-адресов экземпляру. По какой-то причине они назначают адрес с маской сети /32, даже если вы находитесь в своей собственной сети /20. Я обнаружил, что если я устанавливаю статический публичный IP-адрес экземпляра, то могу перейти в /etc/syconfig/network-scripts/ifcfg-eth0, изменить BOOTPROTO с DHCP на STATIC, затем вручную задать настройки IP и использовать подсеть /20 или /24, и он переживет перезагрузки. Однако после этого я теряю возможность общаться с этим хостом во внутренней сети. Если экземпляр использует параметры DHCP, я могу общаться между хостами в локальной сети без проблем.

Почитав в интернете, я нашел эту статьюhttps://cloud.google.com/compute/docs/networkingесть раздел, в котором говорится о внесении изменений в DNS и resolv.conf и об использовании конфигурации dhcp.lease для этого. Когда я смотрю в этот файл, я вижу, что в нем есть настройка 'option subnet-mask 255.255.255.255;'. Если я изменю маску сети и перезапущу сеть, изменения будут отменены.

Просто для справки:

instance-2 is using default DHCP and has the IP 10.128.0.5
instance-4 is using my custom static config and has the IP 10.128.0.6

Я также сравнил таблицу маршрутизации между экземпляром с адресом DHCP по умолчанию и экземпляром с моими статическими настройками IP.

экземпляр-2 (DHCP):

[root@instance-2 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.128.0.1      0.0.0.0         UG    100    0        0 eth0
10.128.0.1      0.0.0.0         255.255.255.255 UH    100    0        0 eth0
10.128.0.5      0.0.0.0         255.255.255.255 UH    100    0        0 eth0
169.254.169.254 10.128.0.1      255.255.255.255 UGH   100    0        0 eth0

экземпляр-4 (Пользовательский статический):

[root@instance-4 NetworkManager]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.128.0.1      0.0.0.0         UG    100    0        0 eth0
10.128.0.0      0.0.0.0         255.255.240.0   U     100    0        0 eth0

Затем я вручную добавил различные маршруты к instance-4:

[root@instance-4 NetworkManager]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.128.0.1      0.0.0.0         UG    100    0        0 eth0
10.128.0.0      0.0.0.0         255.255.240.0   U     100    0        0 eth0
10.128.0.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0
10.128.0.6      0.0.0.0         255.255.255.255 UH    0      0        0 eth0
169.254.169.254 10.128.0.1      255.255.255.255 UGH   0      0        0 eth0

Но и это не решило проблему.

сетевой скрипт instance-4:

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=cde7258f-6857-4015-86de-6bb520fcd550
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
MTU=1460
PERSISTENT_DHCLIENT="y"
NETMASK=255.255.240.0
IPADDR=10.128.0.6
DNS1=169.254.169.254
GATEWAY=10.128.0.1

сетевой скрипт instance-2

TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=cde7258f-6857-4015-86de-6bb520fcd550
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
MTU=1460
PERSISTENT_DHCLIENT="y"

Как правильно настроить интерфейс на использование маски сети, отличной от /32, и при этом иметь возможность взаимодействовать с другими экземплярами в локальной сети?

Операционная система — CentOS 7.

Мне нужна сетевая маска, отличная от /32, чтобы я мог установить FreeIPA. Он не установится, если сетевая маска /32.

решение1

Я не нашел способа обойти проблему сетевой маски в Google Cloud, но обнаружил, что проект IPA решил эту проблему и выпустил обновление, чтобы сделать его совместимым с GCloud. В версии ipa 4.4.2 и более поздних эта проблема не возникнет. Однако на данный момент эта версия не портирована на CentOS.

вот информация по исправлению для ручного устранения.

https://git.fedorahosted.org/cgit/freeipa.git/commit/?id=dee950d88ec969b36c1271a3ef9fe4e4f5b48b01

Вот реальный отчет об ошибке на сайте проекта ipa.

https://fedorahosted.org/freeipa/ticket/5814

Вот ошибка, которую я отправил в Google относительно аспекта сетевого подключения.

https://code.google.com/p/google-compute-engine/issues/detail?id=522&sort=stars&colspec=ID%20Type%20Component%20Resource%20Service%20Status%20Stars%20Summary%20Log

Просто выкладываю все это здесь, чтобы любой, кто столкнется с такой же проблемой, мог найти на нее ответы.

решение2

Для тех, кто попал сюда через поиск Google, вот что я нашел в документации GCE. Дословная цитата:

Чтобы настроить интерфейсы с маской сети, отличной от /32, вам следует создать образ с помощью флага --guest-os-features MULTI_IP_SUBNET и использовать его для создания вашего экземпляра. Например, если вы используете образ на основе Debian-9, вы можете создать образ с помощью следующей команды:

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone us-west1-a \
     --guest-os-features MULTI_IP_SUBNET

Связанный контент