ubuntu中网卡的 IP 及网关配置设置为永久生效

要将 Ubuntu 中 ens33ens36 网卡的 IP 及网关配置设置为永久生效(重启后不丢失),需通过 netplan 配置并禁用 cloud-init 对网络的干扰(避免重启后配置被覆盖),具体步骤如下:

一、最终的永久生效配置文件

编辑 /etc/netplan/00-installer-config.yaml(或系统中实际的配置文件),内容如下(以保留 ens36 网关为例):

双网卡永久网络配置

复制代码
network:
  ethernets:
    ens33:  # 无网关,仅内网通信
      addresses: [192.168.70.XX/24]
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
      # 不配置routes(无默认网关)

    ens36:  # 有网关,负责对外通信
      addresses: [192.168.1.XX/24]
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
      routes:
        - to: default
          via: 192.168.1.1  # 仅保留此网关

  version: 2
  renderer: networkd  # 固定网络管理器,避免冲突

二、关键步骤:禁用 cloud-init 网络管理(防止配置被覆盖)

若系统启用了 cloud-init(常见于云服务器或虚拟机),其会自动生成网络配置并覆盖手动设置,需执行以下操作禁用:

  1. 创建配置文件:

    bash

    复制代码
    sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
  2. 写入以下内容(告知 cloud-init 不管理网络):

    yaml

    复制代码
    network: {config: disabled}
  3. 保存退出(Ctrl+XY → 回车)。

三、应用配置并验证

  1. 测试配置语法(防止错误导致断网):

    bash

    复制代码
    sudo netplan try

    出现提示后按回车确认,若报错则根据提示修正缩进或格式。

  2. 永久应用配置:

    bash

    复制代码
    sudo netplan apply
  3. 重启服务器验证:

    bash

    复制代码
    sudo reboot
  4. 重启后检查是否生效:

    bash

    复制代码
    # 查看IP是否正确
    ip addr show ens33
    ip addr show ens36
    
    # 查看网关是否为ens36的192.168.1.1
    ip route show

总结

通过以上步骤:

  1. netplan 配置文件定义了两张网卡的静态 IP、DNS 和网关(仅 ens36 保留网关)。
  2. 禁用 cloud-init 网络管理,确保重启后手动配置不被覆盖。
  3. 配置会永久生效,无论重启多少次,IP 和网关都保持不变。