学习Linux——网络基础管理
《网络基础命令管理》2025年11月4日
一、理论基础:网络通讯的底层逻辑
网络本质:链接与通讯规则
网络是多台设备通过有线/无线连接,按统一协议传递数据的系统。
核心概念:设备在网络中的“身份信息”
IP地址:设备的唯一标识,分公网IP(全球唯一)和私网IP(局域网使用,如192.168.x.x|192.168.0.0-192.168.255.255)
子网掩码:划分局域网范围,如255.255.255.0(/24)表示前三段IP相同的设备在同一局域网
网关:局域网的出口,访问外网必须通过网关(通常是路由器IP,如192.168.192.1)
DNS服务器:将网址翻译成IP,红帽默认读取/etc/resolv.conf 文件,常用的公共DNS有谷歌8.8.8.8、阿里云223.5.5.5
核心协议:
- TCP/IP 协议族:Linux 网络的 “通用语言”,包含一系列协议:
- IP 协议:负责给数据 “贴地址”,确保送到目标设备;
- TCP 协议:负责数据传输的可靠性(如丢包重传),常用于网页、文件传输;
- UDP 协议:速度快但不保证可靠性,常用于视频、语音通话。
二、基本信息
1.查看 IP、子网掩码、网卡信息
重点关注 IP地址、子网掩码、状态(UP/DOWN)、MAC地址 这几个核心字段即可快速掌握网络接口状态
查看IP地址有ip addr和ifconf两个新旧命令
命令核心差异
ip addr更侧重配置细节(如生存期、作用域、完整状态标识),适合查看接口的 “配置是否正确”。ifconfig更侧重运行统计(如收发包数、错误数),适合快速判断 “网络是否有传输异常”。
ip addr
[root@server ~]# ip addr
[序号]: [接口名]: <[状态标识]> mtu [最大传输单元] qdisc [队列规则] state [状态] group default qlen [队列长度]link/[接口类型] [MAC地址] brd [广播MAC地址][可选] altname [备用接口名] # 部分接口有别名(如ens160可能有enp3s0)inet [IPv4地址]/[子网掩码长度] brd [IPv4广播地址] scope [作用域] [附加属性] [接口名]valid_lft [有效生存期] preferred_lft [首选生存期]inet6 [IPv6地址]/[前缀长度] scope [作用域] [附加属性]valid_lft [有效生存期] preferred_lft [首选生存期]
字段含义:
- 基础信息
[序号]:接口编号(如1: lo中1是编号)。[接口名]:网卡名称(如lo回环、ens160物理网卡、docker0虚拟网桥)。<[状态标识]>:接口功能标识(多个用逗号分隔):LOOPBACK:回环接口(lo特有);BROADCAST:支持广播;MULTICAST:支持组播;UP:接口已启用;LOWER_UP:物理链路已连接(如网线插好);NO-CARRIER:物理链路未连接(如网线没插)。
mtu [数值]:最大传输单元(单位字节,默认以太网 1500,回环 65536)。
- 链路层信息
link/[接口类型]:loopback表示回环,ether表示以太网(物理网卡)。[MAC地址]:物理地址(如00:0c:29:d1:00:d8),全球唯一。
- 网络层信息
inet [IPv4地址]/[子网掩码长度]:IPv4 地址及子网掩码(如192.168.1.100/24等价255.255.255.0)。brd [IPv4广播地址]:同一局域网的广播地址(如192.168.1.255)。scope [作用域]:host表示仅本机可见(如lo),global表示全局可见(可访问外网),link表示仅链路层可见(同一局域网)。inet6 [IPv6地址]:IPv6 地址(如fe80::20c:29ff:fed1:d8/64)。
ifconf:
[root@server ~]# ifconfig
[接口名]: flags=[标志值]<[状态标识]> mtu [最大传输单元]inet [IPv4地址] netmask [子网掩码] broadcast [IPv4广播地址]inet6 [IPv6地址] prefixlen [前缀长度] scopeid [作用域ID][接口类型] [MAC地址] txqueuelen [发送队列长度] ([接口类型描述])RX packets [接收包数] bytes [接收字节数] ([换算后单位])RX errors [接收错误数] dropped [接收丢弃数] overruns [接收溢出数] frame [帧错误数]TX packets [发送包数] bytes [发送字节数] ([换算后单位])TX errors [发送错误数] dropped [发送丢弃数] overruns [发送溢出数] carrier [载波错误数] collisions [冲突数]
字段含义:
-
基础信息
[接口名]:同ip addr(如lo、ens160)。flags=[标志值]<[状态标识]>:状态标识与ip addr类似(如UP启用、LOOPBACK回环、BROADCAST广播)。mtu [数值]:同ip addr,最大传输单元。
-
网络层信息
inet [IPv4地址]:IPv4 地址(如192.168.1.100)。netmask [子网掩码]:点分十进制子网掩码(如255.255.255.0,对应ip addr的/24)。inet6 [IPv6地址]:IPv6 地址(显示较简略,省略部分属性)。
-
链路层信息
[接口类型] [MAC地址]:如ether 00:0c:29:d1:00:d8(以太网类型 + MAC 地址)。
-
统计信息(
ip addr无此部分)RX/TX packets:接收 / 发送的数据包总数。RX/TX errors:接收 / 发送的错误包数(非 0 表示网络有问题)。collisions:数据包冲突数(以太网中多设备同时发送导致,非 0 可能表示网络拥堵)。
解读示范:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 本地回环接口lo的接口类型(回环)、启用状态(UP/LOWER_UP)、MTU 值(65536)、虚拟 MAC 地址(全 0)、IPv4 地址(127.0.0.1/8)、IPv6 地址(::1/128)、作用域(仅本机可见)及地址永久有效属性,是支持本机内部通信的基础接口。 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether f6:48:26:06:14:04 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 2 overruns 0 carrier 0 collisions 0Docker 虚拟网桥docker0的启用状态(UP/BROADCAST/MULTICAST)、MTU 值(1500)、IPv4 地址(172.17.0.1)、子网掩码(255.255.0.0)、广播地址(172.17.255.255)、虚拟 MAC 地址(f6:48:26:06:14:04)、无数据传输(收发数据包均为 0)及少量发送包丢弃(2 个,属正常)的状态,表明网桥已启用但无 Docker 容器运行。
2.查看默认网关
ip route show | grep default
解读:
[root@server ~]# ip route show | grep default
default via 192.168.192.2 dev ens160 proto static metric 100
所有外网流量都从 ens160 网卡发往网关 192.168.192.2,再由网关转发到互联网(即默认网卡)
nmcli connection show ens160 | grep GATEWAY
nmcli connection show ensXXX:查看名为 ensXXX 的网络连接的所有详细配置(包括 IP、子网掩码、网关、DNS 等)。
[root@server network-scripts]# nmcli connection show ens160 | grep GATEWAY
IP4.GATEWAY: 192.168.192.2
IP6.GATEWAY: --
3.查看 DNS 服务器
[root@server ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5
- 红帽中
/etc/resolv.conf可能由 NetworkManager 自动生成,手动修改可能被覆盖。
三、命令
1.功能分类
(1)网络诊断类:
ping <IP/域名>(测试连通性)
- 功能:测试与目标主机的网络连通性(如
ping www.baidu.com测试外网)。
traceroute <IP/域名>(追踪路由)
- 功能:显示数据包到目标的每一跳路径(可排查 “在哪一跳丢包”)。
nslookup <域名>(DNS 解析测试)
- 功能:测试域名解析是否正常(如
nslookup baidu.com查看解析的 IP)。
(2)查看网络类:
1.ip addr(全面查看网卡信息)
显示所有网卡的IP地址、MAC地址、状态
2.ip route show(路由表查看)显示数据包的转发规则(目标网络、网关、出口网关)
命令讲解[目标网络] via [网关IP] dev [网卡名] proto [协议类型] scope [作用域] src [本机源IP] metric [优先级] [附加状态]
字段含义及解读:
[目标网络]
- 表示这条路由规则适用的 “目标 IP 网段”(格式:
网段IP/子网掩码长度)。- 特殊值
default表示 “所有未被其他规则匹配的网段”(即外网,最常用)。- 示例:
default(所有外网)、192.168.1.0/24(局域网网段)、172.17.0.0/16(Docker 容器网段)。
via [网关IP]
- 表示 “数据包需要经过该网关转发”(仅当目标网络不在本机所在局域网时出现)。
- 若没有
via字段,说明目标网络是本机直连的(同一局域网,无需网关)。- 示例:
via 192.168.1.1表示通过网关192.168.1.1转发。
dev [网卡名]
- 表示 “数据包从本机的该网卡发送出去”(绑定具体的网卡,如
ens160、docker0)。- 示例:
dev ens160表示通过主网卡ens160发送。
proto [协议类型]
- 表示路由规则的 “生成方式”:
kernel:由系统内核自动生成(如本机 IP 所在的局域网路由);static:手动配置的静态路由(如默认路由);dhcp:通过 DHCP 协议自动获取的路由。
scope [作用域]
- 表示路由规则的 “生效范围”:
global:全局有效(可访问外网或其他局域网);link:仅在本机所在的链路层有效(同一局域网内);host:仅本机内部有效(如回环地址路由)。
src [本机源IP]
- 表示 “发送数据包时,本机使用该 IP 作为源地址”(通常是对应网卡的 IP)。
- 示例:
src 192.168.1.100表示用网卡ens160的 IP192.168.1.100作为源地址。
metric [优先级]
- 数值越小,优先级越高(当多个路由规则匹配同一目标网络时,优先选择数值小的)。
- 示例:
metric 100表示该路由优先级为 100。
[附加状态]
- 可选字段,表示路由的额外状态:
linkdown:对应的网卡链路未激活(如 Docker 网桥未连接容器);noprefixroute:不自动生成前缀路由(较少见)。
3.nmcli genral status(NetworkManager整体状态)
查看系统的连通性、无线/有线硬件状态(如是否链接,是否正常访问外网)
示例:
[root@server network-scripts]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED
connected full missing enabled missing enabled no (guessed)
STATE: connected 且 CONNECTIVITY: full 表示网络完全正常。
(3)网卡管理类:
nmcli connection show --active(查看活跃链接):列出正在使用的网络连接
nmcli connection up/down <连接名>(启用 / 禁用网卡)
- 功能:临时启用或禁用某网络连接(重启后失效,若需永久生效需改配置)。
- 示例:
nmcli connection down ens160(禁用ens160网卡)。
(4)IP与路由配置类
nmcli connection modify <连接名> ipv4.addresses <IP/掩码>(设置静态 IP):给指定连接配置静态 IP 地址(如 192.168.1.100/24)。
示例:nmcli connection modify ens160 ipv4.addresses "192.168.1.100/24"。
nmcli connection modify <连接名> ipv4.gateway <网关IP>(设置网关):指定数据包转发的默认网关(如路由器 IP 192.168.1.1)。
ip route add/del(添加 / 删除路由):手动添加或删除自定义路由规则(如让某网段走特定网关)。
示例:ip route add 10.0.0.0/8 via 192.168.1.254(访问 10.0.0.0/8 网段时,经网关 192.168.1.254 转发)。
nmcli connection modfiy<网卡连接名> ipv4.addresses<IP地址/子网掩码位数> ipv4.getway<网关地址> ipv4.dns<DNS服务器IP> ipv4.method<IP获取方式> connection.autoconnect <是否自动连接> :修改IP<!!!此命令重点掌握!!!>
[root@haha ~]#nmcli connection modify ens160 ipv4.addresses 192.168.197.200/24 ipv4.gateway192.168.197.2 ipv4.dns 192.168.197.2 ipv4.method manual connection.autoconnect yes
[root@haha ~]#nmcli connection modify (ens160)[网络连接名](ipv4.addresses 192.168.197.200/24)[ipv4地址] (ipv4.gateway192.168.197.2)[网关] (ipv4.dns 192.168.197.2)[dns] (ipv4.method manual)[ipv4的获取方式] (connection.autoconnect yes)[会话的自启动]
(5)DNS配置类
nmcli connection modify <连接名> ipv4.dns <DNS地址>(设置 DNS)
- 功能:指定DNS 服务器(如阿里云
223.5.5.5、114114.114.114.114)。 - 示例:
nmcli connection modify ens160 ipv4.dns "223.5.5.5 114.114.114.114"
cat /etc/resolv.conf(查看当前 DNS)
- 功能:查看系统实际生效的 DNS 服务器(注意:该文件可能被 NetworkManager 自动覆盖,建议用
nmcli配置)。
2.nmcli
nmcli 是基于 NetworkManager 的网络管理命令行工具,用于配置、查看和管理网络连接,功能强大且支持永久生效。以下是其核心模块、选项功能及常见问题解决方案:
1.核心模块与功能
nmcli 按功能分为多个子命令(模块),以下是最常用的:
| 子命令 | 功能描述 |
|---|---|
nmcli general | 查看 / 管理 NetworkManager 的整体状态(如连通性、无线硬件状态) |
nmcli connection | 管理网络连接配置(创建、修改、启用、禁用连接) |
nmcli device | 管理网卡设备(查看设备状态、启用 / 禁用设备) |
nmcli radio | 管理无线开关(启用 / 禁用 Wi-Fi、蓝牙) |
核心选项与使用示例
(1)nmcli general 模块
-
nmcli general status:查看网络整体状态(连通性、无线硬件状态)。示例输出:[root@server ~]# nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED connected full missing enabled missing enabled no (guessed)STATE:NetworkManager 运行状态(connected表示正常)。CONNECTIVITY:网络连通性(full表示可访问外网)。
-
nmcli general hostname:查看 / 设置主机名(需 root 权限)。示例:sudo nmcli general hostname haha(设置主机名为haha)。[root@server ~]# nmcli general hostname haha [root@server ~]# Broadcast message from root@server ·········· [C:\~]$ ssh root@192.168.192.128Connecting to 192.168.192.128:22... ········ Last login: Tue Nov 4 20:09:44 2025 [root@haha ~]# -
拓展:
hostnamectl hostname XXX同样是重命名
(2)nmcli connection 模块
-
nmcli connection show:查看所有网络连接(包括活跃和非活跃的)。示例输出:[root@haha ~]# nmcli connection show NAME UUID TYPE > ens160 f9261b08-4847-3a3e-a2d8-64020950a7e9 ethernet> lo 2497ca88-598c-41a3-bf50-613e50a2cc14 loopback>NAME:连接名(如ens160),用于后续操作。DEVICE:绑定的网卡设备。
-
nmcli connection show --active:只查看活跃的网络连接(当前正在使用的)。 -
nmcli connection modify <连接名> <参数> <值>:修改连接配置(永久生效)。常用参数:ipv4.addresses:设置静态 IP(如"192.168.1.100/24")。ipv4.gateway:设置默认网关(如"192.168.1.1")。ipv4.dns:设置 DNS 服务器(如"223.5.5.5 114.114.114.114")。ipv4.method:设置 IP 获取方式(manual静态 /autoDHCP)。
# 给ens160配置静态IP、网关、DNS nmcli connection modify ens160 ipv4.addresses "192.168.1.100/24" \ipv4.gateway "192.168.1.1" \ipv4.dns "223.5.5.5" \ipv4.method manual可参考上面IP修改
-
nmcli connection up/down <连接名>:启用 / 禁用网络连接(临时生效,重启后需重新启用)。示例:nmcli connection down ens160(禁用 ens160 网卡的网络连接)注:此处想要实验请不要使用XShell等链接,用虚拟机直接操作,关闭后XShell会断连。 -
nmcli connection add:创建新网络连接(如新建一个静态 IP 连接)。示例:nmcli connection add type ethernet con-name my-static ifname ens160 \ipv4.addresses "192.168.1.200/24" \ipv4.gateway "192.168.1.1" \ipv4.dns "223.5.5.5" \ipv4.method manual
(3)nmcli device 模块
-
nmcli device status:查看所有网卡设备的状态(是否启用、连接类型)。示例输出:[root@haha ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens160 ethernet connected ens160 lo loopback connected (externally) loSTATE:connected表示设备已连接网络。CONNECTION:绑定的网络连接名。
-
nmcli device connect/disconnect <设备名>:启用 / 禁用网卡设备(临时生效)。示例:nmcli device disconnect ens160(临时禁用 ens160 网卡)。
(4) nmcli radio 模块
-
nmcli radio wifi:查看 / 设置Wi-Fi 开关(on启用 /off禁用)。示例:
[root@haha ~]# nmcli radio wifi enabled [root@haha ~]# nmcli radio wifi off [root@haha ~]# nmcli radio wifi disabled [root@haha ~]# nmcli radio wifi on [root@haha ~]# nmcli radio wifi enabled -
nmcli radio wwan:查看 / 设置移动网络(蜂窝)开关。
示例:
[root@haha ~]# nmcli radio wwan
enabled
[root@haha ~]# nmcli radio wwan off
[root@haha ~]# nmcli radio wwan
disabled
[root@haha ~]# nmcli radio wwan on
[root@haha ~]# nmcli radio wwan
enabled
2.常见问题及解决方案
(1)修改配置后不生效
- 原因:修改后未重启网络连接。
- 解决方案:执行
nmcli connection reload重新加载配置,再执行nmcli connection up <连接名>重启连接。
(2)找不到网络连接名
- 原因:新系统可能未生成默认连接,或连接名被修改。
- 解决方案:执行
nmcli connection show查看所有连接,确认连接名;若没有,执行nmcli connection add type ethernet con-name <自定义名> ifname <网卡名>创建新连接。
(3)静态 IP 配置后无法上网
- 原因:网关或 DNS 配置错误,或 IP 与子网不匹配。
- 解决方案:
- 检查
nmcli connection show <连接名> | grep GATEWAY确认网关正确(需与路由器 IP 一致)。 - 检查
nmcli connection show <连接名> | grep DNS确认 DNS 可访问(如替换为223.5.5.5测试)。 - 检查 IP 子网掩码(如
192.168.1.100/24对应子网192.168.1.0/24)。
- 检查
(3)nmcli 命令无权限
- 原因:普通用户无 NetworkManager 管理权限。
- 解决方案:使用
sudo执行命令(如sudo nmcli connection modify ...)。
(4)无法连接 Wi-Fi(无线网卡)
- 原因:Wi-Fi 开关未启用,或未连接正确网络。
- 解决方案:
- 执行
nmcli radio wifi on启用 Wi-Fi。 - 扫描可用网络:
nmcli device wifi list。 - 连接网络:
nmcli device wifi connect "SSID" password "密码"(替换 SSID 和密码)
- 执行
3.firewall-cmd
firewall-cmd 是红帽系 Linux(RHEL、CentOS 7+)默认的防火墙管理命令,基于 firewalld 服务,用于配置端口放行、网络区域管理、端口转发等,核心优势是支持 “动态配置”(无需重启服务即可生效)。以下从核心功能、常用命令、常见问题三个维度讲解:
1.核心概念:区域(Zone)
firewalld 通过 “区域” 管理规则,不同区域对应不同安全级别(默认使用 public 区域,适合公共网络):
public:默认区域,允许指定的端口(如 SSH 22 端口),拒绝其他所有流量。trusted:信任区域,允许所有流量(慎用,适合内网环境)。block:拒绝所有传入流量,仅允许传出流量。drop:丢弃所有传入流量(无响应),仅允许传出流量。
2.常用命令(按功能分类)
(1)基础操作:服务启停与状态查看
-
查看 firewalld 状态(关键,先确认服务是否运行):
[root@haha ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall dae>Loaded: loaded (/usr/lib/systemd/system/firewalld>Active: active (running) since Tue 2025-11-04 20:>Docs: man:firewalld(1)Main PID: 875 (firewalld)Tasks: 2 (limit: 12067)Memory: 40.2MCPU: 979msCGroup: /system.slice/firewalld.service└─875 /usr/bin/python3 -s /usr/sbin/firew>Nov 04 20:09:05 haha systemd[1]: Starting firewalld - > Nov 04 20:09:06 haha systemd[1]: Started firewalld - d> -
启动 / 停止 / 重启 firewalld:
sudo systemctl start firewalld # 启动 sudo systemctl stop firewalld # 停止(临时关闭,重启失效) sudo systemctl restart firewalld # 重启 -
设置开机自启 / 禁用:
sudo systemctl enable firewalld # 开机自启 sudo systemctl disable firewalld # 禁用开机自启
(2)区域管理(核心)
-
查看当前默认区域:
[root@haha ~]# firewall-cmd --get-default-zone public -
切换默认区域(如切换到 trusted):
sudo firewall-cmd --set-default-zone=trusted -
查看所有区域及规则:
firewall-cmd --list-all-zones -
查看当前区域的详细规则(最常用):
firewall-cmd --list-all
(3)端口 / 服务放行(最常用场景)
-
临时放行端口(重启 firewalld 后失效,适合测试):
# 放行80端口(HTTP),--permanent去掉即为临时 sudo firewall-cmd --add-port=80/tcp -
永久放行端口(需重载配置生效):
# 永久放行3306端口(MySQL) sudo firewall-cmd --permanent --add-port=3306/tcp # 重载配置(使永久规则生效) sudo firewall-cmd --reload -
永久放行服务(直接用服务名,无需记端口):
# 永久放行ssh服务(默认22端口) sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload -
移除已放行的端口 / 服务:
# 永久移除80端口 sudo firewall-cmd --permanent --remove-port=80/tcp sudo firewall-cmd --reload
(4)端口转发(实用功能)
-
将本机 80 端口转发到 8080 端口(永久生效):
sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 sudo firewall-cmd --reload
常见问题及解决方案
(1)配置规则后不生效
- 原因:1. 永久规则未执行
firewall-cmd --reload;2. 规则配置错误(如端口号、协议写错)。 - 解决方案:执行
sudo firewall-cmd --reload重载配置;用firewall-cmd --list-all检查规则是否正确添加。
(2)服务端口已放行,但外部仍无法访问
- 原因:1. 服务器 IP 或端口错误;2. 存在其他安全组(如云服务器的厂商安全组)限制;3. 服务本身未启动。
- 解决方案:
- 用
netstat -lntp确认服务已监听目标端口; - 检查云厂商安全组是否放行对应端口;
- 临时停止 firewalld(
sudo systemctl stop firewalld)测试,排除防火墙问题。
- 用
(3)误关闭 firewalld 后无法远程连接(SSH)
- 原因:关闭 firewalld 后,若系统无其他防护,可能被禁止远程连接,或误操作时未保留 SSH 端口。
- 解决方案:通过控制台登录服务器,启动 firewalld(
sudo systemctl start firewalld),并确保 SSH 服务已放行(firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload)。
(4)提示 “firewall-cmd: command not found”
- 原因:未安装 firewalld 服务。
- 解决方案:安装 firewalld:
sudo yum install -y firewalld,然后启动服务(sudo systemctl start firewalld)。
四、总结
掌握nmcli(网络配置)和firewall-cmd(防火墙管理)两大工具,理解 IP、网关、DNS 等基础要素的作用,通过信息查看命令定位问题,结合标准操作流程配置网络,即可高效完成网络管理与故障排查。
