Облако Google использует 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. Когда я смотрю в этот файл, я вижу, что в нем есть опция «маска подсети 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
instance-4 (Custom Static):
[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.
Я не нашел способа обойти проблему с сетевой маской в облаке Google, но обнаружил, что проект 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 в отношении аспекта подключения к сети.
Просто выложите все это так, чтобы любой, у кого возникла эта проблема, мог найти ответы.
Для тех, кто попадает сюда из поиска 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