[Linux基础]-15-Linux网络管理
引言
在Linux中,网络管理和配置可以通过多种方法完成,包括使用传统的命令行工具和现代的网络管理工具,如 NetworkManager。 本文介绍几种常用的方法及其详细步骤。
文章目录
0×1.Linux命令行显示网络连接
在Linux中有众多显示网络连接的命令,本文介绍的ip命令属于 iproute2 软件包。iproute2 是 Linux 系统中用于管理网络的工具集,包含了多种网络配置和管理工具,例如 ip、ss、tc 等,用于替代较旧的 ifconfig 和 route 命令。
在大部分系统中默认集成了iproute2软件包,如果输入ip回车后提示未找到这个命令,可以通过下面的命令安装:
● 查看网络接口信息
● 查看路由信息
● 查看指定的网卡信息,本例是命名为enp4s的网卡
● 查看网卡的统计信息(包含数据包的收发计数)
0×2.Linux命令行配置有线网络
● 使用ip命令,给网卡添加临时ip地址
使用 sudo ip address add 命令添加的 IP 地址是临时的,只在当前会话生效。如果系统重启或网络服务重启,这些临时配置将会丢失。
● 给网卡添加永久ip地址
使用 sudo ip address add 命令添加的 IP 地址是临时的,只在当前会话生效。如果系统重启或网络服务重启,这些临时配置将会丢失,下面是添加永久ip和网络配置的方法。
★ 通过修改配置文件配置网络:
● 在 Debian/Ubuntu 系列中
所有操作都是使用root账户,普通用户请在命令前加上sudo。
可以通过编辑 /etc/netplan/ 目录中的 YAML 配置文件(通常是 50-cloud-init.yaml 或类似的文件名):
上面这些配置是 Netplan 的网络配置文件格式,用于在 Ubuntu 和基于 Ubuntu 的系统上配置网络。Netplan 使用 YAML 格式定义网络接口的配置,包括静态 IP 地址、网关和 DNS 服务器。以下是对配置各个部分的解释:
network: 顶级键,表示网络配置的开始。
version: Netplan 配置文件格式的版本号。2 表示 Netplan 目前使用的最新版本,通常是固定的。
ethernets: 定义以太网接口的设置。这里的 ethernets 表示网络接口的类型(有线网络),Netplan 还可以配置其他类型的接口,如 wifis(无线网络)。
eth0: 这是接口名称。在这个示例中,配置应用于 eth0 接口(系统中的一个以太网接口),名称需与实际的接口名称一致。
dhcp4: 是否启用 IPv4 的 DHCP。no 表示不使用 DHCP 自动获取 IP 地址,而是配置静态 IP 地址。
addresses: 设置静态 IP 地址。这里是一个列表,以便支持多个 IP 地址。192.168.1.100/24 表示静态 IP 地址和子网掩码。
gateway4: IPv4 的默认网关。在此配置中,192.168.1.1 是默认网关地址。
nameservers: 配置 DNS 服务器。
addresses: DNS 服务器地址列表。这里指定了 8.8.8.8 和 8.8.4.4,分别是 Google 的公共 DNS 服务器。
Netplan 的定位是一个"网络配置抽象层",它并不是独立的网络管理服务,而是提供一个统一的、简洁的 YAML 配置接口,便于管理和配置网络。Netplan 将实际的网络管理任务委托给 NetworkManager(桌面环境下常用的网络管理工具) 或 systemd-networkd(非桌面环境常用的网络管理工具),Netplan 根据 YAML 配置文件内容,将其转换成 NetworkManager 或 systemd-networkd 能够理解的格式和配置,供它们使用。
这就意味着,在最新的Debian/Ubuntu 系列中,我们只需要更改/etc/netplan目录中的配置文件,就能实现网络配置,无需再去修改
/etc/NetworkManager/system-connections/
或
/etc/systemd/network/
中的配置内容了,这两个路径前者是 NetworkManager 配置文件存放位置,后者是 systemd-networkd 配置文件存放位置。
那么如何确保 Netplan 使用 NetworkManager 或者 systemd-networkd 呢?
例如Ubuntu中,默认的01-network-manager-all.yaml文件中,就全局指定了NetworkManager作为renderer,这样,Netplan 会将配置转换成 NetworkManager 可以使用的配置文件。
在修改了Netplan配置之后,可以用下面的命令让配置立刻生效:
那么我们如何判断当前的系统使用的是NetworkManager还是systemd-networkd呢?
就例如,在服务器Ubuntu系统中,没有安装图形界面的情况下,如果使用systemd-networkd作为网络管理组件,因此Netplan会将配置传递给systemd-networkd,使用systemctl status查看的时候发现,Netplan会在(/run/systemd/network/)目录中生成临时的配置文件(10-netplan-ens33.network), 提供给systemd-networkd调用。
● 在 CentOS/RHEL/Rocky Linux 系列中
在Rocky9系统中,默认使用NetworkManager网络管理组件时,网络配置文件保存在/etc/NetworkManager/system-connections目录中:
上面这段内容是一个 NetworkManager 连接配置文件(ens160.nmconnection),用于描述以太网接口 ens160 的设置。
以下是各部分的解释:
* [connection] 部分
id=ens160: 连接的名称或标识符,通常与网络接口的名称相同。
uuid=c18d7ea1-7f92-3575-9feb-8da6cda15c63: 该连接的唯一标识符(UUID),用于区分不同的连接配置。
type=ethernet: 指定连接的类型为以太网。
autoconnect-priority=-999: 这个值用于确定自动连接的优先级。值越低,优先级越低。在某些情况下,可以用负值来避免自动连接。
interface-name=ens160: 指定要绑定到该连接的网络接口名称。
timestamp=1730368130: 连接配置文件的时间戳,通常是 Unix 时间戳,表示文件的创建或最后修改时间。
* [ethernet] 部分
这个部分通常包含以太网特定的设置。在这个示例中,该部分为空,表示没有额外的以太网配置。
* [ipv4] 部分
method=auto: 指定 IPv4 地址的分配方式为自动(即使用 DHCP)。这意味着该接口将通过 DHCP 服务器自动获取 IP 地址、网关和 DNS 设置。
* [ipv6] 部分
addr-gen-mode=eui64: 指定 IPv6 地址生成模式为 EUI-64,这意味着系统将使用网络接口的 MAC 地址生成一个唯一的 IPv6 地址。
method=auto: 表示 IPv6 地址的分配方式也是自动(通过 DHCPv6 或其他方式)。
* [proxy] 部分
这个部分用于指定网络代理设置。在这个示例中,该部分为空,表示没有设置任何代理。
如果你想将 ens160.nmconnection 配置为静态 IP 地址,可以修改 [ipv4] 部分,添加静态 IP 地址、网关和 DNS 服务器信息。以下是一个示例配置:
解释各项:
method=manual: 设置为手动配置(静态 IP)。
addresses=192.168.1.100/24: 这里指定了静态 IP 地址和子网掩码(/24 表示 255.255.255.0)。
gateway=192.168.1.1: 设置默认网关。
dns=8.8.8.8;8.8.4.4;: 指定 DNS 服务器地址,可以用分号分隔多个 DNS 地址。
实际上,大部分配置可以省略,以下是一个最精简的 NetworkManager 连接配置示例,用于静态 IP 配置 ens160 接口:
解释各项:
* [connection] 部分定义了连接的基本信息。
id: 连接名称。
type: 连接类型为以太网。
interface-name: 绑定的网络接口名称。
* [ipv4] 部分:
method=manual: 设置为手动配置。
addresses: 静态 IP 地址和子网掩码。
gateway: 默认网关。
dns: DNS 服务器,可用分号分割多个dns服务器。
* [ipv6] 部分:
method=ignore: 指定不使用 IPv6。
这个配置提供了静态 IP 地址所需的最基本设置,省略了不必要的字段,如果想要自动获取IP将ipv4部分下只保留method=auto即可。
修改了配置文件之后,使用下面的命令重启网络服务以及ens160网卡,重新加载网络连接配置:
● 在 Arch Linux/Manjaro 系列中
如果Arch系统使用了Netplan来配置IP,那么同Ubuntu系列一样,netplan生成的配置文件可能存放在上面这个目录或/run目录下,可以通过观察systemctl status NetworkManager来判断。
★ 通过配置文件配置网络总结:
目前主流的网络管理组件有两个,一个是NetworkManager,另一个是systemd-networkd,其中前者一般用在有图形界面的系统中(但也可以用在没有图形界面的服务器版系统中),并提供了一整套图形界面操作的方法,后者在没有图形界面的系统用的比较多,除了这两种网络管理组件,社区还提供了类似Netplan这种网络配置工具,它可以使用统一的格式配置网络参数,然后再将Netplan配置中的信息,自动生成NetworkManager或systemd-networkd可以读取的配置文件。
★ 通过命令配置网络
因为 systemd-networkd 的网络配置是基于配置文件的,没有像NetworkManager这样提供配置命令,所以下面以NetworkManager网络配置组件举例:
● 显示网络信息:
● 创建自定义有线网络配置文件,并激活:
● 停用并删除指定的网络配置文件:
● 给指定的有线网络配置文件,添加静态IP配置:
0×3.Linux命令行配置无线网络
★ 使用NetworkManager网络管理组件的nmcli命令,可以搜索wifi,连接到指定的wifi。
● 搜索附近wifi并连接:
● 如果你的设备有多个 Wi-Fi 适配器(wifi网卡),可以指定使用哪个适配器去连接(如 wlan1):
★ 使用systemd-networkd作为网络管理工具如何连接wifi
可以配合wpa_supplicant来管理 Wi-Fi 网络的连接,wpa_supplicant 是 Linux 和其他操作系统中用于管理无线网络连接的工具,特别是针对 WPA(Wi-Fi Protected Access)和 WPA2 协议的连接,支持包括 WEP、WPA、WPA2 和 WPA3 在内的多种加密协议,因此能兼容不同安全需求的无线网络。
它的名字来源于“WPA Supplicant”,意为“WPA 客户端”,它可以充当设备和无线网络之间的“客户端”,负责处理加密、身份验证以及网络连接等任务,请看下面的示例:
★ 方法二:使用iwd连接wifi
iwd (iNet 无线守护程序)是由 Intel 编写的用于 Linux 的无线守护程序。该项目的核心目标是通过不依赖任何外部库,而是尽可能地利用 Linux 内核提供的功能来优化资源利用率。iwd 可以在独立模式下工作,也可以与 ConnMan 、 systemd-networkd 和 NetworkManager 等综合网络管理器结合使用。
在下载的Archlinux的iso镜像中已经预安装了iwd软件包(或者在有网的环境下执行pacman -S iwd安装),下面是使用iwd连接wifi的方法:
0×4.Linux图形命令行配置网络
nmtui 是 NetworkManager 提供的一个基于终端的交互式图形界面工具,方便用户在无桌面环境的服务器或终端中进行网络配置。通过 nmtui,用户可以轻松完成网络接口的添加、删除、修改等操作,而无需手动编辑配置文件。systemd-networkd 本身没有像 nmtui 这样的内置图形化或交互式配置工具,因为它主要是一个轻量级的网络管理后台服务,所以下面这个命令,只有在安装了NetworkManager 网络管理组件的系统中才能使用