Yoyo, chúng ta sẽ cùng tìm hiểu cách thức để kiểm tra xem card mạng của hệ thống Linux có đang được kết nối với hệ thống switch hay còn gọi dân dã là đã được cắm dây 2 đầu ăn hay chưa (Link state interface). Ở đây các bạn cũng nên lưu ý là nếu ‘down‘ trạng thái card mạng thì trước tiên nên kiểm tra xem card mạng đã được tắt bật bởi quá trình quản trị card mạng trên hệ thống hay không ?!
Mình sẽ trình bày 3 cách để kiểm tra xem 1 card mạng cụ thể trên Linux xem đã ở trạng thái ‘UP‘ hay ‘DOWN‘ tức trạng thái card mạng hiện có được up link giữa 2 đầu dây chưa ? đầu bên kia đã nối Switch ok chưa ?
Trong hướng dẫn này thì bạn cần chú ý tên card mạng tương ứng trên hệ thống của bạn để dễ thực thi lệnh. Ví dụ: trên Linux init system sẽ là card ‘eth0‘, trên Linux systemd sẽ thường là dạng card name ‘enp0s3‘ và các loại tên card mạng khác. Bạn có thể liệt kê tên card mạng bằng lệnh đơn giản sau :
# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether e6:a4:f7:88:0d:5a brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 inet6 fe80::e4a4:f7ff:fe88:d5a/64 scope link valid_lft forever preferred_lft forever
hay
# ifconfig eth0 Link encap:Ethernet HWaddr E6:A4:F7:88:0D:5A inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::e4a4:f7ff:fe88:d5a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:32919922 errors:0 dropped:6007 overruns:0 frame:0 TX packets:32108296 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:19150518997 (17.8 GiB) TX bytes:23894778531 (22.2 GiB) Interrupt:10 Base address:0x4000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:3556027 errors:0 dropped:0 overruns:0 frame:0 TX packets:3556027 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:810471545 (772.9 MiB) TX bytes:810471545 (772.9 MiB)
1. Cách 1 với file system hệ thống
– Dựa trên các file thông tin hệ thống liên quan đến card mạng.
# cat /sys/class/net/eth0/carrier 1
hoặc
# cat /sys/class/net/eth0/carrier 0
– Nếu bạn nhận được output là ‘1‘, điều đó chứng tỏ card mạng ‘eth0‘ đã được nối dây mạng và kết nối thành công với switch nên trạng thái tương ứng với UP. Ngược lại kết quả output là ‘0‘, thì chứng tỏ trạng thái dây mạng với card đã DOWN.
– Bạn cũng có thể kiểm tra qua file thông tin sau. Nếu ra kết quả là ‘up‘ thì card mạng đó đã kết nối thành công với Switch, còn nếu kết quả là ‘down‘ thì chứng tỏ card mạng của bạn đang bị lỏng dây mạng hoặc chưa được kết nối dây mạng.
# cat /sys/class/net/eth0/operstate up
hoặc
# cat /sys/class/net/eth0/operstate down
2. Cách 2 với lệnh ‘ethtool’
– Bạn có thể sử dụng một công cụ tên là ‘ethtool‘ được cài đặt mặc định trên nhiều hệ thống Linux và các bản phân phối. Công cụ ‘ethtool‘ sẽ được sử dụng để truy xuất thông tin và kiểm tra/kiểm soát các cấu hình thiết bị driver và các mạng.
# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: No Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 32 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes
– Ở đây giá trị output bạn cần quan tâm là ‘Link detected:‘ , nếu kết quả là ‘yes‘ thì card mạng đang up. Còn nếu kết quả là ‘no’ thì card mạng đang down.
# ethtool eth0 | grep "Link detected" yes
3. Cách 3 với lệnh ‘ip’
– Cách này cực kì đơn giản và phổ biến, đó là bạn có thể sử dụng công cụ lệnh ‘ip‘ để kiểm tra vấn đề UP/DOWN của card mạng. Bạn cũng có thể sử dụng lệnh ‘ifconfig‘ để thực hiện điều tương tự.
# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether e6:a4:f7:88:0d:5a brd ff:ff:ff:ff:ff:ff inet 123.30.129.167/27 brd 123.30.129.191 scope global eth0 inet6 fe80::e4a4:f7ff:fe88:d5a/64 scope link valid_lft forever preferred_lft forever
– Bạn thấy ở phần ‘eth0‘ giá trị state ‘UP‘ thể hiện card mạng đã được kết nối cắm dây mạng. Còn nếu ‘DOWN‘ thì thể hiện card mạng đã down.
Nếu còn cách nào hay ho hơn và tiện hơn thì bình luận ở dưới nè.