目录
方法一:通过修改 NetworkManager 的 keyfile 格式配置文件
一、网络参数配置
1、图形化配置
NetworkManager 是 Linux 系统中用于管理网络连接的守护进程和工具集,旨在简化网络配置、自动处理网络连接(如 Wi-Fi、有线网络、VPN 等),并提供用户友好的网络状态监控和切换功能。它广泛应用于桌面环境(如 GNOME、KDE)和服务器环境,是现代 Linux 发行版的标配组件之一。
核心功能
-
网络连接管理
-
自动检测网络接口(如以太网、Wi-Fi、蓝牙)并管理其连接状态。
-
支持动态 IP(DHCP)和静态 IP 配置,以及 Wi-Fi 的自动扫描和连接。
-
保存和切换多个网络配置文件(如不同 Wi-Fi 热点的认证信息)。
-
-
VPN 支持
-
集成对多种 VPN 协议的支持(如 OpenVPN、WireGuard、PPPoe 等),可通过图形界面或命令行配置。
-
-
网络状态监控
-
提供系统托盘图标(桌面环境中)或命令行工具(如
nmcli)显示当前网络连接状态、IP 地址、信号强度等信息。
-
-
脚本扩展
-
支持通过脚本(
/etc/NetworkManager/dispatcher.d/)在网络状态变化时自动执行自定义操作(如防火墙规则更新)。
-
-
命令行工具
-
nmcli:用于管理网络连接的命令行接口,适合服务器环境或无图形界面场景。 -
nmtui:基于文本的交互式界面,用于简单的网络配置。
-
典型应用场景
-
桌面用户:通过图形界面轻松切换 Wi-Fi 网络、配置 VPN、查看流量统计。
-
服务器管理员:使用
nmcli命令行工具批量管理网络接口,或通过NetworkManager.conf配置文件定义静态网络参数。 -
移动设备:在笔记本电脑或平板上自动处理网络切换(如从 Wi-Fi 切换到有线网络),优化电池续航。
不同系统版本中的异同(了解)
在不同 Linux 系统版本中,NetworkManager 的核心功能保持一致,但在版本迭代、依赖组件、配置方式及兼容性上存在差异。以下是针对不同系统版本(如基于 systemd 的现代发行版、使用 NetworkManager 不同版本的系统)的详细对比,特别关注与 socky(可能是 NetworkManager 的 socket 通信机制或特定版本特性)相关的差异:
1. 版本迭代与系统支持
主流版本差异
| Linux 发行版 | 默认 NetworkManager 版本 | 特性差异 |
|---|---|---|
| Ubuntu 20.04 LTS | 1.22.x | 支持 nmcli 的基本功能,默认使用 dnsmasq 作为 DNS 解析器,通过 dbus 与应用通信。 |
| Ubuntu 22.04 LTS | 1.36.x | 引入对 WireGuard VPN 的原生支持,优化了网络连接切换逻辑,支持 resolvectl 替代 dnsmasq。 |
| Fedora 37+ | 1.42.x | 强化了对 NetworkPolicy(Kubernetes 网络策略)的支持,改进了 nmcli 的 VPN 配置命令。 |
| CentOS/RHEL 7 | 1.12.x | 依赖传统 ifcfg-* 配置文件兼容性层,需手动迁移至 NetworkManager 原生配置(如 connection.interface-name)。例如原本在 “ifcfg-” 文件中配置网络接口相关信息,现在要按 NetworkManager 原生配置的要求,将这些信息重新配置到 “connection.interface-name” 所对应的配置项中。 |
| CentOS/RHEL 8/9 | 1.30.x/1.40.x | 移除 ifcfg-* 支持,强制使用 nmcli 或 nmtui 配置,引入 nmstate 作为配置抽象层。例如,以往通过修改 “ifcfg-” 文件来配置网络,现在要改为用 “nmcli” 命令如 “nmcli connection add con-name myconn type ethernet ifname eth0” 添加网络连接,或者使用 “nmtui” 的交互界面来配置;而 “nmstate” 则可以在更高层面统一管理这些配置操作,比如通过编写配置文件经 “nmstatectl” 工具来应用配置 |
| openSUSE Leap 15.4 | 1.32.x | 集成 NetworkManager-applet 作为默认图形界面,支持 wicked 网络配置后端的混合模式。 |
关键版本特性
-
1.20+:引入
nmcli connection up/down命令替代旧版nmcli device connect/disconnect,改进了连接激活逻辑。 -
1.30+:支持 DHCPv6 无状态配置,优化了对 IPv6-only 网络的兼容性。
-
1.36+:增强了 VPN 插件架构,允许第三方 VPN 提供商(如 Tailscale)直接集成到 NetworkManager 中。
2. Socket 通信机制差异
通信接口类型
-
D-Bus Socket: 所有版本的 NetworkManager 均通过
dbus与用户空间应用(如nmcli、图形界面)通信,socket 文件路径通常为/run/dbus/system_bus_socket。-
差异:较新版本(如 1.36+)优化了 dbus 消息处理,减少了内存占用。
-
-
Netlink Socket: NetworkManager 通过 netlink 与内核网络栈交互,管理网络接口状态。
-
差异:较新版本(如 1.40+)改进了 netlink 消息的批量处理,提升了多网卡系统的性能。
-
-
特定版本的 Socket 扩展:
-
1.26+:引入
libnm库的异步 API,允许应用通过 socket 非阻塞方式查询 NetworkManager 状态。 -
1.38+:支持通过 JSON-RPC over Unix socket 与 NetworkManager 通信(实验性特性),路径为
/run/NetworkManager/socket。
-
3. 配置文件与兼容性
主配置文件
-
所有版本:主配置文件为/etc/NetworkManager/NetworkManager.conf,但参数格式可能不同。
-
示例差异:
-
旧版(如 1.12.x):使用
[ifupdown] managed=false禁用对/etc/network/interfaces的解析。 -
新版(如 1.40.x):改用
[keyfile] unmanaged-devices=...精确控制未管理设备。
-
-
连接配置文件
-
传统格式(如 CentOS 7): 使用
/etc/sysconfig/network-scripts/ifcfg-*文件,需通过nmcli connection import转换为 NetworkManager 格式。 -
现代格式(如 Fedora 37): 直接存储为
/etc/NetworkManager/system-connections/下的.nmconnection文件(INI 格式)。
4. 服务管理与启动差异
服务单元文件
-
systemd 系统(如 Ubuntu 18.04+、Fedora): 使用
NetworkManager.service和NetworkManager-dispatcher.service,通过systemctl管理。 -
非 systemd 系统(如 CentOS 6、Gentoo): 使用 SysVinit 脚本(如
/etc/init.d/NetworkManager),需手动迁移至 systemd。
启动顺序
-
旧版系统(如 Ubuntu 16.04): NetworkManager 在系统启动时可能与其他网络服务(如
ifupdown)冲突,需手动调整启动顺序。 -
新版系统(如 Ubuntu 22.04): 通过
systemd的依赖关系(如After=network.target)自动处理启动顺序,减少冲突。
5. 与第三方工具的集成
DNS 管理
-
Ubuntu 20.04:默认使用
dnsmasq,配置文件位于/etc/NetworkManager/dnsmasq.d/。 -
Ubuntu 22.04:默认改用
systemd-resolved,通过/etc/NetworkManager/conf.d/下的配置文件控制。
容器与虚拟化
-
NetworkManager 1.32+:支持通过
nmcli connection add type bridge创建桥接网络,适用于 LXC 容器。 -
Kubernetes:较新版本(如 1.40+)通过
NetworkPolicy支持 CNI(容器网络接口)插件。
6. 故障排查工具
日志收集
-
旧版系统:使用
journalctl -u NetworkManager查看日志,但早期版本(如 1.10.x)日志信息较少。 -
新版系统:日志更详细,支持
nmcli general logging level DEBUG临时提升日志级别。
诊断命令
-
1.28+:引入
nmcli device diagnose命令,自动检测网络连接问题并生成报告。
总结:选择与适配建议
-
版本升级考量:
-
从旧版(如 1.12.x)升级到新版(如 1.40.x)时,需注意配置文件格式变化,尤其是
unmanaged-devices参数的迁移。 -
若依赖
ifcfg-*文件,避免升级到完全移除兼容性层的版本(如 CentOS 8+)。
-
-
socket 通信优化:
-
对高性能网络场景(如多网卡服务器),优先选择 1.40+ 版本,其 netlink 处理性能更佳。
-
开发基于 NetworkManager 的应用时,使用 1.26+ 版本的异步 API 避免阻塞。
-
-
兼容性策略:
-
在混合环境(如同时管理 CentOS 7 和 8 服务器)中,统一使用
nmcli命令而非依赖配置文件格式。 -
对容器化环境,确保使用支持 CNI 或 bridge 网络的 NetworkManager 版本(如 1.32+)。
-
通过了解这些差异,可更高效地在不同 Linux 系统中部署和管理 NetworkManager,避免因版本特性不匹配导致的配置错误或功能缺失。
NetworkManager,Linux7系统中,一般建议停止该管理方式,用文件管理;Linux8以上操作系统统一将网络管理交给NetworkManager管理。
#开启 [root@localhost ~]# systemctl start NetworkManager #关闭 [root@localhost ~]# systemctl stop NetworkManager #关闭并开机不自启 [root@localhost ~]# systemctl disable --now NetworkManager #开启并开机自启 [root@localhost ~]# systemctl enable --now NetworkManager
2、命令行配置
2.1、ifconfig命令
查看及配置网卡参数(临时配置),不能查看基于配置文件的多IP地址的网络参数,默认不能查看到未启用的网卡列表
root用户可以使用该命令更改网卡参数,普通用户只能用户查看
语法:
ifconfig [接口] ifconfig 接口 [aftype] options | address ...
“[aftype]” 表示可选的地址类型参数,“options” 是可选用的选项,“|” 表示或者,“address ...” 代表可以跟一个或多个地址相关参数。即可以通过 “ifconfig” 对指定接口,依据地址类型和选项,设置或查看相关网络地址等信息。例如,“ifconfig eth0 up” 可启用名为 eth0 的网口;“ifconfig eth0 192.168.1.100 netmask 255.255.255.0” 可给 eth0 接口设置 IP 地址和子网掩码。
选项:
| 选项 | 作用 |
|---|---|
| -a | 查看所有网卡的配置信息,包括未启用网卡 |
| up | 启用网卡,ifconfig ens33 up,不会重新读取配置文件 |
| down | 停用网卡,ifconfig ens33 down |
案例:
临时配置网卡参数
ifconfig enss 192.168.115.136/24
注意:临时配置,重启网络服务、网卡启停、主机重启都将失效
2.2、ifup和ifdown
ifup ens33 #启用网卡,并读取配置文件 ifdown ens33 #停用网卡
子接口配置
-
基于物理网卡的逻辑接口
-
可以使系统基于一块网卡配置多个IP地址
ifconfig 网卡名:编号(上限999999999) IP地址/子网掩码的网络位长度 【临时配置】
总结与选择建议
| 需求场景 | 推荐工具 | 理由 |
|---|---|---|
| 静态网络配置(传统系统) | ifup/ifdown | 配置文件管理更方便,适合批量部署和长期维护。 |
| 临时网络调试或脚本快速配置 | ifconfig/ip | 命令简单直接,无需修改配置文件。 |
| 现代系统(支持 NetworkManager) | nmcli | 与系统网络服务无缝集成,支持动态网络切换(如 Wi-Fi、VPN)。 |
| 高性能或容器环境 | ip 命令 | 直接操作内核,性能更高,适合脚本化部署(如 Docker 网络配置)。 |
注意:
-
net-tools(含ifconfig)已逐渐被弃用,建议优先使用ip命令。 -
在同时存在
ifupdown和 NetworkManager 的系统中,可能需要禁用其中一个以避免冲突(如通过NetworkManager.conf设置managed=false)。
生成子接口配置文件【永久配置】,不能使用DHCP获得地址
(要创建一个关于子接口的配置文件,这个配置是永久性的,并且明确规定子接口不能通过动态主机配置协议(DHCP)来获取网络地址,即需要手动配置地址。例如,在网络设备配置中,为了特定的网络管理需求,对子接口进行固定的、长期有效的地址设置,避免因 DHCP 动态分配可能带来的地址变动等问题。)
cd /etc/sysconfig/network-scripts cp ifcfg-ens37 ifcfg-ens37:0 cat ifcfg-ens37:0 TYPE=Ethernet #BOOTPROTO=dhcp(动态主机配置协议,当设置为 “dhcp” 时,表示该网络接口将通过 DHCP 服务器自动获取 IP 地址、子网掩码、网关及 DNS 服务器等网络配置参数,无需手动设置具体的网络参数。如需手动配置必须注释掉或更改成静态主机配置协议) BOOTPROTO=static(更改后为静态) NAME=ens37:0( 通常表示名称的标识,“ens37:0” 是网络接口或其他设备的名称,其中 “ens37” 是基础的网络接口名称,“:0”用于进一步细分或标识该接口的特定子接口、虚拟接口等)。 DEVICE=ens37:0 #ONBOOT=no ONBOOT=yes(系统启动时该网络接口会自动启动并尝试连接网络) IPADDR=192.168.115.214(IP地址,此网段内唯一) PREFIX=24(子网掩码) ifdown ens37:0 && ifup ens37:0
-
避免使用子接口命名:如
ens37:0易导致维护问题,改用ip addr add 192.168.1.2/24 dev ens37直接配置 IP 别名。 -
优先使用 systemd-networkd:通过 MAC 地址匹配设备,搭配
NAME自定义名称,提升配置的健壮性和可读性。 -
保持配置文件风格统一:根据发行版默认的网络管理工具(如
network-manager、systemd-networkd)选择配置方式,避免混合使用新旧格式。
2.3、ip a[ddress]命令
查看网络参数,可以查看到未启用的网卡列表,能够查看基于配置文件实现的多IP地址配置后的网络参数
语法:
ip [ OPTIONS ] OBJECT { COMMAND | help }
“[ OPTIONS ]” 表示该命令可以携带一些可选参数,这些参数用于调整命令的具体行为;“OBJECT” 代表命令作用的对象,比如网络接口、路由等不同对象;“{ COMMAND | help }” 意味着对于选定的对象,可以执行具体的操作命令,或者输入 “help” 获取关于该对象相关操作的帮助信息。
选项:
| 选项 | 作用 |
|---|---|
| address | 查看设备IP地址 |
案例:
ip a
2.4、配置文件配置
-
/etc/sysconfig/network-scripts/ifcfg-网卡名
指的是 Linux 系统中用于配置网络接口的文件路径及文件名,其中 “网卡名” 实际代表具体的网卡设备名称,如 eth0 等。该文件包含了网卡的永久配置信息,比如 IP 地址、子网掩码、网关等设置。
-
永久配置,需要网卡重新读取配置文件
表明这些配置设定后会长期生效,但修改此文件后,需让网卡重新读取配置文件,新配置才能生效,一般可通过相关命令实现,像 “systemctl restart network” 等。
-
网卡启停操作
是指对网卡进行启动或停止的相关操作,在 Linux 系统中,可使用特定命令如 “ifup 网卡名” 启动网卡,“ifdown 网卡名” 停止网卡,这在网络调试、维护等场景中常用。
#启动服务 systemctl start network #停止服务 systemctl stop network #重启服务 systemctl restart network #使用命令行重新加载配置文件 ifup 网卡名 ifdown 网卡名 #使用命令行启停网卡,但是不加载配置文件 ifconfig 网卡名 up | down
2.4.1、单一IP地址配置
-
自动获得,必须在当前网络中存在DHCP服务器。
TYPE=Ethernet #网卡参数的类型,Ethernet:以太网 BOOTPROTO=dhcp #获得IP地址的方式,dhcp|static|none NAME=ens33 #网卡描述名称,可有可无 DEVICE=ens33 #网卡设备名称,必须与ifconfig看到的网卡名保持一致。不能书写不存在的网卡名 ONBOOT=yes #是否启用配置文件,yes|no
-
手动配置
TYPE=Ethernet #BOOTPROTO=dhcp(动态主机配置协议,当设置为 “dhcp” 时,表示该网络接口将通过 DHCP 服务器自动获取 IP 地址、子网掩码、网关及 DNS 服务器等网络配置参数,无需手动设置具体的网络参数。如需手动配置必须注释掉或更改成静态主机配置协议) BOOTPROTO=static(更改后为静态) NAME=ens33(别名,不重要) DEVICE=ens33(网卡设备名称,必须与ifconfig看到的网卡名保持一致。不能书写不存在的网卡名) ONBOOT=yes(系统启动时该网络接口会自动启动并尝试连接网络) IPADDR=192.168.115.150 (IP地址) PREFIX=24 (子网掩码长度或者使用NETMASK=255.255.255.0) GATEWAY=192.168.115.2 (默认网关,在同一系统下,不管几块网卡,建议配置一个默认网关。) DNS1=192.168.115.2(域名解析服务器地址,DNS1为dns主地址,还可以创建备用地址dns2。不建议在多网卡的情况下书写DNS,因为后启动的网卡会覆盖原有的DNS服务器地址。电脑有网卡 A 和网卡 B,先设置了基于网卡 A 的 DNS 地址,当网卡 B 后启动时,就会把之前基于网卡 A 设置的 DNS 地址替换掉,导致原本依赖该 DNS 设置的网络访问出现异常。)
总结建议
| 场景 | DEVICE 与 NAME 一致性 | 核心逻辑 |
|---|---|---|
传统 ifcfg-* 配置 | DEVICE 需等于内核设备名(无 NAME) | 依赖设备名直接匹配,名称必须与内核识别的接口名一致(如 ens37:0)。 |
| systemd-networkd 配置 | NAME 可自定义,无需与设备名一致 | 通过 MAC 地址等条件匹配设备,NAME 仅为友好标识,灵活不冲突。 |
| 子接口(旧版) | DEVICE 需等于子接口名 | 但强烈建议改用 VLAN 或 IP 别名,避免使用过时的子接口命名方式。 |
实验:手动配置ip地址
一、确认网络接口名称
-
查看可用网络接口
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:fb:97:c2 brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.30.131/24 brd 192.168.30.255 scope global dynamic noprefixroute ens160 valid_lft 1033sec preferred_lft 1033sec inet6 fe80::20c:29ff:fefb:97c2/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:fb:97:cc brd ff:ff:ff:ff:ff:ff altname enp19s0 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:6b:7c:3a brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
总结
命令 优势 劣势 适用场景 ip link show显示网络接口的物理和链路层状态(如接口是否启用、MAC 地址、MTU 等)。 不显示 IP 地址 接口状态(如 UP、DOWN。) MAC 地址(link/ether 后面的部分)。 MTU(最大传输单元) ip addr show显示网络接口的IP 地址配置(包括 IPv4 和 IPv6)。 输出较长 IP 地址(如 192.168.1.10/24)。 子网掩码(通过 CIDR 表示,如/24等价于255.255.255.0)。 广播地址(brd字段)。 IPv6 地址ifconfig显示或配置网络接口的综合信息(包括链路层和 IP 层)。 功能有限,逐渐被弃用 IP 地址和子网掩码(分开显示)。 MAC 地址( ether字段)。 接收 / 发送的数据包统计。-
常见接口名:
ens33、ens37、eth0等。 -
示例输出中找到活跃的接口(如
ens37: <BROADCAST,MULTICAST,UP,LOWER_UP>)。
-
二、配置静态 IP 地址(方法 2:编辑配置文件)
1、给新配网卡配置文件(目的把已有的网卡信息复制到新建网卡的空文件中,方便更改。)
[root@bogon network-scripts]# cp ifcfg-ens160 ifcfg-ens224 [root@bogon network-scripts]# ls ifcfg-有线连接_1 ifcfg-ens160 ifcfg-ens224
2. 修改网络连接配置
1. 编辑网络接口配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens37
-
将文件内容修改为:
[root@bogon network-scripts]# vim ifcfg-ens224 #BOOTPROTO=dhcp BOOTPROTO=static(改) DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=eui64 NAME=ens224(改) UUID=10114359-46f3-4211-9d6c-77354231e07e DEVICE=ens224(改) ONBOOT=yes(改) IPADDR=196.168.229.134(加) PREFIX=24(加) GATEWAY=196.168.229.1(加) DNS1=196.168.229.1(加)
2. 重启 NetworkManager 服务
systemctl restart NetworkManager
四、验证配置
1. 检查 IP 地址
[root@bogon network-scripts]# ip a(确定ip为所配的ip) 3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:fb:97:cc brd ff:ff:ff:ff:ff:ff altname enp19s0 inet 192.168.229.134/24 brd 192.168.229.255 scope global dynamic noprefixroute ens224 valid_lft 1745sec preferred_lft 1745sec inet6 fe80::c921:8934:7327:b51f/64 scope link noprefixroute valid_lft forever preferred_lft forever
-
确认输出包含配置的 IP 地址:192.168.229.134/24。
2. 检查路由表
路由表记录了网络数据包从源地址到目的地址的转发路径信息,通过检查路由表,可以确认网络连接是否正常,判断数据包能否正确路由到目标网络,排查网络故障,比如网络不通、延迟过高等问题,确保网络通信的顺畅进行。例如在一个企业网络中,网络管理员发现部分员工无法访问外网,就会检查路由表,查看是否存在错误的路由配置,导致数据包无法正确转发。
ip route [root@bogon network-scripts]# ip route default via 192.168.229.2 dev ens224 proto dhcp src 192.168.229.134 metric 101 192.168.30.0/24 dev ens160 proto kernel scope link src 192.168.30.131 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 192.168.229.0/24 dev ens224 proto kernel scope link src 192.168.229.134 metric 101
-
确认默认网关为:default via 192.168.229.2 dev ens224。
3. 测试网络连接
#ping -c 3 192.168.1.1 # 测试网关连通性 [root@bogon network-scripts]# ping -c 3 192.168.229.2 PING 192.168.229.2 (192.168.229.2) 56(84) bytes of data. 64 bytes from 192.168.229.2: icmp_seq=1 ttl=128 time=0.242 ms 64 bytes from 192.168.229.2: icmp_seq=2 ttl=128 time=0.345 ms 64 bytes from 192.168.229.2: icmp_seq=3 ttl=128 time=1.53 ms --- 192.168.229.2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2070ms rtt min/avg/max/mdev = 0.242/0.706/1.531/0.584 ms #ping -c 3 www.baidu.com # 测试外网连通性(需DNS正常) [root@bogon network-scripts]# ping -c 3 www.baidu.com PING www.a.shifen.com (220.181.111.1) 56(84) bytes of data. 64 bytes from 220.181.111.1 (220.181.111.1): icmp_seq=1 ttl=128 time=32.5 ms --- www.a.shifen.com ping statistics --- 3 packets transmitted, 1 received, 66.6667% packet loss, time 5061ms rtt min/avg/max/mdev = 32.528/32.528/32.528/0.000 ms
五、故障排除
1. DNS 解析失败
-
检查/etc/resolv.conf文件是否包含配置的 DNS 服务器:
cat /etc/resolv.conf
-
若未自动更新,可临时添加:
sudo vi /etc/resolv.conf # 添加以下内容 nameserver 192.168.1.1 nameserver 8.8.8.8
2. NetworkManager 服务状态
sudo systemctl status NetworkManager
-
若服务未运行,启动并启用:
sudo systemctl start NetworkManager sudo systemctl enable NetworkManager
3. 防火墙设置
-
临时关闭防火墙测试(不推荐长期使用):
sudo systemctl stop firewalld
-
或开放必要端口:
sudo firewall-cmd --permanent --add-service={dhcpv6-client,ssh} sudo firewall-cmd --reload
六、其他注意事项
-
避免 IP 冲突:确保配置的 IP 地址未被局域网内其他设备使用。
-
备份配置文件:修改前备份原始配置文件:
sudo cp /etc/sysconfig/network-scripts/ifcfg-ens37{,.bak} -
SELinux 设置:若网络异常,检查 SELinux 状态:
getenforce # 输出为 Enforcing 表示启用
-
临时禁用(不推荐长期使用):
sudo setenforce 0
-
2.4.2、多IP地址配置实验
[root@bogon ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 TYPE=Ethernet BOOTPROTO=static NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR1=192.168.229.10 PREFIX1=24 GATEWAY=192.168.229.1 DNS1=192.168.115.2 IPADDR2=192.168.229.20 PREFIX2=24 DNS2=192.168.115.3 DNS3=192.168.115.4
-
加载配置文件
systemctl restart network#或者ifdown ens33 && ifup ens33
-
验证参数
#查看IP地址 [root@bogon ~]# ip a 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:fb:97:c2 brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.229.10/24 brd 192.168.229.255 scope global noprefixroute ens160 valid_lft forever preferred_lft forever inet 192.168.229.20/24 brd 192.168.229.255 scope global secondary noprefixroute ens160 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fefb:97c2/64 scope link valid_lft forever preferred_lft forever #网关地址查看 [root@bogon ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.229.2 0.0.0.0 UG 100 0 0 ens224 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 192.168.229.0 0.0.0.0 255.255.255.0 U 100 0 0 ens224 192.168.229.0 0.0.0.0 255.255.255.0 U 101 0 0 ens160 192.168.229.0 0.0.0.0 255.255.255.0 U 101 0 0 ens160 [root@bogon ~]# #DNS地址 cat /etc/resolv.conf [root@bogon ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.229.2
测试网络连通
转到多ip网卡 [root@bogon ~]# ping -c 3 www.baidu.com PING www.a.shifen.com (220.181.111.232) 56(84) bytes of data. 64 bytes from 220.181.111.232 (220.181.111.232): icmp_seq=1 ttl=128 time=23.9 ms 64 bytes from 220.181.111.232 (220.181.111.232): icmp_seq=2 ttl=128 time=18.6 ms 64 bytes from 220.181.111.232 (220.181.111.232): icmp_seq=3 ttl=128 time=23.8 ms --- www.a.shifen.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 5044ms rtt min/avg/max/mdev = 18.616/22.082/23.867/2.451 ms
一块网卡设置子网卡和设置两块网卡的区别
在网络配置中,“一块网卡设置子网卡”(如 VLAN 子接口)和 “使用两块物理网卡” 是两种不同的方案,主要区别体现在以下几个方面:
一、物理层面
| 对比项 | 子网卡(如 VLAN) | 两块物理网卡 |
|---|---|---|
| 硬件数量 | 仅需 1 块物理网卡 | 需要 2 块物理网卡 |
| 带宽上限 | 共享物理网卡的总带宽(如 1Gbps) | 总带宽为各网卡之和(如 2×1Gbps) |
| 故障隔离 | 单网卡故障导致所有子网卡失效 | 单网卡故障仅影响对应网卡 |
二、网络架构
-
子网卡(VLAN)
-
原理:通过 VLAN(虚拟局域网)技术在一块物理网卡上划分多个逻辑接口,每个子接口属于不同的 VLAN ID。
-
场景:
-
同一物理网卡需要连接多个不同网段(如生产网、管理网)。
-
交换机端口已配置 Trunk 模式,允许携带多个 VLAN 标签。
-
-
配置示例
(Linux):
# 创建eth0的VLAN子接口(VLAN ID=10) ip link add link eth0 name eth0.10 type vlan id 10 ip addr add 192.168.10.10/24 dev eth0.10 ip link set eth0.10 up
-
两块物理网卡
-
原理:每个网卡独立工作,可连接不同的网络设备(如交换机、路由器)。
-
场景:
-
需要更高的总带宽(如聚合 2×1Gbps 为 2Gbps)。
-
实现网络隔离(如一块网卡连内网,一块连外网)。
-
配置 HA 高可用(如主备模式)。
-
-
配置示例
(Linux):
# 配置eth0 ip addr add 192.168.1.10/24 dev eth0 ip link set eth0 up # 配置eth1 ip addr add 192.168.2.10/24 dev eth1 ip link set eth1 up
三、性能与可靠性
| 对比项 | 子网卡(VLAN) | 两块物理网卡 |
|---|---|---|
| 并发吞吐量 | 受限于单网卡带宽,子接口竞争资源 | 可并行传输,总带宽更高 |
| 单点故障 | 物理网卡故障导致所有子接口失效 | 单网卡故障仅影响对应接口 |
| 负载均衡 | 需依赖上层设备(如交换机) | 可通过 Bonding 实现跨网卡负载均衡 |
四、配置复杂度
| 对比项 | 子网卡(VLAN) | 两块物理网卡 |
|---|---|---|
| 网络设备配置 | 需要交换机支持 VLAN Trunk 模式 | 交换机只需配置 Access 端口 |
| IP 规划 | 需为每个子接口分配不同网段 IP | 可相同或不同网段(取决于用途) |
| 故障排查 | VLAN 标签配置错误可能导致不通 | 物理连接问题更直观 |
五、典型应用场景
-
子网卡(VLAN)适用场景
-
服务器需要连接多个不同 VLAN(如 Web 服务器同时服务内网和 DMZ 区)。
-
网络设备端口有限,需通过 VLAN 复用物理链路。
-
虚拟化环境中,宿主机通过单个网卡为多个虚拟机提供不同 VLAN 网络。
-
两块物理网卡适用场景
-
高带宽需求场景(如数据中心服务器需 10Gbps 以上总带宽)。
-
网络隔离(如内外网分离、安全域隔离)。
-
高可用配置(如主备模式保障网络冗余)。
六、如何选择?
-
考虑带宽需求:
-
若总带宽需求 ≤ 单网卡上限,优先考虑子网卡(如 VLAN)。
-
若需更高带宽,使用多块网卡并配置 Bonding。
-
-
考虑可靠性:
-
关键业务建议使用多网卡 + Bonding(如 mode=1 主备模式)。
-
非关键业务可使用单网卡 + 子网卡降低成本。
-
-
考虑网络架构:
-
若交换机已配置 VLAN,子网卡是更简单的方案。
-
若需连接不同类型网络设备(如路由器、防火墙),使用多网卡。
-
总结
| 方案 | 优势 | 劣势 |
|---|---|---|
| 子网卡(VLAN) | 节省物理网卡、配置简单、适合 VLAN 环境 | 单网卡故障影响所有子接口、带宽受限 |
| 多物理网卡 | 高带宽、高可靠、灵活隔离网络 | 成本高、配置复杂、占用更多交换机端口 |
根据实际需求(带宽、可靠性、成本)选择合适的方案,也可结合使用(如多网卡 + 子网卡)以兼顾性能与灵活性。if在计算机领域,“if” 是一个非常常见的关键词,通常与条件判断相关。以下是关于 “if” 的常见用法和解析:
3、路由配置
route命令
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。
语法:
route [选项] [参数]
选项:
| 选项 | 描述 |
|---|---|
| -A | 设置地址类型; |
| -C | 打印将Linux核心的路由缓存; |
| -v | 详细信息模式; |
| -n | 直接显示数字形式的IP地址; |
| -e | netstat格式显示路由表; |
| -net | 到一个网络的路由表; |
| -host | 到一个主机的路由表。 |
参数:
| 参数 | 描述 |
|---|---|
| add | 增加指定的路由记录; |
| del | 删除指定的路由记录; |
| target | 目的网络或目的主机; |
| gw | 设置默认网关; |
| mss | 设置TCP的最大区块长度(MSS),单位MB; |
| window | 指定通过路由表的TCP连接的TCP窗口大小; |
| dev | 路由记录所表示的网络接口。 |
二、网络连接查看
1、netstat
作用
-
查看本地服务的网络监听状态
-
查看客户端连接到本地服务的连接状态
语法
netstat 选项 (-anptu) -anptu固定搭配:a表示所有链接,n表示以数字形式显示地址和端口,p表示显示本身协议,t显示tcp协议,u显示UDP协议。
[root@bogon ~]# netstat -anptu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1092/cupsd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1138/sshd: /usr/sbi tcp 0 0 192.168.229.135:51552 104.18.130.116:443 ESTABLISHED 1705/packagekitd tcp 0 0 192.168.229.135:54844 210.28.130.3:80 ESTABLISHED 1705/packagekitd tcp 0 0 192.168.229.135:22 192.168.229.1:57426 ESTABLISHED 7100/sshd: root [pr tcp 0 0 192.168.229.135:44972 172.65.90.33:80 ESTABLISHED 1705/packagekitd tcp 0 0 192.168.229.135:59032 202.232.140.10:443 ESTABLISHED 1705/packagekitd tcp6 0 0 :::22 :::* LISTEN 1138/sshd: /usr/sbi tcp6 0 0 ::1:631 :::* LISTEN 1092/cupsd udp 0 0 0.0.0.0:59008 0.0.0.0:* 859/avahi-daemon: r udp 0 0 0.0.0.0:5353 0.0.0.0:* 859/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 920/chronyd udp6 0 0 :::33918 :::* 859/avahi-daemon: r udp6 0 0 :::5353 :::* 859/avahi-daemon: r udp6 0 0 ::1:323 :::* 920/chronyd
选项
-n, --numeric 显示数字形式地址而不是去解析主机、端口或用户名。 -a, --all 显示所有的监听或连接状态 -p, --program 显示连接所属进程的PID和名称。 -t,--tcp 显示TCP连接 -u,--udp 显示UDP连接 -l 查看监听
2、ss
作用
-
查看本地服务的网络监听状态
-
查看客户端连接到本地服务的连接状态
语法
ss 选项 (-anptuli)
选项
-n, --numeric 显示数字形式地址而不是去解析主机、端口或用户名。 -a, --all 显示所有的监听或连接状态 -p, --program 显示连接所属进程的PID和名称。 -t,--tcp 显示TCP连接 -u,--udp 显示UDP连接 -i,--info 查看客户端连接到本地的状态 -l 查看监听
开启Linux服务的路由功能
vim /etc/sysctl.conf 内核参数修改配置文件 添加 net.ipv4.ip_forward = 1 sysctl -p 加载配置
案例:
[root@bogon ~]# ss -anptuil
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:59008 0.0.0.0:* users:(("avahi-daemon",pid=859,fd=14))
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("avahi-daemon",pid=859,fd=12))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=920,fd=5))
udp UNCONN 0 0 [::]:33918 [::]:* users:(("avahi-daemon",pid=859,fd=15))
udp UNCONN 0 0 [::]:5353 [::]:* users:(("avahi-daemon",pid=859,fd=13))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=920,fd=6))
tcp LISTEN 0 4096 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=1092,fd=7))
cubic cwnd:10
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1138,fd=3))
cubic cwnd:10
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1138,fd=4))
cubic cwnd:10
tcp LISTEN 0 4096 [::1]:631 [::]:* users:(("cupsd",pid=1092,fd=6))
cubic cwnd:10
3、bond绑定
将多个物理网卡进行排列组合,形成逻辑网卡,网卡的高可用
3.1、绑定模式
-
mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地 网卡相连的交换机设备上进行端口聚合来支持绑定技术。
-
mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
-
mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。
3.2、绑定案例
服务器有两块网卡 ens33和ens36
ens34操作
TYPE=ethernet BOOTPROTO=none NAME=ens34 DEVICE=ens34 ONBOOT=yes MASTER=bond0 SLAVE=yes scripts]# vim ifcfg-ens224 TYPE=ethernet BOOTPROTO=static NAME=ens160 DEVICE=ens160 MASTER=bond0 ONBOOT=yes
ens37操作
TYPE=ethernet BOOTPROTO=none NAME=ens37 DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes scripts]# vim ifcfg-ens224 TYPE=ethernet BOOTPROTO=static NAME=ens224 DEVICE=ens224 MASTER=bond0 ONBOOT=yes
bond0操作
TYPE=ethernet BOOTPROTO=none NAME=bond0 DEVICE=bond0 ONBOOT=yes IPADDR=192.168.1.1 PREFIX=24 GATEWAY=192.168.1.254 DNS1=192.168.1.254 [root@localhost network-scripts]# vim ifcfg-ensbond0 TYPE=ethernet BOOTPROTO=static NAME=bond0 DEVICE=bond0 ONBOOT=yes IPADDR=192.168.229.10 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
添加bond配置文件
vim /etc/modprobe.d/bond.conf alias bond0 bonding options bonding mode=6 miimon=200
关闭网络图形化服务
systemctl stop NetworkManager
重启网络服务
ifup ens34 && ifup ens37 && ifup bond0 systemctl restart network #重启会出现启动失败,但是bond绑定是OK的!!!
实验步骤:
# 创建 bond 连接配置 nmcli connection add type bond con-name bond0 ifname bond0 \ bond.options "mode=balance-alb,miimon=100" # 添加网卡到 bond nmcli connection add type ethernet con-name bond0-port1 ifname eth0 master bond0 nmcli connection add type ethernet con-name bond0-port2 ifname eth1 master bond0 # 设置 IP 地址 nmcli connection modify bond0 ipv4.addresses "192.168.1.10/24" nmcli connection modify bond0 ipv4.gateway "192.168.1.1" nmcli connection modify bond0 ipv4.method manual # 激活连接 nmcli connection up bond0
具体操作:[root@localhost network-scripts]# nmcli connection add type bond con-name bond0 ifname bond0 \ > bond.options "mode=balance-alb,miimon=100" 连接 "bond0" (4c7e7dd9-4e9a-4738-a623-5d14a0c091bc) 已成功添加。 [root@localhost network-scripts]# nmcli connection add type ethernet con-name bond0-port1 ifname ens160 master bond0 连接 "bond0-port1" (758fe57c-f874-4e1d-8832-6eb264174371) 已成功添加。 [root@localhost network-scripts]# nmcli connection add type ethernet con-name bond0-port1 ifname ens224 master bond0 警告:存在其他 1 条带有名称 "bond0-port1" 的连接。通过其 uuid "13b80b26-aca0-43f6-946f-c7f73e3d26f6" 引用连接。 连接 "bond0-port1" (13b80b26-aca0-43f6-946f-c7f73e3d26f6) 已成功添加。 [root@localhost network-scripts]# nmcli connection modify bond0 ipv4.addresses "192.168.229.110/24" [root@localhost network-scripts]# nmcli connection modify bond0 ipv4.gateway 192.168.229.1 [root@localhost network-scripts]# nmcli connection modify bond0 ipv4.method manual [root@localhost network-scripts]# nmcli connection up bond0 连接已成功激活(master waiting for slaves)(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5) [root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: adaptive load balancing Primary Slave: None Currently Active Slave: None MII Status: down MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 [root@localhost network-scripts]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:49:ee:44 brd ff:ff:ff:ff:ff:ff altname enp3s0 3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:49:ee:4e brd ff:ff:ff:ff:ff:ff altname enp19s0 inet 192.168.229.136/24 brd 192.168.229.255 scope global dynamic noprefixroute ens224 valid_lft 1794sec preferred_lft 1794sec inet6 fe80::a6bb:e1f0:4d77:bb77/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:6b:7c:3a brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 5: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 3a:11:c7:e3:25:54 brd ff:ff:ff:ff:ff:ff inet 192.168.229.110/24 brd 192.168.229.255 scope global noprefixroute bond0 valid_lft forever preferred_lft forever
4、Linux下的抓包工具
tcpdump
语法
tcpdump -i 网卡名
选项
-c 当 收到多少个报文后退出 -i 监听 interface. 如果 不指定 接口, tcpdump 在 系统 的 接口 清单 中,寻找 号码最小, 已经 配置好的 接口 (loopback 除外). 选中的时候会中断连接. -n 不要把地址转换成 名字 (指的是 主机地址, 端口号等) -t 禁止 显示 时戳标志. -v (稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报 中的 生存周期 和服务类型. -e 显示 链路层报头
额外参数
dst port portNumber 抓取目标端口为portNumber的报文 port portNumber 抓取端口为portNumber的报文 src port portNumber 抓取源端口为portNumber的报文
案例
抓取客户端访问本机80号端口的1000个报文
tcpdump -tn dst port 80 -c 1000 -i bond0
Wireshark
5、web压力测试工具
ab -c 100 -n 2000 http://192.168.1.254/
6、路由追踪命令
traceroute 目标地址或域名
7、常用命令及简写命令使用举例
status 是 general 的默认项,可以省略不写。
# 显示 NetworkManager 是否接管网络设置 nmcli networking # 显示NetworkManager状态 nmcli general status nmcli g # 显示所有连接 nmcli connection show nmcli c s # 只显示当前活动连接,如下所示添加 -a, --active nmcli connection show --active nmcli c s -a # 显示由NetworkManager识别到的设备及其状态 nmcli device status nmcli d # 使用nmcli工具启动和停止网络接口,在root权限下执行如下命令(enp3s0为接口名称,需要根据实际情况进行更改) sudo nmcli connection up id enp3s0 sudo nmcli device disconnect enp3s0
8、常用操作对象及命令
nmcli networking
网络连接状态(CONNECTIVITY)共有五种:full、limited(连网,但无法上网)、portal(连网,但需要登陆认证后才能上网)、none(没连网)和 unknown。
networking 可以简写为 n、ne、net、netw
# 显示 NetworkManager 是否接管网络设置 nmcli networking # 查看网络连接状态 nmcli n connectivity # 开启网络连接 nmcli n on # 关闭网络连接 nmcli n off
nmcli general
-
STATE 显示网络是否连接;
-
CONNECTIVITY 与前面介绍的 nmcli n c 相同;
-
WIFI-HW 表示 WIFI 硬件开关、WIFI 表示 WIFI 软件开关;
-
WWAN-HW 表示 WWAN 硬件开关、WWAN 表示 WWAN 软件开关。
general 可以简写为 g、ge、gen、gene
# 显示系统网络状态 nmcli general status nmcli g # 显示主机名 nmcli g hostname nmcli g h # 更改主机名,NEW_HOST_NAME 是你设置的新主机名。主机名存放在 /etc/hostname 文件中。 # 修改主机名后,需要重启 NetworkManager。 nmcli g hostname newHostName nmcli g h NEW_HOST_NAME # 显示或修改NetworkManager的访问控制权限。 nmcli general permissions nmcli g p
nmcli connection
connection 可以简写为 c、co、con、conn
# 显示所有网络连接的信息 nmcli connection show # 可以显示每个网络的uuid # nmcli connection show 有一个 --active 参数,可以只显示当前启动的连接 nmcli c s --active nmcli c s -a # 因为 show 后面有参数项,所以此时的 show 不能省 # 显示某一特定连接的详细信息(以 接口为ens33 为例) nmcli c s ens33 # 在ubuntu 18.04上这个命令无效,需要把ens33换成ens33的uuid # 启动指定连接,如果 ens33 本来就出于连接状态,那此命令会重启 ens33 nmcli c up ens33 # 关闭指定连接,关闭连接后,执行"nmcli c"命令,DEVICE 项将显示为 -- nmcli c down ens33 # 删除指定连接(ens33) nmcli c delete ens33 nmcli c de ens33 # delete 不可简写为 d,否则与 down 冲突,但可以简写为 de
modify 修改连接
例如:
nmcli c modify ens33 [ + | - ]选项 选项值 nmcli c m ens33 [ + | - ]选项 选项值
修改连接常用示例
注意:必须先修改 ipv4.address,然后才能修改 ipv4.method!
nmcli c m ens33 ipv4.address 192.168.80.10/24 # 修改 IP 地址和子网掩码 nmcli c m ens33 +ipv4.addresses 192.168.80.100/24 # 添加一个 IP 地址和子网掩码 nmcli c m ens33 ipv4.method manual # 修改为静态配置,默认是 auto nmcli c m ens33 ipv4.gateway 192.168.80.2 # 修改默认网关 nmcli c m ens33 ipv4.dns 192.168.80.2 # 修改 DNS nmcli c m ens33 +ipv4.dns 223.5.5.5 # 添加一个 DNS nmcli c m ens33 ipv6.method ignored # 将 IPv6 禁用,针对CentOS8,三个可选项:disabled、auto、manual nmcli c m ens33 connection.autoconnect yes # 开机启动
-
用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例)
nmcli c m ens33 ipv4.method ""
-
修改链接选项有很多,详细信息可以通过以下命令查看。可以主要看里面 connection setting 和 ipv4 setting 部分。
man 5 nm-settings-nmcli
add 新增连接
nmcli c add tyep 连接类型 选项 选项值 nmcli c a tyep 连接类型 选项 选项值
type 为必选项,我们通常用到的是 802-3-ethernet(别名 ethernet)。
选项与前面介绍的“修改连接”中的选项一样,其中重要的几个选项:
-
connection.id(别名 con-name):连接名;
-
connection.interface-name(别名 ifname):设备名;
-
connection.autoconnect(别名 autoconnect):是否开机自启,其值只能是 yes 或 no,默认 yes。
示例:
添加一个新的以太网连接配置:
nmcli c a type ethernet con-name ens36 ifname ens36 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
注意:
如果网络接口名称或连接名称已经存在,则可能需要先删除现有的连接或更改名称以避免冲突
在修改网络配置后,你可能需要重新启动 NetworkManager 或重启系统来应用更改
-
nmcli:这是 NetworkManager 的命令行界面工具。
-
c a:这是 connection add 的缩写,表示添加一个新的连接。
-
type ethernet:指定连接的类型为以太网。
-
con-name ens36:设置连接的名称(或配置文件名)为 ens36。
-
ifname ens36:指定这个连接将使用的网络接口名称为 ens36。
-
ipv4.addresses 192.168.1.100/24:设置静态 IP 地址为 192.168.1.100,子网掩码为 255.255.255.0(等同于 /24)。
-
ipv4.gateway 192.168.1.1:设置默认网关为 192.168.1.1。
-
ipv4.dns “8.8.8.8 8.8.4.4”:设置 DNS 服务器为 8.8.8.8 和 8.8.4.4。
-
ipv4.method manual:指定 IPv4 配置方法为手动(即静态 IP)。
上方的命令可以拆分为
nmcli c a type ethernet con-name ens36 ifname ens36 # 为刚刚创建的连接配置 IPv4 地址。 nmcli c mod ens36 ipv4.addresses 192.168.1.100/24 # 设置 DNS 服务器地址。 nmcli c mod ens36 ipv4.dns "8.8.8.8 8.8.4.4" # 指定 IPv4 配置方法为手动,这意味着不会使用 DHCP 来获取 IP 地址。 nmcli c mod ens36 ipv4.method manual # 最后,激活连接以使配置生效。 nmcli c up ens36
重载配置文件
建议使用 nmcli 命令来设置网络参数,不要直接修改此文件。
# 重载所有连接的配置文件 nmcli c reload nmcli c r # 重载某一指定连接的配置文件 nmcli c load ifcfg-ens33 nmcli c l ifcfg-ens33
注意:
网络配置文件默认保存在 /etc/sysconfig/network-scripts/ 路径下,如果配置文件在其它位置,则需要填写完整路径。
网络配置文件的命名方式就是ifcfg-连接名,例如 ens33 的配置文件名为ifcfg-ens33。
rocky9的话,配置文件路径变了,在 /etc/NetworkManager/SystemConnection/
网络配置文件说明
TYPE=Ethernet # 以太网 PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none # 静态配置,等同于 ipv4.method manual DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no NAME=ens33 # 连接名 UUID=16862343-b55e-4248-b05d-a3ea662a84a4 DEVICE=ens33 # 设备名 ONBOOT=yes # 开机自启 IPADDR=192.168.80.10 # IP 地址 IPADDR1=192.168.80.100 PREFIX=24 # 子网掩码 PREFIX1=24 GATEWAY=192.168.80.2 # 网关 DNS1=192.168.80.2 # DNS1 DNS2=114.114.114.114 # DNS2
nmcli device
device 可以简写为 d、de、dev
# 显示所有网络接口设备的状态 nmcli device status nmcli d # 显示所有设备的详细信息 nmcli d show nmcli d sh # show 不可简写为 s,否则与 status 冲突,但可以简写为 sh # 显示某一特定设备的详细信息 nmcli d sh ens33 # 连接设备,如果 ens33 本来就处于连接状态,那此命令会重启 ens33,并且触发重新生成 ifcfg文件 nmcli d connect ens33 nmcli d c ens33 # 断开设备 nmcli d disconnect ens33 nmcli d d ens33 # 更新设备信息(只有在设备处于连接状态,才可以更新设备;更新设备也会重启连接) nmcli d reapply ens33 nmcli d r ens33 # 显示附近的无线网络设备的详细信息。 nmcli device wifi list # 连接到指定的无线网络,需要指定SSID和密码。 nmcli device wifi connect "SSID" password "password" # 断开当前的无线网络连接。 nmcli device wifi disconnect
[root@bogon ~]# nmcli connection show NAME UUID TYPE DEVICE ens160 5a74be44-f0be-314f-95e2-e83edcfbdda5 ethernet ens160 lo b585f649-1110-42e6-a9ea-b972f3e8a687 loopback lo
四、网络配置方法
方法一:通过修改 NetworkManager 的 keyfile 格式配置文件
获取网络接口信息
编辑配置文件:Rocky 9 的网络配置文件默认存储在/etc/NetworkManager/system-connections/目录下,文件格式为 keyfile 格式。使用vi等文本编开对应的网络接口配置文件,如ens33.nmconnection135.
修改配置参数:
-
设置静态 IP 地址:将(ipv4)下的method=auto改为method=manual,并添加address参数来指定 IP 地址、子网掩码和网关,例如address=192.168.1.10/24,192.168.1.2。
-
设置 DNS 服务器:添加dns参数来指定 DNS 服务器地址,如dns=8.8.8.8;114.114.114.114,可以根据需要填写多个 DNS 服务器地址,用分号分隔。
加载并激活配置:
-
加载配置文件:使用nmcli connection load /etc/NetworkManager/system-connections/ens33.nmconnection命令加载配置文件13.
-
激活网卡:使用nmcli connection up /etc/NetworkManager/system-connections/ens33.nmconnection命令激活网卡,使配置生效.
配置字段解析
[connection]部分
配置字段解析:
-
id:用于标识该网络连接的名称,可自定义,方便用户识别和管理不同的网络连接,通常与网络接口名称相关.
-
uuid:通用唯一识别码,由系统自动生成,用于在NetworkManager中唯一标识该网络连接配置,一般无需手动修改.
-
type:指定网络连接的类型,常见的值有“ethernet”表示以太网连接,“wifi”表示无线网络连接等,根据实际网络设备和连接方式进行选择.
-
autoconnect-priority:设置网络连接的自动连接优先级,数值越小优先级越高,-999表示较低的优先级。可根据需要调整该值来确定多个网络连接的顺序,以便在系统启动时优先连接重要的网络.
-
interface-name:必须与实际的网络接口设备名称一致,用于将网络连接配置与对应的物理网络接口关联起来,如“ens33”等.
配置案例:
#root@bogon ~]# ip a 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:e1:fc:76 brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.229.135/24 brd 192.168.229.255 scope global dynamic noprefixroute ens160 #[root@bogon ~]# cd /etc/NetworkManager/system-connections/ #[root@bogon system-connections]# vim ens160.nmconnection [connection] id=ens160 uuid=5a74be44-f0be-314f-95e2-e83edcfbdda5 type=ethernet autoconnect-priority=-999 interface-name=ens160 timestamp=1748354058 [ethernet] [ipv4] method=manual address=192.168.229.135/24,192.168.229.2 dns=192.168.229.2;8.8.8.8 [ipv6] addr-gen-mode=eui64 method=auto #[root@bogon system-connections]# nmcli connection load /etc/NetworkManager/system-connections/ens160.nmconnection #[root@bogon system-connections]# nmcli connection up /etc/NetworkManager/system-connections/ens160.nmconnection 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4) #[root@bogon system-connections]# ip a 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:e1:fc:76 brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.229.135/24 brd 192.168.229.255 scope global noprefixroute ens160 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fee1:fc76/64 scope link noprefixroute valid_lft forever preferred_lft forever
[ethernet]部分
配置字段解析:通常无需手动添加额外参数,默认即可正常工作。若有特殊需求,如设置以太网的双工模式等,可以在此添加相应参数,如“duplex-full”表示全双工模式。
配置案例:
(ethernet) duplex-full
[ipv4]部分
配置字段解析:
-
method:获取IP地址的方式,常见的值有“auto”表示自动获取IP地址,通常通过DHCP等方式从网络中的DHCP服务器获取IP地址、子网掩码、网关等网络配置信息;“manual”表示手动配置静态IP地址,需要手动指定IP地址、子网掩码、网关和DNS等信息.
-
address:当method为manual时,用于指定静态IP地址和子网掩码,格式为“IP地址/子网掩码长度”,还可以在后面添加网关地址,用逗号分隔,如“192.168.1.10/24,192.168.1.1”.
-
netmask:子网掩码,也可以在address参数中统一配置,若单独配置则需按照子网掩码的格式填写,如“255.255.255.0”.
-
gateway:网关地址,用于指定网络数据包的转发地址,需与所在网络环境的网关配置一致.
-
dns:指定DNS服务器地址,多个DNS服务器之间用分号分隔,如“8.8.8.8;114.114.114.114”.
-
route:可用于添加静态路由,格式为“网段,网关”,可以添加多条route来配置多个静态路由,例如“route1=10.1.0.0/16,192.168.1.2 route2=10.2.0.0/16,192.168.1.2”.
配置案例:
(ipv4) method=manual address=192.168.1.3/24,192.168.1.1 netmask=255.255.255.0 gateway=192.168.1.1 dns=8.8.8.8;114.114.114.114 route1=10.1.0.0/16,192.168.1.1 route2=10.2.0.0/16,192.168.1.1
7565

被折叠的 条评论
为什么被折叠?



