Google Cloud Compute set / 20子网掩码到内部接口

Google云使用DHCP将IP分配给实例。 出于某种原因,即使您在自己的/ 20networking上,他们也会使用/ 32networking掩码来分配地址。 我发现,如果我将实例公共IP设置为静态,我可以进入/ etc / syconfig / network-scripts / ifcfg-eth0,将BOOTPROTO从DHCP更改为STATIC,然后手动设置IP设置,并使用/ 20或/ 24子网,它将在重新启动后继续运行。 但是,这样做后,我就失去了与内部networking上的主机通信的能力。 如果实例使用DHCP参数,则可以在LAN上的主机之间进行通信,而不会出现问题。

在网上阅读后,我发现这篇文章https://cloud.google.com/compute/docs/networking有一节讨论如何更改DNS和resolv.conf,并使用dhcp.leaseconfiguration来实现。 当我查看这个文件时,我发现它有'option subnet-mask 255.255.255.255;' 设置。 如果我更改networking掩码并重新启动networking,更改将被还原。

仅供参考:

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 

然后我手动添加不同的路由到实例-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 

但是这也没有解决问题。

实例-4networking脚本:

 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 

实例2networking脚本

 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以外的networking掩码的接口,并且仍然能够与LAN上的其他实例进行通信?

操作系统是CentOS 7

我需要一个/ 32以外的networking掩码才能安装FreeIPA。 如果networking掩码是/ 32,它将不会安装。

我还没有find解决谷歌云上的networking掩码问题的方法,但我发现IPA项目已经解决了这个问题,并发布了一个更新,以使其与GCloud兼容。 ipa版本4.4.2和更高版本不会有这个问题。 然而就目前而言,这个版本并没有被支持到centos。

这里是手动解决的补丁信息。

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

这是ipa项目网站上的实际错误报告。

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

这里是我提交给谷歌有关networking连接方面的错误。

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

把所有这一切都放在那里,所以任何有这个问题的人可以find一些答案。