1. 简介
netplan 是 Ubuntu 在 17.10 版本中引入的一种新的命令行网络配置程序,用于在 Ubuntu 系统中轻松管理和配置网络设置。它允许用户使用 YAML 抽象语法来配置网络接口。它可与 NetworkManager 和 systemd-networkd 网络守护程序一起作为内核的接口。
它读取 /etc/netplan/*.yaml
中描述的网络配置,并且可以将所有网络接口的配置存储在这些文件中。
2. 静态 IP 设置步骤
列出 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
是环回接口。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 的网卡,则将这个放在最前。使之生效
在编辑完配置文件后,通过以下命令使配置生效。
ismdeep@ubuntu:~$ sudo netplan apply
3. 动态 IP 设置步骤
要将
enp0s3
以太网接口配置为通过 DHCP 动态IP,只需使用以下配置即可network: ethernets: enp0s3: dhcp4: true dhcp6: true version: 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