Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux查看有线和无线网卡

Linux查看有线网卡和无线网卡的方法详解

作者:Prejudices

在 Linux 中查看有线网卡状态的命令与查看无线网卡的命令类似,但侧重点有所不同,以下是几个最常用和有效的命令,并有详细的代码供大家参考,感兴趣的小伙伴跟着小编一起来看看吧

查看有线网卡

在 Linux 中查看有线网卡状态的命令与查看无线网卡的命令类似,但侧重点有所不同。以下是几个最常用和有效的命令:

1. ip link (查看物理连接状态 - 最基础)

这是查看网卡物理层状态最直接的命令,用于快速确认网卡是否被系统识别以及是否被激活(UP)。

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

解读关键信息:

如果网线没插好,你可能会看到:

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

这里的 NO-CARRIERstate DOWN 明确表示没有检测到载波信号,即网线未连接或对端设备无响应。

2. ethtool (查看详细物理信息和链路状态 - 专业工具)

ethtool 是查询和控制网络驱动及硬件设置的专业工具,特别适合查看有线网卡的连接速度、双工模式、物理链路状态等详细信息。

# 查看 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: no

3. ip addr (查看网络层配置 - IP地址信息)

这个命令用于查看网卡的网络层(第三层) 信息,主要看是否获取到了 IP 地址。

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

如果网卡启用但没有获取到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(绝大多数桌面发行版都用),这个命令非常强大和直观。

# 查看所有网络设备状态
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  --

总结与故障排查流程

根据你的需求,选择不同的命令:

你想知道什么?推荐命令期望的结果
网线物理上插好了吗?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 statusSTATE 列为 connected

典型故障排查流程:

  1. 第一步:用 ip link 看网卡是否是 UP 状态且有无 LOWER_UP
  2. 第二步:如果状态不对,用 ethtool 确认物理链路 Link detected 是否为 yes
  3. 第三步:如果物理链路正常,用 ip addr 检查是否获得了IP地址。如果没有,可能是DHCP问题。
  4. 第四步:始终可以使用 nmcli 来获得一个集成的、用户友好的视图。

查看无线网卡

在 Linux 中查看无线网卡信息是一个系统性的过程,涉及多个命令

核心命令概览

你想了解什么?推荐命令作用
网卡是否被识别?lspci / lsusb从硬件层面检查内核是否识别了网卡
基本连接状态和信号强度?iwconfig快速、直观地查看基本信息(传统)
详细的连接状态和信号?iw dev wlan0 link现代、准确的方式查看连接详情
扫描周围的WiFi网络?sudo iw dev wlan0 scan发现所有可用的无线网络
IP地址和网络配置?ip addr show dev wlan0查看网络层(IP地址)信息
图形化/桌面环境管理?nmcli / nmtuiNetworkManager用户的首选管理工具

1. 首先,确认无线网卡设备名

在开始之前,需要知道无线网卡在系统中的设备名称。通常以 wlan0, wlp3s0 等形式出现。

ip link show

查找带有 BROADCAST,MULTICAST 标志且名称以 w 开头的设备(如 wlan0, wlx...)。如果网卡已启用,状态会是 UP

也可以使用以下命令快速列出所有网络接口:

ls /sys/class/net/

假设无线网卡设备名是 wlan0,后续命令都将以此为例。

2. 检查无线网卡硬件是否被识别

在查看状态前,先确认系统是否识别了你的无线网卡硬件。

对于PCIe接口的网卡(大部分台式机、笔记本内置网卡):

lspci | grep -i network
lspci | grep -i wireless

对于USB接口的无线网卡(USB WiFi适配器):

lsusb

查看输出列表,寻找类似 Network Controller, Wireless, 802.11 等关键词。

3. 查看无线连接状态和信号强度

a) 使用 iwconfig (传统,但直观)

iwconfig wlan0

输出关键解读:

b) 使用 iw (现代,推荐)

这是 iwconfig 的现代替代品,功能更强大。

查看连接状态:

iw dev wlan0 link

输出结果清晰明了,直接显示 ConnectedSSIDsignal: -67 dBm

4. 扫描周围的WiFi网络(需要root权限)

这是无线网卡特有的操作,用于发现可用的网络。

sudo iw dev wlan0 scan | grep -E "SSID|signal|freq"

这条命令会过滤出每个网络的名称(SSID)、信号强度(signal)和频率(freq/频道)。

如果你想看更简洁的列表,可以尝试:

sudo iw dev wlan0 scan | grep "SSID:" | sort | uniq

或者使用 nmcli(如果已安装):

nmcli device wifi list

5. 查看IP地址等网络配置

无线连接成功后,你需要获取IP地址才能上网。使用以下命令查看:

ip addr show dev wlan0

查找以 inet 开头的行,后面跟着的就是你的IPv4地址(例如 inet 192.168.1.105/24)。

6. 使用NetworkManager命令行工具 (nmcli)

如果你的系统使用NetworkManager(绝大多数桌面版Linux都用),nmcli 是最强大的综合管理工具。

查看所有网络设备状态:

nmcli device status

输出中的 STATE 列会清晰显示是 connected(已连接)、disconnected(未连接)还是 unavailable(不可用)。

查看当前连接的WiFi详细信息:

nmcli connection show --active

查看WiFi信号强度:

nmcli -f IN-USE,SSID,BARS,SIGNAL device wifi list

BARS 会以图形化(****)的形式显示信号强度,非常直观。

7. 启用/禁用无线网卡

有时需要重启无线接口来解决问题。

禁用网卡:

sudo ip link set wlan0 down

启用网卡:

sudo ip link set wlan0 up

使用 rfkill 检查是否被硬件/软件阻塞:
如果网卡无法启用,检查是否被锁定了。

rfkill list

如果显示 Soft blocked: yes,可以用以下命令解锁:

rfkill unblock wifi

实战排查流程

  1. 第一步: ip link 确认网卡存在且状态不是 DOWN
  2. 第二步: rfkill list 确认网卡未被阻塞。
  3. 第三步: sudo iw dev wlan0 scan 确认网卡能正常扫描到WiFi信号。
  4. 第四步: 使用 nmcliiwconfig 连接网络。
  5. 第五步: iw dev wlan0 linkiwconfig wlan0 确认连接成功和信号强度。
  6. 第六步: ip addr show dev wlan0 确认已获取IP地址。

通过这些命令,你可以全面掌握Linux下无线网卡的所有状态信息。

ethtool命令

核心概念与作用

一、信息查询命令(最常用)

1. 查看网卡概览信息 (ethtool device)

这是最基础且最常用的命令,提供网卡状态的概览。

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)

故障排查首要关注点:

2. 查看驱动和固件信息 (ethtool -i device)

此命令显示网卡使用的驱动模块、固件版本和总线信息,对于判断驱动是否兼容或需要更新非常有用。

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)

显示网卡详细的流量统计和错误计数,是排查网络丢包、错误等高级问题的利器。

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占用率提升性能。此命令用于查看这些功能的开关状态。

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)

用于开启或关闭特定的卸载功能。

# 关闭 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]

# 强制设置为千兆全双工,并关闭自动协商
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指示灯闪烁一段时间,方便物理定位。

# 让 eth0 对应的网卡灯闪烁10秒
sudo ethtool -p eth0 10

三、高级诊断命令

1. 读取EEPROM内容 (ethtool -e device)

读取网卡上EEPROM(存储MAC地址、厂商信息等)的原始数据。通常用于高级调试或克隆MAC地址。

# 以16进制格式输出
sudo ethtool -e eth0

# 以原始字节格式输出
sudo ethtool -e eth0 raw on

2. 执行网卡自检 (ethtool -t device)

让网卡进行内部自检。不是所有网卡都支持此功能。

sudo ethtool -t eth0

实战故障排查流程

  1. 物理链路不通?
    • ethtool eth0 | grep "Link detected" -> 如果是 no,检查网线、交换机、对端设备。
  2. 速度/双工模式不对?
    • ethtool eth0 | grep -E "Speed|Duplex" -> 如果不是预期值(如千兆全双工),尝试 sudo ethtool -s eth0 autoneg on 强制重新协商。最后手段才是强制设置。
  3. 网络丢包或性能差?
    • ethtool -S eth0 | grep -i error -> 查看错误计数器是否在增长。
    • ethtool -k eth0 -> 检查卸载功能是否正常开启。
    • 持续运行 watch -d ethtool -S eth0 观察哪些计数器变化最快。
  4. 驱动问题?
    • ethtool -i eth0 -> 查看驱动和固件版本,与官方推荐版本对比。

总之,ethtool 是深入Linux网络栈底层的“手术刀”,提供了无可替代的详细硬件视图和控制能力。掌握它是成为Linux网络专家的关键一步。

iw命令

iw 是 Linux 系统中用于管理和配置无线网络接口的现代命令行工具,属于 iproute2 工具集的一部分。它替代了旧的 iwconfigiwlist 命令,支持更现代的无线功能(如 802.11ac/n、WPA3 等)

1. 基本语法

iw [options] <command> [args]

2. 常用子命令及功能

2.1 查看无线设备信息

列出所有无线设备(物理层和接口)

iw dev

输出示例

phy#0
    Interface wlan0
        ifindex 3
        type managed

查看具体网卡详细信息

iw dev wlan0 info

2.2 扫描附近的 Wi-Fi 网络

sudo iw dev wlan0 scan | grep -E "SSID|freq|signal"

2.3 连接/断开 Wi-Fi

连接到开放网络(无密码)

sudo iw dev wlan0 connect "MyWiFi"

2.4 管理无线接口模式

查看当前模式

iw dev wlan0 get type

切换模式(如 AP 模式)

sudo iw dev wlan0 set type __ap

2.5 监控信号强度

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)

sudo iw phy phy0 interface add vap0 type managed

3.2 设置发射功率(dBm)

sudo iw dev wlan0 set txpower fixed 20

3.3 查看支持的无线功能

iw list

关键信息

3.4 启用监控模式(抓包用)

sudo iw dev wlan0 set monitor none

4. 实际示例

4.1 查找最强信号的 Wi-Fi

sudo iw dev wlan0 scan | awk -F '[: ]' '/SSID/{ssid=$2} /signal/{print ssid, $2"dBm"}' | sort -k2 -n

4.2 检查当前连接的频段

iw dev wlan0 info | grep "channel"

5. 常见问题

Q1: iw 和 iwconfig 的区别?

Q2: 如何安装 iw?

Q3: 为什么 scan 命令无输出?

总结

iw 是 Linux 无线管理的核心工具,适合:

建议结合 ipnmcli 等工具使用,以全面管理网络。

以上就是Linux查看有线网卡和无线网卡的方法详解的详细内容,更多关于Linux查看有线和无线网卡的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文