![Google Cloud Compute definiu máscara de sub-rede /20 para interface interna](https://rvso.com/image/697022/Google%20Cloud%20Compute%20definiu%20m%C3%A1scara%20de%20sub-rede%20%2F20%20para%20interface%20interna.png)
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.
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