Sử dụng lệnh ethtool để theo dõi hoạt động của mạng trong Linux

Tác giả: VPS chính hãng 03 tháng 01, 2024

Lệnh ethtool đề cập đến công cụ dòng lệnh mạng cấu hình các thiết bị ethernet trong Linux. Nó được cài đặt sẵn trong hầu hết các bản phân phối Linux. Ngoài ra, nó còn cung cấp thông tin về thiết bị ethernet và cho phép người dùng Linux sửa đổi các thông số. Blog này này sẽ chia sẻ cách để theo dõi hoạt động mạng trong Linux bằng lệnh ethtool với sự trợ giúp của các ví dụ thực tế. Hãy cùng bắt đầu!

Cú pháp cơ bản của lệnh ethtool

Lệnh “ethtool” phụ thuộc vào cú pháp cơ bản được gõ bên dưới:

$ ethtool [options] [device-name]

Cú pháp trên chứa các tham số sau:

  • ethtool: Từ khóa chính biểu thị lệnh “ethtool”.
  • options: Các tùy chọn liên quan của lệnh “ethtool”
  • device-name: Chỉ định tên thiết bị ethernet.

Thực thi lệnh “man” được liên kết với tiện ích “ethtool” để biết thông tin chi tiết ngắn gọn về nó, tức là các tùy chọn được hỗ trợ:

$ man ethtool

Cuộn xuống trang để có thêm tùy chọn. Để thực thi tốt các thao tác lệnh trên thiết bị, bạn có thể trang bị cho mình một máy chủ Linux tốt hoặc đăng ký mua VPS Linux Việt Nam để có tốc độ mạng và bảo mật tốt nhất. Bây giờ hãy chuyển sang các ví dụ thực tế về lệnh “ethtool”.

9 ví dụ về sử dụng lệnh ethtool Linux để theo dõi hoạt động của mạng

1. Liệt kê thuộc tính thiết bị Ethernet

Khi bạn thực thi lệnh ethtool với tên thiết bị, nó sẽ hiển thị thông tin sau về thiết bị ethernet.

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Link detected: yes

Đầu ra ethtool ở trên hiển thị các thuộc tính của thẻ ethernet, sau đây là ba loại duplex có sẵn.

  • Full duplex: Cho phép gửi và nhận gói tin cùng một lúc. Chế độ này được sử dụng khi thiết bị ethernet được kết nối với bộ chuyển mạch.
  • Half duplex: Cho phép gửi hoặc nhận gói tại một thời điểm. Chế độ này được sử dụng khi thiết bị ethernet được kết nối với hub.
  • Auto-negotiation: Nếu được bật, thiết bị ethernet sẽ tự quyết định nên sử dụng Full duplex hay Half duplex dựa trên mạng mà thiết bị ethernet được gắn vào.
Thuộc tính của ethernet sẽ được hiển thị khi chạy lệnh ethtool với tên thiết bị

Thuộc tính của ethernet sẽ được hiển thị khi chạy lệnh ethtool với tên thiết bị

2. Thay đổi tham số NIC bằng tùy chọn ethtool -s autoneg

Đầu ra ethtool eth0 ở trên hiển thị rằng tham số “Auto-negotiation” đang ở trạng thái bật. Bạn có thể tắt tính năng này bằng tùy chọn autoneg trong ethtool như hiển thị bên dưới.

# ifdown eth0
    eth0      device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
    eth0      configuration: eth-bus-pci-0000:0b:00.0

# ethtool  -s eth0 autoneg off

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised auto-negotiation: No
        Speed: Unknown! (65535)
        Duplex: Unknown! (255)
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: g
        Wake-on: g
        Link detected: no
# ifup eth0

Sau thay đổi ở trên, bạn có thể thấy giá trị “link detection” đã giảm xuống và tính năng tự động đàm phán ở trạng thái tắt.

3. Thay đổi tốc độ của thiết bị Ethernet

Sử dụng lệnh ethtool, bạn có thể thay đổi tốc độ của thiết bị ethernet để hoạt động với một số thiết bị mạng nhất định và giá trị tốc độ mới được chỉ định phải nằm trong dung lượng giới hạn.

# ethtool -s eth0 speed 100 autoneg off

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised auto-negotiation: No
        Speed: Unknown! (65535)
        Duplex: Unknown! (255)
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: g
        Wake-on: g
        Link detected: no

Sau khi bạn thay đổi tốc độ khi bộ điều hợp trực tuyến, nó sẽ tự động ngoại tuyến và bạn cần đưa nó trực tuyến trở lại bằng lệnh ifup.

# ifup eth0
    eth0      device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
    eth0      configuration: eth-bus-pci-0000:0b:00.0
Checking for network time protocol daemon (NTPD):                     running

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised auto-negotiation: No
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: g
        Wake-on: g
        Link detected: yes

Như được hiển thị ở đầu ra ở trên, tốc độ đã thay đổi từ 1000Mb/s thành 100Mb/s và thông số auto-negotiation không được đặt.

4. Hiển thị cài đặt trình điều khiển Ethernet

Tùy chọn ethtool -i hiển thị phiên bản trình điều khiển, phiên bản chương trình cơ sở và chi tiết bus như hiển thị bên dưới.

# ethtool -i eth0
driver: bnx2
version: 2.0.1-suse
firmware-version: 1.9.3
bus-info: 0000:04:00.0
Cài đặt trình điều khiển sẽ được hiển thị với tùy chọn ethtool -i

Cài đặt trình điều khiển sẽ được hiển thị với tùy chọn ethtool -i

5. Hiển thị Auto-negotiation, RX và TX của eth0

Xem chi tiết autonegotiation về thiết bị ethernet cụ thể như hiển thị bên dưới.

# ethtool -a eth0
Pause parameters for eth0:
Autonegotiate:  on
RX:             on
TX:             on

6. Thống kê mạng hiển thị của thiết bị Ethernet cụ thể

Sử dụng tùy chọn ethtool -S để hiển thị các byte được truyền, nhận, lỗi, v.v., như hiển thị bên dưới.

# ethtool -S eth0
NIC statistics:
     rx_bytes: 74356477841
     rx_error_bytes: 0
     tx_bytes: 110725861146
     tx_error_bytes: 0
     rx_ucast_packets: 104169941
     rx_mcast_packets: 138831
     rx_bcast_packets: 59543904
     tx_ucast_packets: 118118510
     tx_mcast_packets: 10137453
     tx_bcast_packets: 2221841
     tx_mac_errors: 0
     tx_carrier_errors: 0
     rx_crc_errors: 0
     rx_align_errors: 0
     tx_single_collisions: 0
     tx_multi_collisions: 0
     tx_deferred: 0
     tx_excess_collisions: 0
     tx_late_collisions: 0
     tx_total_collisions: 0
     rx_fragments: 0
     rx_jabbers: 0
     rx_undersize_packets: 0
     rx_oversize_packets: 0
     rx_64_byte_packets: 61154057
     rx_65_to_127_byte_packets: 55038726
     rx_128_to_255_byte_packets: 426962
     rx_256_to_511_byte_packets: 3573763
     rx_512_to_1023_byte_packets: 893173
     rx_1024_to_1522_byte_packets: 42765995
     rx_1523_to_9022_byte_packets: 0
     tx_64_byte_packets: 3633165
     tx_65_to_127_byte_packets: 51169838
     tx_128_to_255_byte_packets: 3812067
     tx_256_to_511_byte_packets: 113766
     tx_512_to_1023_byte_packets: 104081
     tx_1024_to_1522_byte_packets: 71644887
     tx_1523_to_9022_byte_packets: 0
     rx_xon_frames: 0
     rx_xoff_frames: 0
     tx_xon_frames: 0
     tx_xoff_frames: 0
     rx_mac_ctrl_frames: 0
     rx_filtered_packets: 14596600
     rx_discards: 0
     rx_fw_discards: 0

7. Khắc phục sự cố kết nối Ethernet

Khi có sự cố với kết nối mạng, bạn có thể muốn kiểm tra (hoặc thay đổi) các tham số của thiết bị ethernet được giải thích trong các ví dụ trên, khi bạn thấy các sự cố sau trong đầu ra của lệnh ethtool.

  • Tốc độ và giá trị Duplex được hiển thị là Unknown (Không xác định).
  • Giá trị Link detection được hiển thị là No (Không).

Sau khi kết nối thành công, ba tham số nêu trên sẽ có giá trị phù hợp. tức là Speed (Tốc độ) được gán với giá trị đã biết, Duplex trở thành Full/Half và Link detection trở thành Yes. Sau những thay đổi trên, nếu Link detection vẫn báo “No”, hãy kiểm tra xem có bất kỳ vấn đề nào trong cáp chạy từ bộ chuyển mạch và hệ thống hay không.

Để nắm bắt và phân tích các gói từ một giao diện mạng cụ thể, hãy sử dụng lệnh tcpdump.

8. Nhận dạng thiết bị cụ thể từ nhiều thiết bị (Cổng LED nhấp nháy của thẻ NIC)

Giả sử bạn có một máy có bốn bộ điều hợp ethernet và bạn muốn xác định cổng vật lý của một thẻ ethernet cụ thể. (Ví dụ: eth0). Sử dụng tùy chọn ethtool -p, tùy chọn này sẽ làm cho đèn LED tương ứng của cổng vật lý nhấp nháy.

# ethtool -p eth0

9. Thực hiện thay đổi vĩnh viễn sau khi khởi động lại

Nếu bạn đã thay đổi bất kỳ thông số nào của thiết bị ethernet bằng ethtool, tất cả thông số đó sẽ biến mất sau lần khởi động lại tiếp theo, trừ khi bạn làm như sau. Trên Ubuntu, bạn phải sửa đổi tệp /etc/network/interfaces và thêm tất cả các thay đổi của mình như hiển thị bên dưới.

# vim /etc/network/interfaces
post-up ethtool -s eth2 speed 1000 duplex full autoneg off

Dòng trên phải là dòng cuối cùng của tập tin. Điều này sẽ thay đổi vĩnh viễn tốc độ, duplex và autoneg của thiết bị eth2.

Trên SUSE, sửa đổi tệp /etc/sysconfig/network/ifcfg-eth-id và bao gồm tập lệnh mới sử dụng biến POST_UP_SCRIPT như hiển thị bên dưới. Bao gồm dòng dưới đây là dòng cuối cùng trong tệp cấu hình adpater eth1 tương ứng.

# vim /etc/sysconfig/network/ifcfg-eth-id
POST_UP_SCRIPT='eth1'

Sau đó, tạo một tệp mới scripts/eth1 như hiển thị bên dưới trong thư mục /etc/sysconfig/network. Đảm bảo rằng tập lệnh có quyền thực thi và đảm bảo rằng tiện ích ethtool có trong thư mục /sbin.

# cd /etc/sysconfig/network/

# vim scripts/eth1
#!/bin/bash
/sbin/ethtool -s duplex full speed 100 autoneg off

Và đó là 9 ví dụ về cách sử dụng lệnh ethtool để theo dõi hoạt động của mạng trong Linux.

Linux và hầu hết các bản phân phối của nó đều hỗ trợ tiện ích dòng lệnh mạng “ethtool” để hiển thị và quản lý các thiết bị giao diện mạng. Nó đi kèm với một danh sách các tùy chọn được hỗ trợ nhằm cung cấp đầu ra mong muốn theo yêu cầu và sửa đổi các tham số của nó. Bài viết này đã minh họa ngắn gọn lệnh “ethtool” với sự trợ giúp của các ví dụ thực tế. Để tìm hiểu thêm về những lệnh hữu ích của Linux hãy truy cập vpschinhhang.com và khám phá những ưu đãi hấp dẫn khi mua VPS nhân dịp chào đón năm mới 2024! Cảm ơn đã theo dõi bài viết!