1. 简介

netplanUbuntu 在 17.10 版本中引入的一种新的命令行网络配置程序,用于在 Ubuntu 系统中轻松管理和配置网络设置。它允许用户使用 YAML 抽象语法来配置网络接口。它可与 NetworkManager 和 systemd-networkd 网络守护程序一起作为内核的接口。

它读取 /etc/netplan/*.yaml 中描述的网络配置,并且可以将所有网络接口的配置存储在这些文件中。

2. 静态 IP 设置步骤

  1. 列出 Ubuntu 上的所有活动网络接口

    首先来查看 Ubuntu 上有哪些可以配置的网络接口。可以通过 ifconfig 命令来列出系统中所有连接的网络接口

    ismdeep@ubuntu:~$ ifconfig
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.56.103  netmask 255.255.255.0  broadcast 192.168.56.255
            inet6 fe80::a00:27ff:fe7c:4250  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:7c:42:50  txqueuelen 1000  (Ethernet)
            RX packets 361  bytes 32651 (32.6 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 240  bytes 30363 (30.3 KB)
            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 1000  (Local Loopback)
            RX packets 1840  bytes 131056 (131.0 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1840  bytes 131056 (131.0 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    这里可以看到系统中有两个网络接口:enp0s3 是以太网接口,lo 是环回接口。

  2. Ubuntu 设置静态 IP 地址

    在这个例子中,我们将以 enp0s3 以太网接口配置一个静态 IP。

    如果在 /etc/netplan 目录中没有 yaml 文件的话,则需要通过命令来生成这些配置文件。

    ismdeep@ubuntu:~$ sudo netplan generate
    

    接下来可以通过以下命令查看 /etc/netplan 中有哪些配置文件。

    ismdeep@ubuntu:~$ ls -l /etc/netplan/
    total 4
    -rw-r--r-- 1 root root 383 Nov 19 11:14 50-cloud-init.yaml
    

    接下来通过 vim 或者其他编辑器进行编辑 yaml 文件。

    # This is the network config written by 'subiquity'
    network:
      ethernets:
        enp0s3:
          addresses: []
          dhcp4: true
          optional: true
      version: 2
    
    network:
      ethernets:
        enp0s8:
          addresses:
          - 192.168.56.101/24
          dhcp4: no
          optional: true
      version: 2
    

    说明:

    • enp0s3 : 网络接口名称
    • dhcp4 : 接收 IPv4 接口的 DHCP 属性
    • dhcp6 : 接收 IPv6 接口的 DHCP 属性
    • addresses : 接口的静态地址序列
    • gateway4 : 默认网关的 IPv4 地址
    • nameservers : DNS 服务器地址,以英文逗号( , )分隔。

    注:多个网卡时请配置一个 gateway4 表示流量从哪个网卡出去。如果有 NAT DHCP 的网卡,则将这个放在最前。

  3. 使之生效

    在编辑完配置文件后,通过以下命令使配置生效。

    ismdeep@ubuntu:~$ sudo netplan apply
    

3. 动态 IP 设置步骤

  1. 要将 enp0s3 以太网接口配置为通过 DHCP 动态IP,只需使用以下配置即可

    network:
        ethernets:
            enp0s3:
                dhcp4: true
                dhcp6: true
        version: 2
    
  2. 使之生效

    ismdeep@ubuntu:~$ sudo netplan apply
    

4. 取消使用路由

通过 use-routes:false 取消使用路由

# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      dhcp4: true
      dhcp4-overrides:
        use-routes: false
  version: 2