You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改Google Compute实例主网卡eth0子网掩码/32及问题解决

解决方案:AWS VPC实例子网掩码/32问题及SSH连接故障修复

你碰到的是AWS VPC网络配置里的典型场景——默认VPC的实例因AWS的单播路由机制会分配/32子网掩码,但你的应用不支持这种配置,同时自定义VPC配置、手动改网络参数又引发了新的连接问题。下面是一步步的解决办法:

1. 正确创建可SSH连接的自定义VPC

如果想通过自定义VPC绕开默认VPC的/32限制,得确保配置全流程没有遗漏:

  • 创建VPC时指定符合需求的CIDR块(比如10.138.0.0/24),这个网段要匹配你的应用子网要求
  • 在该VPC下创建子网,直接使用VPC CIDR的一段(比如10.138.0.0/24
  • 为VPC关联互联网网关,并给子网的路由表添加默认路由:0.0.0.0/0指向互联网网关
  • 配置安全组,开放TCP 22端口(SSH)给你的本地IP(测试阶段可临时开放0.0.0.0/0,生产环境务必严格限制IP范围)
  • 启动实例时选择这个自定义子网,勾选“自动分配公有IP”(或后续绑定弹性IP),这样就能正常SSH连接了

2. 修改默认VPC实例的子网掩码(无需重建实例)

直接用ifconfig临时修改会破坏AWS的网络路由逻辑,导致SSH冻结,正确的做法是修改系统的持久化网络配置:

针对Ubuntu/Debian系统

  • 编辑云初始化的网络配置文件:
    sudo nano /etc/netplan/50-cloud-init.yaml
    
  • 修改addresses字段,把子网掩码从/32改成你需要的(比如10.138.0.2/24),示例配置:
    network:
        ethernets:
            eth0:
                addresses: [10.138.0.2/24]
                dhcp4: true
                match:
                    macaddress: 0a:xx:xx:xx:xx:xx
                set-name: eth0
        version: 2
    
  • 应用配置生效:
    sudo netplan apply
    

针对RHEL/CentOS系统

  • 编辑网卡配置文件:
    sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
    
  • 修改或添加NETMASK字段:
    NETMASK=255.255.255.0
    
  • 重启网络服务:
    sudo systemctl restart network
    

修改后,实例会使用正确的子网掩码,同时保留AWS的原生路由配置,不会导致SSH断开。

3. 辅助IP段添加失败的排查

如果给默认子网加辅助IP段没成功,检查这几个关键点:

  • 辅助IP段不能和主VPC的CIDR重叠,比如主VPC是10.0.0.0/16,辅助段可以用10.138.0.0/24
  • 添加辅助IP段后,需要在EC2控制台给实例分配辅助私有IP,然后在操作系统里配置这个IP(而非修改主IP的掩码),比如用ip addr add 10.138.0.3/24 dev eth0临时添加,或者写入配置文件持久化

4. 手动改ifconfig后SSH冻结的恢复方法

如果已经执行了手动修改导致SSH冻结,可以通过以下方式恢复:

  • 启用EC2实例的串行控制台(如果之前开启过),通过AWS控制台直接连接到实例的串行终端,然后恢复原来的网络配置
  • 如果没开串行控制台,可以停止实例,修改实例的网络接口配置(比如重新分配主IP),然后启动实例,系统会自动恢复默认的网络配置

内容的提问来源于stack exchange,提问作者alexfvolk

火山引擎 最新活动