当我在默认 VPC 中创建一个实例并检查 ifconfig 时,它显示网络掩码是/32
,如下所示:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460
inet 10.138.0.2 netmask 255.255.255.255 broadcast 10.138.0.2
inet6 fe80::4001:aff:fe8a:2 prefixlen 64 scopeid 0x20<link>
ether 42:01:0a:8a:00:02 txqueuelen 1000 (Ethernet)
RX packets 4728 bytes 39926123 (38.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3900 bytes 442039 (431.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
问题是我尝试安装的应用程序不允许/32
子网。我尝试创建一个测试 VPC 网络,但如果我使用它,我就无法再 ssh 到实例。如果尝试将辅助范围添加到默认子网,但没有成功。我尝试扩展网络掩码,但sudo ifconfig eth0 10.138.0.2 netmask 255.255.255.0
ssh 连接冻结(使用 Web 浏览器进行 ssh)。之后我无法 ssh 到实例。还有其他方法吗?
我在这里看到了问题,但看起来似乎没有得到解答:Google Cloud Compute 将 /20 子网掩码设置为内部接口
答案1
不幸的是,这些参数是这样设置的,以便更好地与 Google Cloud Platform 集成。
关于为什么在创建新的VPC时无法使用SSH,您必须创建新的防火墙规则,因为它们只适用于一个VPC,所以旧的防火墙规则不适用于新的VPC。
我强烈建议向应用程序支持部门提出一个问题,以便与 Google Cloud Platform 集成。
答案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