Ubuntu配置静态IP以及interfaces配置不生效问题解决

1,275 阅读1分钟

Ubuntu配置静态IP以及interfaces配置不生效问题解决

  1. 前言
    最近配置ubuntu20.4的静态IP时发现设置静态 IP 后没有生效,后来发现原来自 17.10 开始,Ubuntu 已放弃在 /etc/network/interfaces 里设置静态 IP 的办法了,即使配置也不会生效。

    ​ 20.4改成了 netplan 方式 ,配置写在 /etc/netplan/01-network-manager-all.yaml 或者类似名称的 yaml 文件里(此处请注意 yaml 的语法格式)

    $ cat /etc/network/interfaces
        auto enpos3
        iface enpos3 inet static
        address 172.18.0.214
        netmask 255.255.255.0
        gateway 172.18.0.1
        dns-nameserver 202.106.0.20
    
  2. 设置网卡

    $ cat /etc/netplan/01-network-manager-all.yaml
    # Let NetworkManager manage all devices on this system
    network:
      version: 2
      renderer: NetworkManager
      ethernets:
        ens33:							 # 配置网卡的名称,通过 ip a 命令查看
          dhcp4: no						  # 关闭 DHCP,如果需要打开 DHCP 则写 true
          dhcp6: no
          addresses: [192.168.154.xxx/24]	# 配置的静态 IP 地址和掩码
          gateway4: 192.168.154.255			# 网关地址
          nameservers:
            addresses: [192.168.154.2,8.8.8.8]	
            # DNS 服务器地址,多个 DNS 服务器地址需要用英文逗号分隔开
            # 注意DNS网段要和自己配的IP同个网段
    
  3. 设置后重启网卡

    $ netplan apply 
    
  4. 查看网卡设置是否生效

    root@ubuntu20:~# ifconfig enp0s3
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.154.xxx  netmask 255.255.255.0  broadcast xxxx
    
  5. 测试网络连通性

    $ ping -c5 www.baidu.com
    

注意:yaml 语法

  • 冒号后面如果跟内容,需要使用空格隔开
  • 使用#号注释代码
  • 缩进必须是统一的,不能空格和tab混用
  • 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
  • YAML文件扩展名通常为yml或yaml