Làm cách nào để kiểm tra trạng thái vật lý của cổng ethernet trong Linux?


64

Tôi muốn kiểm tra xem một ethX được chỉ định là lên hay xuống. Làm thế nào để tôi làm điều đó với dòng lệnh?

Câu trả lời:


68

$ ethtool <eth?>

Ví dụ:

$ ethtool eth0

cung cấp:

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 pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000001 (1)
        Link detected: yes

46

Kiểm tra /sys/class/net/eth0/operstatevà các tập tin khác trong thư mục này.

Theo tôi biết điều này là dành riêng cho Linux 2.6+, nhưng nó cung cấp giao diện sạch cho trình điều khiển kernel.

Tài liệu đầy đủ cho phần này của syshệ thống tập tin có thể được tìm thấy ở đây:

https://www.kernel.org/doc/Documentation/ABI/testing/sysfs- class-net


10
/ sys / class / net / eth0 / Carrier là câu trả lời hoàn hảo cho câu hỏi này đối với tôi.
Per Knytt

Câu trả lời chính xác. Một phụ lục nhỏ: / run / network / ifstate cũng có một số thông tin hữu ích.
Paulo André Haacke

34

ethtool [interface]

dòng cuối cùng cho thấy những gì bạn muốn:

# ethtool eth0
Cài đặt cho eth0:
        Các cổng được hỗ trợ: [TP]
        Các chế độ liên kết được hỗ trợ: 10baseT / Nửa 10baseT / Full 
                                100baseT / Nửa 100baseT / Đầy đủ 
                                1000baseT / Đầy đủ 
        Hỗ trợ tự động đàm phán: Có
        Chế độ liên kết được quảng cáo: 10baseT / Half 10baseT / Full 
                                100baseT / Nửa 100baseT / Đầy đủ 
                                1000baseT / Đầy đủ 
        Quảng cáo tự động đàm phán: Có
        Tốc độ: 1000Mb / giây
        Hai mặt: Đầy đủ
        Cổng: Cặp xoắn
        PHONG: 0
        Bộ thu phát: nội bộ
        Tự động đàm phán: trên
        Hỗ trợ Wake-on: g
        Thức dậy: d
        Cấp độ tin nhắn hiện tại: 0x00000037 (55)
        Liên kết được phát hiện: có

4
Nếu bạn kiểm tra điều này: vi.wikipedia.org/wiki/OSI_model . Bạn sẽ thấy rằng dòng cuối cùng là về một lớp khác: lớp liên kết. Tôi chỉ thử nghiệm điều này. Với một dây cáp xấu, lớp vật lý đã lên, nhưng không phải là lớp liên kết. Sau đó, tôi chuyển sang cáp khác và tất cả các lớp xuất hiện.
Jader Dias

25
ip link show

là một cái khác. Tốt tuổi

ifconfig dev_name

hoặc là

ifconfig -a

cũng sẽ cho bạn biết nếu giao diện được bật lên. LƯU Ý: Hãy thận trọng với các phương pháp này vì chúng có thể hiển thị thông tin lỗi thời liên quan đến trạng thái của liên kết.


Tôi nghĩ rằng đây là câu trả lời tốt nhất - ethtool không phải là tiêu chuẩn trong phân phối Ubuntu của tôi, vì vậy nó không hữu ích nếu trên một hộp không được kết nối với mạng.
user20010

4
Tôi tin rằng ifconfig đôi khi sẽ hiển thị hết dữ liệu. Nó có thể hiển thị LÊN khi liên kết không hoạt động, nhưng giao diện ethtool sẽ luôn hiển thị đúng thông tin AFAIK.
sed_and_done 8/10/2015

2
Tôi nghĩ @sed_and_done là đúng. Trên một Red Hat VM, nếu tôi ngắt kết nối NIC, ethtool ngay lập tức cho thấy Link detected: nothay vì Link detected: yes, và ip liên kết hiển thị cho thấy <NO-CARRIER,BROADCAST,MULTICAST,UP>thay vì <BROADCAST,MULTICAST,UP,LOWER_UP>, nhưng ifconfig -a chương trình UP BROADCAST MULTICAST MTU:1500 Metric:1, đó là giống như khi NIC được kết nối.
Adi Inbar

16
dmesg | grep eth

bạn sẽ thấy tất cả các trao đổi trạng thái


Đây là cái duy nhất hoạt động nếu thiếu một đặc quyền quản trị viên.
Brian B

dmesg yêu cầu root trên Slackware 14.0
AnonymousLurker

Không, nó không. Tôi chỉ kiểm tra - trong khi nó hoạt động với tôi trên eth0thiết bị, nhưng nó không hoạt động trên eth2thiết bị.
Hi-Angel

9

Bạn cũng có thể sử dụng mii-tool để xem liên kết có hoạt động không và kiểm tra tốc độ thương lượng.

# mii-tool
eth0: đã đàm phán 100baseTx-FD, liên kết ok


4
mii-tool không được dùng nữa và không hoạt động cho các giao diện GbE.
Dave Cheney

2
@DaveCheney# mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok
stolsvik

Trang man cho mii-tool gợi ý sử dụng ethtool. Tuy nhiên, mii-tool tiếp tục thực hiện công việc của mình, hữu ích hơn nếu được cung cấp tùy chọn -v (verbose).
David Ramirez

3

Bạn có thể có đầy đủ chi tiết với lệnh dưới đây

ethtool eth0

Và nếu bạn chỉ muốn xem trạng thái liên kết, lệnh đưa ra bên dưới

mii-tool eth0

2

Nếu hệ thống của bạn đang sử dụng ifplugd(ví dụ: trên Raspberry Pi với Raspbian) thì bạn có thể sử dụng công cụ trạng thái ifplugstatusđược liên kết để lấy trạng thái liên kết của tất cả các giao diện:

ifplugstatus

hoặc một giao diện cụ thể (ví dụ eth0):

ifplugstatus eth0

2

netplugd là một dịch vụ có thể chạy (các) chương trình khi cắm cáp hoặc rút cáp ra. Vì vậy, dòng lệnh sẽ là grep / var / log / message hoặc dmesg cho đầu ra netplugd.


Vâng, không chính xác câu trả lời được yêu cầu, nhưng một câu hỏi thú vị để biết. Ít nhất là đối với tôi.
Sopalajo de Arrierez

2

Để nhanh chóng thêm vào câu trả lời của @ goo , bạn sẽ diễn giải ip linkhoặc ip link show INTERFACEnhư sau.

Đây là một cổng được quản lý lên, nhưng về thể chất:

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

Nói cách khác, UPbạn có thể thấy hệ thống được cấu hình để thử và sử dụng NIC để kết nối mạng. Ở NO-CARRIERđây cho bạn biết vấn đề ngăn chặn mạng hoạt động là gì.

Đây là một cổng bị quản lý xuống (lớp vật lý của nó là 'lên', về mặt kỹ thuật - đó là một VM):

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

Cuối cùng, cổng này hoạt động bình thường:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000

Về mặt hành chính UP, lớp LOWER_UPbiểu thị lớp vật lý đang hoạt động (tức là có sóng mang) và lớp thứ hai UPxác nhận (có hiệu lực) lớp IP đang hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.