Linux系统网络管理全

目录

一、网络参数配置

1、图形化配置

核心功能

典型应用场景

不同系统版本中的异同(了解)

2、命令行配置

2.1、ifconfig命令

2.2、ifup和ifdown

2.3、ip a[ddress]命令

2.4、配置文件配置

2.4.1、单一IP地址配置

实验:手动配置ip地址

2.4.2、多IP地址配置实验

一块网卡设置子网卡和设置两块网卡的区别

3、路由配置

route命令

二、网络连接查看

1、netstat

2、ss

3、bond绑定

3.1、绑定模式

3.2、绑定案例

实验步骤:

4、Linux下的抓包工具

tcpdump

Wireshark

5、web压力测试工具

6、路由追踪命令

7、常用命令及简写命令使用举例

8、常用操作对象及命令

nmcli networking

nmcli general

nmcli connection

modify 修改连接

add 新增连接

重载配置文件

网络配置文件说明

nmcli device

四、网络配置方法

方法一:通过修改 NetworkManager 的 keyfile 格式配置文件

配置字段解析

[connection]部分

[ethernet]部分

[ipv4]部分


一、网络参数配置

1、图形化配置

NetworkManager 是 Linux 系统中用于管理网络连接的守护进程和工具集,旨在简化网络配置、自动处理网络连接(如 Wi-Fi、有线网络、VPN 等),并提供用户友好的网络状态监控和切换功能。它广泛应用于桌面环境(如 GNOME、KDE)和服务器环境,是现代 Linux 发行版的标配组件之一。

核心功能
  1. 网络连接管理

    • 自动检测网络接口(如以太网、Wi-Fi、蓝牙)并管理其连接状态。

    • 支持动态 IP(DHCP)和静态 IP 配置,以及 Wi-Fi 的自动扫描和连接。

    • 保存和切换多个网络配置文件(如不同 Wi-Fi 热点的认证信息)。

  2. VPN 支持

    • 集成对多种 VPN 协议的支持(如 OpenVPN、WireGuard、PPPoe 等),可通过图形界面或命令行配置。

  3. 网络状态监控

    • 提供系统托盘图标(桌面环境中)或命令行工具(如 nmcli)显示当前网络连接状态、IP 地址、信号强度等信息。

  4. 脚本扩展

    • 支持通过脚本(/etc/NetworkManager/dispatcher.d/)在网络状态变化时自动执行自定义操作(如防火墙规则更新)。

  5. 命令行工具

    • nmcli:用于管理网络连接的命令行接口,适合服务器环境或无图形界面场景。

    • nmtui:基于文本的交互式界面,用于简单的网络配置。

典型应用场景
  • 桌面用户:通过图形界面轻松切换 Wi-Fi 网络、配置 VPN、查看流量统计。

  • 服务器管理员:使用 nmcli 命令行工具批量管理网络接口,或通过 NetworkManager.conf 配置文件定义静态网络参数。

  • 移动设备:在笔记本电脑或平板上自动处理网络切换(如从 Wi-Fi 切换到有线网络),优化电池续航。

不同系统版本中的异同(了解)

在不同 Linux 系统版本中,NetworkManager 的核心功能保持一致,但在版本迭代、依赖组件、配置方式及兼容性上存在差异。以下是针对不同系统版本(如基于 systemd 的现代发行版、使用 NetworkManager 不同版本的系统)的详细对比,特别关注与 socky(可能是 NetworkManager 的 socket 通信机制或特定版本特性)相关的差异:

1. 版本迭代与系统支持

主流版本差异

Linux 发行版默认 NetworkManager 版本特性差异
Ubuntu 20.04 LTS1.22.x支持 nmcli 的基本功能,默认使用 dnsmasq 作为 DNS 解析器,通过 dbus 与应用通信。
Ubuntu 22.04 LTS1.36.x引入对 WireGuard VPN 的原生支持,优化了网络连接切换逻辑,支持 resolvectl 替代 dnsmasq
Fedora 37+1.42.x强化了对 NetworkPolicy(Kubernetes 网络策略)的支持,改进了 nmcli 的 VPN 配置命令。
CentOS/RHEL 71.12.x依赖传统 ifcfg-* 配置文件兼容性层,需手动迁移至 NetworkManager 原生配置(如 connection.interface-name)。例如原本在 “ifcfg-” 文件中配置网络接口相关信息,现在要按 NetworkManager 原生配置的要求,将这些信息重新配置到 “connection.interface-name” 所对应的配置项中。
CentOS/RHEL 8/91.30.x/1.40.x移除 ifcfg-* 支持,强制使用 nmclinmtui 配置,引入 nmstate 作为配置抽象层。例如,以往通过修改 “ifcfg-” 文件来配置网络,现在要改为用 “nmcli” 命令如 “nmcli connection add con-name myconn type ethernet ifname eth0” 添加网络连接,或者使用 “nmtui” 的交互界面来配置;而 “nmstate” 则可以在更高层面统一管理这些配置操作,比如通过编写配置文件经 “nmstatectl” 工具来应用配置
openSUSE Leap 15.41.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.serviceNetworkManager-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. 版本升级考量

    • 从旧版(如 1.12.x)升级到新版(如 1.40.x)时,需注意配置文件格式变化,尤其是 unmanaged-devices 参数的迁移。

    • 若依赖 ifcfg-* 文件,避免升级到完全移除兼容性层的版本(如 CentOS 8+)。

  2. socket 通信优化

    • 对高性能网络场景(如多网卡服务器),优先选择 1.40+ 版本,其 netlink 处理性能更佳。

    • 开发基于 NetworkManager 的应用时,使用 1.26+ 版本的异步 API 避免阻塞。

  3. 兼容性策略

    • 在混合环境(如同时管理 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

  1. 避免使用子接口命名:如 ens37:0 易导致维护问题,改用 ip addr add 192.168.1.2/24 dev ens37 直接配置 IP 别名。

  2. 优先使用 systemd-networkd:通过 MAC 地址匹配设备,搭配 NAME 自定义名称,提升配置的健壮性和可读性。

  3. 保持配置文件风格统一:根据发行版默认的网络管理工具(如 network-managersystemd-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 设置的网络访问出现异常。)
​

总结建议

场景DEVICENAME 一致性核心逻辑
传统 ifcfg-* 配置DEVICE 需等于内核设备名(无 NAME依赖设备名直接匹配,名称必须与内核识别的接口名一致(如 ens37:0)。
systemd-networkd 配置NAME 可自定义,无需与设备名一致通过 MAC 地址等条件匹配设备,NAME 仅为友好标识,灵活不冲突。
子接口(旧版)DEVICE 需等于子接口名但强烈建议改用 VLAN 或 IP 别名,避免使用过时的子接口命名方式。
实验:手动配置ip地址

一、确认网络接口名称

  1. 查看可用网络接口

    [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 字段)。 接收 / 发送的数据包统计。
    • 常见接口名:ens33ens37eth0 等。

    • 示例输出中找到活跃的接口(如 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

六、其他注意事项

  1. 避免 IP 冲突:确保配置的 IP 地址未被局域网内其他设备使用。

  2. 备份配置文件:修改前备份原始配置文件:

    sudo cp /etc/sysconfig/network-scripts/ifcfg-ens37{,.bak}
  3. 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)
故障隔离单网卡故障导致所有子网卡失效单网卡故障仅影响对应网卡

二、网络架构

  1. 子网卡(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
  1. 两块物理网卡

  • 原理:每个网卡独立工作,可连接不同的网络设备(如交换机、路由器)。

  • 场景:

    • 需要更高的总带宽(如聚合 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 标签配置错误可能导致不通物理连接问题更直观

五、典型应用场景

  1. 子网卡(VLAN)适用场景

  • 服务器需要连接多个不同 VLAN(如 Web 服务器同时服务内网和 DMZ 区)。

  • 网络设备端口有限,需通过 VLAN 复用物理链路。

  • 虚拟化环境中,宿主机通过单个网卡为多个虚拟机提供不同 VLAN 网络。

  1. 两块物理网卡适用场景

  • 高带宽需求场景(如数据中心服务器需 10Gbps 以上总带宽)。

  • 网络隔离(如内外网分离、安全域隔离)。

  • 高可用配置(如主备模式保障网络冗余)。

六、如何选择?

  1. 考虑带宽需求

    • 若总带宽需求 ≤ 单网卡上限,优先考虑子网卡(如 VLAN)。

    • 若需更高带宽,使用多块网卡并配置 Bonding。

  2. 考虑可靠性

    • 关键业务建议使用多网卡 + Bonding(如 mode=1 主备模式)。

    • 非关键业务可使用单网卡 + 子网卡降低成本。

  3. 考虑网络架构

    • 若交换机已配置 VLAN,子网卡是更简单的方案。

    • 若需连接不同类型网络设备(如路由器、防火墙),使用多网卡。

总结

方案优势劣势
子网卡(VLAN)节省物理网卡、配置简单、适合 VLAN 环境单网卡故障影响所有子接口、带宽受限
多物理网卡高带宽、高可靠、灵活隔离网络成本高、配置复杂、占用更多交换机端口

根据实际需求(带宽、可靠性、成本)选择合适的方案,也可结合使用(如多网卡 + 子网卡)以兼顾性能与灵活性。if在计算机领域,“if” 是一个非常常见的关键词,通常与条件判断相关。以下是关于 “if” 的常见用法和解析:

3、路由配置

route命令

route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。

语法:

route [选项] [参数]

选项:

选项描述
-A设置地址类型;
-C打印将Linux核心的路由缓存;
-v详细信息模式;
-n直接显示数字形式的IP地址;
-enetstat格式显示路由表;
-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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值