半生听风吟 2025-09-22 04:35 采纳率: 98.6%
浏览 1
已采纳

如何查看Linux网卡速率和型号?

如何在Linux系统中查看网卡的速率和型号?我尝试使用`ifconfig`命令,但未显示网卡速率信息。请问有哪些可靠的方法可以准确获取网卡的型号(如Intel I350或Broadcom BCM5720)以及当前链路速率(如1Gbps或100Mbps)?是否可以使用`ethtool`、`lspci`或`ip`命令实现?这些工具在不同发行版(如CentOS、Ubuntu)中是否存在兼容性差异?希望了解标准操作流程及常见输出字段解读方法。
  • 写回答

1条回答 默认 最新

  • 爱宝妈 2025-09-22 04:35
    关注

    一、基础认知:为什么 ifconfig 无法显示网卡速率?

    在传统 Linux 系统中,ifconfig 是一个用于配置和查看网络接口状态的经典工具。然而,它主要关注 IP 地址、子网掩码、广播地址等 TCP/IP 层信息,并不提供物理层(PHY)链路状态的详细数据,例如速率、双工模式或自动协商状态。

    现代 Linux 发行版已逐步弃用 ifconfig,转而推荐使用更强大且功能丰富的 ip 命令(来自 iproute2 工具包)。即便如此,ip link show 也只能显示接口是否“UP”,无法直接获取速率与硬件型号。

    要深入获取网卡的物理特性,必须依赖专门工具如 ethtoollspci,它们分别从驱动层和 PCI 总线层面提取信息。

    二、核心工具详解:如何使用 ethtool 查看链路速率

    ethtool 是 Linux 下最权威的以太网设备诊断工具,可查询并修改网卡驱动参数。其基本语法如下:

    # 安装 ethtool(若未预装)
    # CentOS/RHEL:
    sudo yum install ethtool
    # Ubuntu/Debian:
    sudo apt-get install ethtool
    
    # 查看指定网卡的详细信息
    sudo ethtool eth0
    

    输出示例:

    Settings for eth0:
    	Supported ports: [ TP ]
    	Supported link modes:   10baseT/Half 10baseT/Full 
    	                        100baseT/Half 100baseT/Full 
    	                        1000baseT/Full 
    	Speed: 1000Mb/s
    	Duplex: Full
    	Port: Twisted Pair
    	PHYAD: 1
    	Transceiver: internal
    	Auto-negotiation: on
    	Current message level: 0x00000007 (7)
    		           drv probe link
    	Link detected: yes
    
    • Speed: 显示当前链路速率(如 1000Mb/s)
    • Duplex: 双工模式(Full/Half)
    • Link detected: 是否检测到物理连接
    • Supported link modes: 支持的速率和模式列表

    三、硬件识别:利用 lspci 获取网卡型号

    要确定网卡的具体型号(如 Intel I350 或 Broadcom BCM5720),需通过 PCI 设备枚举命令 lspci 进行查询。

    # 列出所有网络控制器
    lspci | grep -i ethernet
    
    # 输出示例:
    02:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
    03:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 Gigabit Ethernet PCIe (rev 01)
    

    进一步获取详细设备信息:

    lspci -v -s 02:00.0
    
    字段含义
    Kernel driver in use当前加载的驱动模块(如 igb)
    Kernel modules可能使用的内核模块(如 igb, e1000e)
    I/O ports设备I/O端口范围
    Memory at ...内存映射地址空间
    Capabilities支持的功能(如 MSI, PM)

    四、补充手段:ipdmidecode 的协同作用

    虽然 ip 命令不能直接显示速率,但可用于快速定位接口名称:

    ip link show
    # 输出包含接口名、MAC地址、状态等
    2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether b8:ca:3a:ef:12:34 brd ff:ff:ff:ff:ff:ff
    

    结合 ethtool enp2s0f0 即可精准定位。

    对于服务器平台,还可使用 dmidecode 查询主板集成网卡信息:

    sudo dmidecode -t system
    sudo dmidecode -t baseboard
    

    五、跨发行版兼容性分析与标准化流程

    不同 Linux 发行版对上述工具的支持情况高度一致,原因在于这些工具属于核心系统组件:

    • ethtool: 所有主流发行版默认或可通过包管理器安装
    • lspci: 来自 pciutils 包,普遍预装
    • ip: 替代 ifconfig 的标准工具,由 iproute2 提供

    以下是标准化操作流程图:

    graph TD
        A[开始] --> B{获取接口名}
        B --> C[ip link show 或 ifconfig]
        C --> D[选择目标接口如 eth0/enpXsY]
        D --> E[执行 ethtool <interface>]
        E --> F[查看 Speed/Duplex/Link detected]
        D --> G[执行 lspci | grep -i ethernet]
        G --> H[定位 PCI 地址]
        H --> I[lspci -v -s <address>]
        I --> J[解析厂商与型号]
        J --> K[完成信息采集]
    

    六、高级技巧与常见问题排查

    当出现速率异常(如本应千兆却显示 100Mbps)时,可进行以下检查:

    1. 确认对端设备(交换机)端口速率设置是否匹配
    2. 检查网线质量(Cat5e 及以上支持千兆)
    3. 强制设置速率(慎用):sudo ethtool -s eth0 speed 1000 duplex full autoneg off
    4. 查看驱动日志:dmesg | grep igb(假设为 igb 驱动)
    5. 更新固件或驱动版本以支持新硬件特性

    某些虚拟化环境中(如 VMware、KVM),虚拟网卡可能显示为 "VMXNET3" 或 "virtio",此时物理型号不可见,需在宿主机上使用 lscpu 或管理工具确认底层硬件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月22日