Google Cloud Compute definiu máscara de sub-rede /20 para interface interna

Google Cloud Compute definiu máscara de sub-rede /20 para interface interna

A nuvem do Google usa DHCP para atribuir IPs a uma instância. Por algum motivo, eles atribuem o endereço com uma máscara de rede/32, mesmo que você esteja na sua própria rede/20. Descobri que se eu definir o IP público das instâncias como estático, posso entrar em /etc/syconfig/network-scripts/ifcfg-eth0, alterar BOOTPROTO de DHCP para STATIC e definir manualmente as configurações de IP e usar um /20 ou / 24 e sobreviverá às reinicializações. Porém, depois de fazer isso, perco a capacidade de me comunicar com esse host na rede interna. Se a instância estiver usando parâmetros DHCP, posso me comunicar entre hosts na LAN sem problemas.

Depois de ler online, encontrei este artigohttps://cloud.google.com/compute/docs/networkingtem uma seção falando sobre como fazer alterações no DNS e no resolv.conf e como usar a configuração dhcp.lease para fazer isso. Quando olho neste arquivo, vejo que ele tem a 'opção máscara de sub-rede 255.255.255.255;' contexto. Se eu alterar a máscara de rede e reiniciar a rede, as alterações serão revertidas.

Somente para referência:

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

Também comparei a tabela de rotas entre uma instância com um endereço DHCP padrão e uma instância com minhas configurações de IP estático.

instância-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

instância-4 (estático personalizado):

[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

Em seguida, adicionei manualmente as diferentes rotas à instância 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

Mas isso também não resolveu o problema.

script de rede da instância 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

script de rede da instância 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"

Como posso fazer com que a interface use uma máscara de rede diferente de /32 e ainda consiga se comunicar com outras instâncias na LAN?

O sistema operacional é CentOS 7

Estou precisando de uma máscara de rede diferente de /32 para poder instalar o FreeIPA. Ele não será instalado se a máscara de rede for /32.

Responder1

Não encontrei uma maneira de contornar o problema da máscara de rede no Google Cloud, mas descobri que o projeto IPA resolveu esse problema e lançou uma atualização apenas para torná-lo compatível com o GCloud. ipa versão 4.4.2 e posterior não terá esse problema. entretanto, a partir deste momento, essa versão não é portada para centos.

aqui estão as informações do patch para resolver manualmente.

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

Aqui está o relatório de bug real no site do projeto ipa.

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

Aqui está o bug que registrei no Google em relação ao aspecto da conectividade de rede.

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

Apenas divulgando tudo isso para que qualquer outra pessoa com esse problema possa encontrar algumas respostas.

Responder2

Para quem chegou aqui através de uma pesquisa no Google, aqui está o que encontrei na documentação do GCE. Citação literal:

Para configurar interfaces com máscara de rede diferente de /32, você deve criar uma imagem usando a flag --guest-os-features MULTI_IP_SUBNET e usá-la para criar sua instância. Por exemplo, se você estiver usando uma imagem baseada em debian-9, você pode criar uma imagem usando o seguinte comando:

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

informação relacionada