Akemi

Ubuntu管理网络的不同方式

2025/08/27

心血来潮进行的整理,挺早面试的时候有被问到过,但当时我还很菜,就没有答出来

ifupdown

用于ubuntu16.04LTS及以前版本系统的网络管理

也可以用于18.04的管理

ifupdown得名于其启用与禁用网卡的方式:ifup eth0ifdown wth0

1
2
3
4
5
6
7
8
9
10
11
12
13
主配置文件/etc/network/interfaces
子配置文件/etc/network/interfaces.d/

cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet dhcp

子配置文件配置

推荐格式: 数字-描述性名称.cfg

如果同一个接口在不同的文件中被重复定义,后读取的配置会覆盖先前的配置,这就是为什么使用数字前缀来控制顺序很重要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo vim /etc/network/interfaces.d/00-eth0.cfg

# 配置dhcp网卡
auto eth0 # 开机启动
iface eth0 inet dhcp

# 配置静态IP网卡
auto eth0
iface eth0 inet static
address 192.168.8.100/24
gateway 192.168.8.254
dns-nameservers 8.8.8.8 192.168.8.254
hwaddress ether 52:54:00:12:34:56
mtu 1500
# 钩子脚本
post-up ip route add 10.10.0.0/16 via 192.168.8.200
pre-down ip route del 10.10.0.0/16 via 192.168.8.200

# 重启网卡使配置文件生效
sudo ifdown eth0 && sudo ifup eth0

netplan

用于ubuntu18.04LTS及之后版本的网络管理

在server版本中其使用systemd-networkd作为后端,在desktop版本中使用NetworkManager作为后端,这个后面会解释是什么意思

在16.04中可选
在18.04中,netplan和ifupdown是共存的,但默认使用netplan
在20.04以之后,只使用netplan

配置文件说明

同样也是数字+描述.yaml,如果存在相同网卡配置,数字大的配置文件会覆盖数字小的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat /etc/netplan/00-installer-config.yaml
# dhcp配置
network:
ethernets: # 以太网设备
eth0:
dhcp4: true
version: 2
renderer: networkd # 指定后端


# 静态配置
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.8.140/24
routes:
- to: default
via: 192.168.8.254 # 默认网关
nameservers:
addresses:
- 8.8.8.8

# 应用配置
sudo netplan try

systemd-networkd

systemd-networkd是netplan的后端,也就是说
在Netplan中进行的配置,会给对应后端systemd-networkd生成配置,比如
/run/systemd/network/10-netplan-*.network

1
2
3
4
5
6
7
8
9
10
11
cat /run/systemd/network/10-netplan-ens33.network
[Match]
Name=ens33

[Network]
DHCP=ipv4
LinkLocalAddressing=ipv6

[DHCP]
RouteMetric=100
UseMTU=true

配置文件编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
sudo vim /etc/systemd/network/10-eth0.network
# DHCP网卡
[Match]
# 匹配eth0
Name=eth0
# Name=eth* 匹配所有eth接口

[Network]
# 同时启用ipv4和6的dhcp
DHCP=yes

[DHCP]
# 使用由DHCP服务器发送的DNS服务器地址
UseDNS=yes
# 使用由DHCP服务器发送的路由信息
UseRoutes=yes

# static网卡
[Match]
Name=eth0

[Network]
Address=192.168.8.142/24
Gateway=192.168.8.254
DNS=8.8.8.8
DNS=8.8.4.4

重启服务
sudo systemctl restart systemd-networkd.service
sudo systemctl restart systemd-resolved.service

如果想在16.04上使用systemd-networkd

  • 禁用ifupdown:注释掉/etc/network/interfaces中所有非回环接口的配置,并禁用networking.service。
  • 启用并启动systemd-networkd和systemd-resolved服务。
  • 编写systemd-networkd的.network配置文件。
CATALOG
  1. 1. ifupdown
  2. 2. netplan
  3. 3. systemd-networkd