查看有线网卡
在 Linux 中查看有线网卡状态的命令与查看无线网卡的命令类似,但侧重点有所不同。以下是几个最常用和有效的命令:
1. ip link
(查看物理连接状态 - 最基础)
这是查看网卡物理层状态最直接的命令,用于快速确认网卡是否被系统识别以及是否被激活(UP)。
bash
ip link show
# 或者查看指定网卡(通常有线网卡名为 eth0, eno1, ens33 等)
ip link show dev eth0
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:4a:2d:8c brd ff:ff:ff:ff:ff:ff
解读关键信息:
eth0
: 你的有线网卡设备名。<BROADCAST,MULTICAST,UP,LOWER_UP>
: 这些是标志位,最重要的是:UP
: 表示网卡已启用(软件层面)。LOWER_UP
: 表示检测到物理网线已连接(物理链路层已启动)。这是判断网线是否插好的关键标志!
state UP
: 同样表示接口状态为启动。link/ether
: 后面跟着的是网卡的 MAC 地址。
如果网线没插好,你可能会看到:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
这里的 NO-CARRIER
和 state DOWN
明确表示没有检测到载波信号,即网线未连接或对端设备无响应。
2. ethtool
(查看详细物理信息和链路状态 - 专业工具)
ethtool
是查询和控制网络驱动及硬件设置的专业工具 ,特别适合查看有线网卡的连接速度、双工模式、物理链路状态等详细信息。
bash
# 查看 eth0 网卡的驱动信息、链路状态和速度
ethtool eth0
输出示例(网线已连接):
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: on (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
解读最关键的信息:
Link detected: yes
: 这是最重要的信息! 明确表示物理链路已连通。Speed: 1000Mb/s
: 当前协商的连接速度是千兆。Duplex: Full
: 全双工模式。
如果网线没插,输出末尾会显示:
Link detected: no
3. ip addr
(查看网络层配置 - IP地址信息)
这个命令用于查看网卡的网络层(第三层) 信息,主要看是否获取到了 IP 地址。
bash
ip addr show
# 或者查看指定网卡
ip addr show dev eth0
输出示例(已获取IP地址):
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:4a:2d:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 86388sec preferred_lft 86388sec
inet6 fe80::a00:27ff:fe4a:2d8c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
inet
行显示获取到的 IPv4 地址 (192.168.1.100
)。inet6
行显示 IPv6 地址。
如果网卡启用但没有获取到IP地址,输出中则没有 inet
行:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:4a:2d:8c brd ff:ff:ff:ff:ff:ff
4. nmcli
(NetworkManager用户 - 桌面版首选)
如果你的系统使用 NetworkManager(绝大多数桌面发行版都用),这个命令非常强大和直观。
bash
# 查看所有网络设备状态
nmcli device status
# 查看指定网卡的详细信息
nmcli device show eth0
nmcli device status
输出示例:
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected Wired connection 1
wlan0 wifi disconnected --
lo loopback unmanaged --
STATE
列清楚显示了连接状态:connected
(已连接),disconnected
(未连接),unavailable
(不可用,可能被禁用)。
总结与故障排查流程
根据你的需求,选择不同的命令:
你想知道什么? | 推荐命令 | 期望的结果 |
---|---|---|
网线物理上插好了吗? | ip link show dev eth0 |
输出中包含 LOWER_UP |
网卡被系统识别并启用了吗? | ip link show dev eth0 |
输出中包含 state UP |
驱动和物理链路真的通了吗? | ethtool eth0 |
输出末尾显示 Link detected: yes |
获取到IP地址了吗? | ip addr show dev eth0 |
输出中包含 inet 行并有IP地址 |
快速查看所有网卡总览 | nmcli device status |
STATE 列为 connected |
典型故障排查流程:
- 第一步 :用
ip link
看网卡是否是UP
状态且有无LOWER_UP
。 - 第二步 :如果状态不对,用
ethtool
确认物理链路Link detected
是否为yes
。 - 第三步 :如果物理链路正常,用
ip addr
检查是否获得了IP地址。如果没有,可能是DHCP问题。 - 第四步 :始终可以使用
nmcli
来获得一个集成的、用户友好的视图。
查看无线网卡

在 Linux 中查看无线网卡信息是一个系统性的过程,涉及多个命令
核心命令概览
你想了解什么? | 推荐命令 | 作用 |
---|---|---|
网卡是否被识别? | lspci / lsusb |
从硬件层面检查内核是否识别了网卡 |
基本连接状态和信号强度? | iwconfig |
快速、直观地查看基本信息(传统) |
详细的连接状态和信号? | iw dev wlan0 link |
现代、准确的方式查看连接详情 |
扫描周围的WiFi网络? | sudo iw dev wlan0 scan |
发现所有可用的无线网络 |
IP地址和网络配置? | ip addr show dev wlan0 |
查看网络层(IP地址)信息 |
图形化/桌面环境管理? | nmcli / nmtui |
NetworkManager用户的首选管理工具 |
1. 首先,确认无线网卡设备名
在开始之前,需要知道无线网卡在系统中的设备名称。通常以 wlan0
, wlp3s0
等形式出现。
bash
ip link show
查找带有 BROADCAST,MULTICAST
标志且名称以 w
开头的设备(如 wlan0
, wlx...
)。如果网卡已启用,状态会是 UP
。
也可以使用以下命令快速列出所有网络接口:
bash
ls /sys/class/net/
假设无线网卡设备名是 wlan0
,后续命令都将以此为例。
2. 检查无线网卡硬件是否被识别
在查看状态前,先确认系统是否识别了你的无线网卡硬件。
对于PCIe接口的网卡(大部分台式机、笔记本内置网卡):
bash
lspci | grep -i network
lspci | grep -i wireless
对于USB接口的无线网卡(USB WiFi适配器):
bash
lsusb
查看输出列表,寻找类似 Network Controller
, Wireless
, 802.11
等关键词。
3. 查看无线连接状态和信号强度
a) 使用 iwconfig
(传统,但直观)
bash
iwconfig wlan0
输出关键解读:
ESSID:"Your-WiFi-Name"
→ 连接的WiFi名称。Access Point: MAC-Address
→ 连接的路由器MAC地址。Frequency:2.437 GHz
→ 连接的信道频率。Link Quality=70/70
→ 链路质量,值越高越好。Signal level=-67 dBm
→ 信号强度 。这是最重要的指标之一:30 dBm
到50 dBm
: 极佳信号50 dBm
到60 dBm
: 良好信号60 dBm
到70 dBm
: 一般信号< -80 dBm
: 信号很差,可能不稳定
b) 使用 iw
(现代,推荐)
这是 iwconfig
的现代替代品,功能更强大。
查看连接状态:
bash
iw dev wlan0 link
输出结果清晰明了,直接显示 Connected
、SSID
和 signal: -67 dBm
。
4. 扫描周围的WiFi网络(需要root权限)
这是无线网卡特有的操作,用于发现可用的网络。
bash
sudo iw dev wlan0 scan | grep -E "SSID|signal|freq"
这条命令会过滤出每个网络的名称(SSID)、信号强度(signal)和频率(freq/频道)。
如果你想看更简洁的列表,可以尝试:
bash
sudo iw dev wlan0 scan | grep "SSID:" | sort | uniq
或者使用 nmcli
(如果已安装):
bash
nmcli device wifi list
5. 查看IP地址等网络配置
无线连接成功后,你需要获取IP地址才能上网。使用以下命令查看:
bash
ip addr show dev wlan0
查找以 inet
开头的行,后面跟着的就是你的IPv4地址(例如 inet 192.168.1.105/24
)。
6. 使用NetworkManager命令行工具 (nmcli
)
如果你的系统使用NetworkManager(绝大多数桌面版Linux都用),nmcli
是最强大的综合管理工具。
查看所有网络设备状态:
bash
nmcli device status
输出中的 STATE
列会清晰显示是 connected
(已连接)、disconnected
(未连接)还是 unavailable
(不可用)。
查看当前连接的WiFi详细信息:
bash
nmcli connection show --active
查看WiFi信号强度:
bash
nmcli -f IN-USE,SSID,BARS,SIGNAL device wifi list
BARS
会以图形化(****)的形式显示信号强度,非常直观。
7. 启用/禁用无线网卡
有时需要重启无线接口来解决问题。
禁用网卡:
bash
sudo ip link set wlan0 down
启用网卡:
bash
sudo ip link set wlan0 up
使用 rfkill
检查是否被硬件/软件阻塞:
如果网卡无法启用,检查是否被锁定了。
bash
rfkill list
如果显示 Soft blocked: yes
,可以用以下命令解锁:
bash
rfkill unblock wifi
实战排查流程
- 第一步:
ip link
确认网卡存在且状态不是DOWN
。 - 第二步:
rfkill list
确认网卡未被阻塞。 - 第三步:
sudo iw dev wlan0 scan
确认网卡能正常扫描到WiFi信号。 - 第四步: 使用
nmcli
或iwconfig
连接网络。 - 第五步:
iw dev wlan0 link
或iwconfig wlan0
确认连接成功和信号强度。 - 第六步:
ip addr show dev wlan0
确认已获取IP地址。
通过这些命令,你可以全面掌握Linux下无线网卡的所有状态信息。
ethtool命令
核心概念与作用
- 功能定位 :
ethtool
用于管理第1层(物理层) 和 第2层(数据链路层) 的参数。它不处理IP地址(第3层),那是ip
命令的领域。 - 权限要求 :大部分查询命令普通用户可执行,但所有更改设置 的命令都需要
root
权限(使用sudo
)。 - 命令结构 :
ethtool [options] device_name
(如ethtool eth0
)
一、信息查询命令(最常用)
1. 查看网卡概览信息 (ethtool device
)
这是最基础且最常用的命令,提供网卡状态的概览。
bash
ethtool eth0
输出示例及解读:
Settings for eth0:
Supported ports: [ TP ] # 支持的端口类型: TP (Twisted Pair-RJ45), FIBRE, etc.
Supported link modes: 10baseT/Half 10baseT/Full # 支持的链路模式
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No # 是否支持流量控制暂停帧
Supports auto-negotiation: Yes # 是否支持自动协商
Supported FEC modes: Not reported # 前向纠错模式支持
Advertised link modes: 10baseT/Half 10baseT/Full # 向对端宣告的能力
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No # 宣告的暂停帧使用能力
Advertised auto-negotiation: Yes # 宣告是否开启自动协商
Advertised FEC modes: Not reported
Speed: 1000Mb/s # 【关键】当前链接速度
Duplex: Full # 【关键】双工模式: Full (全双工) or Half (半双工)
Port: Twisted Pair # 当前使用端口类型
PHYAD: 0
Transceiver: internal
Auto-negotiation: on # 【关键】自动协商是否开启
MDI-X: on (auto) # 网线交叉/直通自适应
Supports Wake-on: d # 支持的远程唤醒功能
Wake-on: d # 当前远程唤醒设置
Current message level: 0x00000007 (7) # 驱动日志级别
drv probe link
Link detected: yes # 【最关键】物理链路是否连通 (yes/no)
故障排查首要关注点:
Link detected: yes
:物理链路是否正常。如果是no
,说明网线没插好、对端设备没开机或网线/端口故障。Speed: 1000Mb/s
和Duplex: Full
:速度和工作模式是否正确。如果速度显示为10Mb/s
或100Mb/s
,或者双工模式为Half
,可能表示自动协商失败或强制设置错误。
2. 查看驱动和固件信息 (ethtool -i device
)
此命令显示网卡使用的驱动模块、固件版本和总线信息,对于判断驱动是否兼容或需要更新非常有用。
bash
ethtool -i eth0
输出示例:
driver: e1000e # 使用的驱动模块名称
version: 5.15.0-60-generic # 驱动版本
firmware-version: 1.5-2 # 网卡固件版本
bus-info: 0000:00:1f.6 # 网卡的PCI总线地址
supports-statistics: yes # 是否支持统计信息
supports-test: yes # 是否支持自检
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
3. 查看统计信息 (ethtool -S device
)
显示网卡详细的流量统计和错误计数,是排查网络丢包、错误等高级问题的利器。
bash
ethtool -S eth0
输出示例(部分):
NIC statistics:
rx_packets: 12489561 # 接收到的总数据包数
tx_packets: 8921563 # 发送的总数据包数
rx_bytes: 17483214567 # 接收到的总字节数
tx_bytes: 10247893211 # 发送的总字节数
rx_errors: 0 # 【关键】接收错误计数
tx_errors: 0 # 【关键】发送错误计数
rx_dropped: 0 # 【关键】内核丢弃的接收包数
tx_dropped: 0 # 【关键】内核丢弃的发送包数
multicast: 12561 # 接收到的组播包数
collisions: 0 # 冲突检测次数 (半双工模式下重要)
rx_length_errors: 0
rx_over_errors: 0 # 接收溢出错误
rx_crc_errors: 0 # 【关键】CRC校验错误 (通常意味着物理层问题,如网线质量差)
rx_frame_errors: 0
rx_fifo_errors: 0
rx_missed_errors: 0 # 由于FIFO满而丢弃的包数
... (更多统计项,因驱动而异)
关键点 :如果 rx_errors
, tx_errors
, rx_dropped
等计数器在持续快速增长,表明网络存在严重问题。
4. 查看卸载功能状态 (ethtool -k device
)
现代网卡通常支持卸载(Offload) 功能,将一些本应由CPU处理的网络任务(如校验和计算、TCP分段)交给网卡硬件处理,以降低CPU占用率提升性能。此命令用于查看这些功能的开关状态。
bash
ethtool -k eth0
输出示例:
Features for eth0:
rx-checksumming: on # 接收校验和卸载
tx-checksumming: on # 发送校验和卸载
tx-checksum-ipv4: on
tx-checksum-ipv6: on
scatter-gather: on # 分散/聚集 (SG) IO,提升效率
tx-scatter-gather: on
tx-scatter-gather-fraglist: off
tcp-segmentation-offload: on # 【重要】TCP分段卸载 (TSO)
tx-tcp-segmentation: on
tx-tcp6-segmentation: on
udp-fragmentation-offload: off
generic-receive-offload: on # 【重要】通用接收卸载 (GRO)
large-receive-offload: off
rx-vlan-offload: on # VLAN处理卸载
tx-vlan-offload: on
...
建议 :在虚拟机或高性能网络场景中,如果遇到网络性能问题,可以尝试调整这些设置。通常保持默认的 on
状态即可获得最佳性能。
二、配置控制命令(需要root权限)
1. 修改卸载功能设置 (ethtool -K device feature on|off
)
用于开启或关闭特定的卸载功能。
bash
# 关闭 TSO (用于排查某些网络故障)
sudo ethtool -K eth0 tso off
# 开启 GRO
sudo ethtool -K eth0 gro on
# 一次性修改多个设置
sudo ethtool -K eth0 tso off gso off
2. 强制设置速度、双工模式和自动协商 (ethtool -s device
)
这是解决自动协商失败问题的终极手段。谨慎使用,强制设置可能导致链路中断或性能下降。
命令格式: sudo ethtool -s [device] speed [10|100|1000] duplex [half|full] autoneg [on|off]
bash
# 强制设置为千兆全双工,并关闭自动协商
sudo ethtool -s eth0 speed 1000 duplex full autoneg off
# 强制设置为百兆半双工
sudo ethtool -s eth0 speed 100 duplex half autoneg off
# 恢复自动协商 (最推荐的方式)
sudo ethtool -s eth0 autoneg on
最佳实践 :除非你明确知道对端设备(如某些老式交换机)需要强制设置,否则始终优先使用 autoneg on
。
3. 识别网卡(让网卡LED灯闪烁)(ethtool -p device
)
在物理服务器上,如果你有多块网卡,很难确定 eth0
对应的是哪个物理端口。这个命令可以让对应网卡的LED指示灯闪烁一段时间,方便物理定位。
bash
# 让 eth0 对应的网卡灯闪烁10秒
sudo ethtool -p eth0 10
三、高级诊断命令
1. 读取EEPROM内容 (ethtool -e device
)
读取网卡上EEPROM(存储MAC地址、厂商信息等)的原始数据。通常用于高级调试或克隆MAC地址。
bash
# 以16进制格式输出
sudo ethtool -e eth0
# 以原始字节格式输出
sudo ethtool -e eth0 raw on
2. 执行网卡自检 (ethtool -t device
)
让网卡进行内部自检。不是所有网卡都支持此功能。
bash
sudo ethtool -t eth0
实战故障排查流程
- 物理链路不通?
ethtool eth0 | grep "Link detected"
-> 如果是no
,检查网线、交换机、对端设备。
- 速度/双工模式不对?
ethtool eth0 | grep -E "Speed|Duplex"
-> 如果不是预期值(如千兆全双工),尝试sudo ethtool -s eth0 autoneg on
强制重新协商。最后手段才是强制设置。
- 网络丢包或性能差?
ethtool -S eth0 | grep -i error
-> 查看错误计数器是否在增长。ethtool -k eth0
-> 检查卸载功能是否正常开启。- 持续运行
watch -d ethtool -S eth0
观察哪些计数器变化最快。
- 驱动问题?
ethtool -i eth0
-> 查看驱动和固件版本,与官方推荐版本对比。
总之,ethtool
是深入Linux网络栈底层的"手术刀",提供了无可替代的详细硬件视图和控制能力。掌握它是成为Linux网络专家的关键一步。
iw命令
iw
是 Linux 系统中用于管理和配置无线网络接口的现代命令行工具,属于 iproute2
工具集的一部分。它替代了旧的 iwconfig
和 iwlist
命令,支持更现代的无线功能(如 802.11ac/n、WPA3 等)
1. 基本语法
bash
iw [options] <command> [args]
- 常用选项 :
-debug
:启用调试输出。-version
:显示版本信息。
2. 常用子命令及功能
2.1 查看无线设备信息
-
列出所有无线设备(物理层和接口):
bashiw dev
输出示例:
phy#0 Interface wlan0 ifindex 3 type managed
-
查看具体网卡详细信息:
bashiw dev wlan0 info
2.2 扫描附近的 Wi-Fi 网络
bash
sudo iw dev wlan0 scan | grep -E "SSID|freq|signal"
- 关键字段 :
SSID
:网络名称。freq
:频率(MHz)。signal
:信号强度(dBm)。WPA
/WPA2
:加密类型。
2.3 连接/断开 Wi-Fi
-
连接到开放网络(无密码):
bashsudo iw dev wlan0 connect "MyWiFi"
-
断开当前连接:
bashsudo iw dev wlan0 disconnect
2.4 管理无线接口模式
-
查看当前模式:
bashiw dev wlan0 get type
-
切换模式(如 AP 模式):
bashsudo iw dev wlan0 set type __ap
2.5 监控信号强度
bash
sudo iw dev wlan0 link
输出示例:
Connected to aa:bb:cc:dd:ee:ff (on wlan0)
SSID: MyWiFi
freq: 5180
RX: 1000 bytes
TX: 500 bytes
signal: -50 dBm
3. 高级功能
3.1 创建虚拟接口(VAP)
bash
sudo iw phy phy0 interface add vap0 type managed
3.2 设置发射功率(dBm)
bash
sudo iw dev wlan0 set txpower fixed 20
3.3 查看支持的无线功能
bash
iw list
关键信息:
Supported interface modes
:支持的接口类型(如 AP、monitor)。Band 1/2
:支持的频段(2.4GHz/5GHz)。HT/VHT/HE
:支持的协议(802.11n/ac/ax)。
3.4 启用监控模式(抓包用)
bash
sudo iw dev wlan0 set monitor none
4. 实际示例
4.1 查找最强信号的 Wi-Fi
bash
sudo iw dev wlan0 scan | awk -F '[: ]' '/SSID/{ssid=$2} /signal/{print ssid, $2"dBm"}' | sort -k2 -n
4.2 检查当前连接的频段
bash
iw dev wlan0 info | grep "channel"
5. 常见问题
Q1: iw
和 iwconfig
的区别?
iw
支持现代无线标准(如 802.11ac/ax),而iwconfig
仅支持旧协议(如 802.11a/b/g)。iw
需要内核无线扩展支持(nl80211
驱动),部分老硬件可能不兼容。
Q2: 如何安装 iw
?
-
大多数 Linux 发行版已预装,若缺失可通过包管理器安装:
bashsudo apt install iw # Debian/Ubuntu sudo yum install iw # CentOS/RHEL
Q3: 为什么 scan
命令无输出?
- 可能原因:
- 网卡被禁用:
rfkill unblock wifi
。 - 需 root 权限:加
sudo
。 - 驱动不支持:检查
dmesg | grep wifi
。
- 网卡被禁用:
总结
iw
是 Linux 无线管理的核心工具,适合:
- 调试无线连接问题。
- 配置高级模式(如监控、AP)。
- 获取详细的网络和硬件信息。
建议结合 ip
、nmcli
等工具使用,以全面管理网络。