网络
使用最小安装 ( 未安装 GUI 情况下 ) 的 Debian 将使用 network 网络管理器。
而安装 GUI 的情况下则会安装 NetworkManager
配置网络的方式与其他 Linux 系统并没有太多区别。
即便是使用最小方式安装的 Debian,也可配置使用 NetworkManager 来管理网络。

network 网络管理器

network 网络管理器是一直以来 Debian 默认使用的网络管理器。
与早期版本的 Red Hat 发行版类似,network 把网络配置写在一个文件内,并从文件内加载配置。
但与 Red Hat 系发行版不同的是,Red Hat 发行版将网卡配置文件保存在 /etc/sysconfig/network-scripts/ifcfg-*name* 文件中,而 Debian 将网络配置文件统一写在 /etc/network/interfaces 文件中。
默认情况下,在一个新安装的 Debian 中,网络是这样配置的,但 Debian 给出的最佳实现是将网络配置分网卡保存到 /etc/network/interface.d/ 下。
在我的安装好的系统中,网卡默认配置为 DHCP 方式获取 IP 地址,/etc/network/interfaces 内容如下:
1
# This file describes the network interfaces available on your system
2
# and how to activate them. For more information, see interfaces(5).
3
4
source /etc/network/interfaces.d/*
5
6
# The loopback network interface
7
auto lo
8
iface lo inet loopback
9
10
# The primary network interface
11
allow-hotplug ens33
12
iface ens33 inet dhcp
Copied!
当下,使用 systemd 的系统默认会使用 biosdevname 方案来对网卡命名,他的好处是网卡名不会因重启或更换物理硬件等其他情况而改变,但结果会导致网卡名不再像过去那种 eth0 一类的名字易于推断。
因此配置网卡前,可能我们需要使用 ip addr 命令 ( 来自 iproute2 工具包 ), 在我的例子中,运行如下:
1
2
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
3
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4
inet 127.0.0.1/8 scope host lo
5
valid_lft forever preferred_lft forever
6
inet6 ::1/128 scope host
7
valid_lft forever preferred_lft forever
8
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
9
link/ether 00:0c:29:f7:01:7f brd ff:ff:ff:ff:ff:ff
10
inet 192.168.28.128/24 brd 192.168.28.255 scope global dynamic ens33
11
valid_lft 1498sec preferred_lft 1498sec
12
inet6 fe80::20c:29ff:fef7:17f/64 scope link
13
valid_lft forever preferred_lft forever
Copied!
如此可见,本例的网卡名为 ens33
在主配置文件中,或在 /etc/network/interface.d/ 中,创建配置文件 ( 文件名不限 ),对网卡进行配置。
如需要 DHCP,写作如下:
1
auto ens33
2
iface ens33 inet dhcp
Copied!
如配置静态 IPv4 地址,则写作如下:
1
auto ens33
2
iface ens33 inet static
3
address 192.168.0.3/24 # IP/CIDR 形式的 IP 地址
4
gateway 192.168.0.1 # 网关地址
Copied!
DNS 信息填入 /etc/resolv.conf
1
$ nameserver 114.114.114.114
Copied!
重启网卡生效
1
# 重启网卡
2
$ ifdown ens33
3
$ ifup ens33
Copied!
文档: man interface(5)

NetworkManager

NetworkManager 是一个由 GNOME 项目开发的,使得 Linux 的网络配置尽可能简单,开箱即用而开发的软件包。
目前 Red Hat 发行版已经自带并默认使用 NetworkManager 来管理网络。
如何查看当前的 Debian 安装是否使用 NetworkManager?
  • 使用 nmclinmtui 命令,如果运行了 NetworkManager 的管理工具,则当前系统可能在使用 NetworkManager 管理网络
  • 使用 systemctl status network-manager 查看服务状态,如果具有该服务,并且服务正在运行,则说明当前系统正在使用 NetworkManager 管理网络
NetworkManager 与传统的 network 网络管理器不可同时使用,如果使用两者同时管理同一网卡会造成冲突。

安装

最小化安装的 Debian 不会安装 NetworkManager,若要使用 NetworkManager,需要安装软件包。
1
$ apt install network-manager
Copied!
屏幕输出
1
[email protected]:~# apt install network-manager
2
Reading package lists... Done
3
Building dependency tree
4
Reading state information... Done
5
The following additional packages will be installed:
6
crda dns-root-data dnsmasq-base iw libbluetooth3 libgudev-1.0-0 libjansson4
7
libjim0.77 libmbim-glib4 libmbim-proxy libmm-glib0 libndp0 libnl-3-200
8
libnl-genl-3-200 libnl-route-3-200 libnm0 libpcap0.8 libpcsclite1
9
libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libqmi-glib5
10
libqmi-proxy libteamdctl0 modemmanager policykit-1 ppp usb-modeswitch
11
usb-modeswitch-data wireless-regdb wpasupplicant
12
Suggested packages:
13
pcscd libteam-utils comgt wvdial wpagui libengine-pkcs11-openssl
14
The following NEW packages will be installed:
15
crda dns-root-data dnsmasq-base iw libbluetooth3 libgudev-1.0-0 libjansson4
16
libjim0.77 libmbim-glib4 libmbim-proxy libmm-glib0 libndp0 libnl-3-200
17
libnl-genl-3-200 libnl-route-3-200 libnm0 libpcap0.8 libpcsclite1
18
libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libqmi-glib5
19
libqmi-proxy libteamdctl0 modemmanager network-manager policykit-1 ppp
20
usb-modeswitch usb-modeswitch-data wireless-regdb wpasupplicant
21
0 upgraded, 32 newly installed, 0 to remove and 0 not upgraded.
22
Need to get 9,152 kB of archives.
23
After this operation, 31.4 MB of additional disk space will be used.
24
Do you want to continue? [Y/n] y
25
Get:1 http://mirrors.163.com/debian buster/main amd64 libbluetooth3 amd64 5.50-1.2~deb10u1 [100 kB]
26
Get:2 http://mirrors.163.com/debian buster/main amd64 libjansson4 amd64 2.12-1 [38.0 kB]
27
Get:3 http://mirrors.163.com/debian buster/main amd64 libmm-glib0 amd64 1.10.0-1 [942 kB]
28
29
--- # 省略部分输出
30
31
Setting up libqmi-proxy (1.22.0-1.2) ...
32
Setting up network-manager (1.14.6-2+deb10u1) ...
33
34
The following network interfaces were found in /etc/network/interfaces
35
which means they are currently configured by ifupdown:
36
- ens33
37
If you want to manage those interfaces with NetworkManager instead
38
remove their configuration from /etc/network/interfaces.
39
40
Created symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service →
41
/lib/systemd/system/NetworkManager-dispatcher.service.
42
Created symlink /etc/systemd/system/network-online.target.wants/NetworkManager-w
43
ait-online.service → /lib/systemd/system/NetworkManager-wait-online.service.
44
Created symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.servi
45
ce → /lib/systemd/system/NetworkManager.service.
46
Setting up modemmanager (1.10.0-1) ...
47
Created symlink /etc/systemd/system/dbus-org.freedesktop.ModemManager1.service →
48
/lib/systemd/system/ModemManager.service.
49
Created symlink /etc/systemd/system/multi-user.target.wants/ModemManager.service
50
→ /lib/systemd/system/ModemManager.service.
51
Processing triggers for systemd (241-7~deb10u5) ...
52
Processing triggers for man-db (2.8.5-2) ...
53
Processing triggers for dbus (1.12.20-0+deb10u1) ...
54
Processing triggers for libc-bin (2.28-10) ...
Copied!
安装 NetworkManager 后,安装过程提示在原有 /etc/network/interfaces 中的网卡不会被自动由 NetworkManager 配置。

配置

迁移

NetworkManager 会带来两个新的网络配置工具,nmclinmtui
但 NetworkManager 会覆盖已有的所有网络配置,包括 DNS 在内,因此所有配置要使用 NetworkManager 配套工具进行。
如果要整体对网络管理器进行迁移,需要进行一番操作。
在继续使用之前,我们将原配置文件的网卡配置注释。
1
$ [email protected]:~# vi /etc/network/interfaces
Copied!
1
# This file describes the network interfaces available on your system
2
# and how to activate them. For more information, see interfaces(5).
3
4
source /etc/network/interfaces.d/*
5
6
# The loopback network interface
7
auto lo
8
iface lo inet loopback
9
10
# The primary network interface
11
12
#allow-hotplug ens33 # 在源配置前加 # 注释
13
#iface ens33 inet dhcp
Copied!
接下来重启 networkingnetwork-manager 服务
1
$ systemctl restart networking
2
$ systemctl restart network-manager
Copied!

nmtui

nmtui 是一个图形化方式配置网络的工具,易于上手。
在终端中输入
1
$ nmtui
Copied!
即可打开 nmtui 工具。
1
┌─┤ NetworkManager TUI ├──┐
2
│ │
3
│ Please select an option │
4
│ │
5
│ Edit a connection │
6
│ Activate a connection │
7
│ Set system hostname │
8
│ │
9
│ Quit │
10
│ │
11
│ <OK> │
12
│ │
13
└─────────────────────────┘
Copied!
三个选项分别为:
  • 编辑连接
  • 启用连接
  • 设置系统主机名
  • 退出
选择 Edit a connection 进入编辑
1
┌───────────────────────────────────────┐
2
│ │
3
│ ┌─────────────────────────┐ │
4
│ │ Ethernet ↑ │ <Add> │
5
│ │ ens33 ▒ │ │
6
│ │ Wired connection 1 ▒ │ <Edit...> │
7
│ │ ▒ │ │
8
│ │ ▒ │ <Delete> │
9
│ │ ▒ │ │
10
│ │ ▒ │ │
11
│ │ ▒ │ │
12
│ │ ▒ │ │
13
│ │ ▮ │ │
14
│ │ ▒ │ │
15
│ │ ▒ │ │
16
│ │ ▒ │ │
17
│ │ ▒ │ │
18
│ │ ▒ │ │
19
│ │ ↓ │ <Back> │
20
│ └─────────────────────────┘ │
21
│ │
22
└───────────────────────────────────────┘
Copied!
迁移网络后,出现了两个配置,实际上他们配置的是一张网卡,可以选择其中一个删除。
选中一个连接按 Enter 键后,可以很轻松的修改配置。
修改好配置后,回到第一个界面,进入 Activate a connection,选择修改的连接,按两下 Enter 键重新激活即可。