linux下网卡链路状态检测方法

linux下网卡链路状态检测方法

可用方法:

1、ip addr | grep LOWER_UP

2、ethtool eth0 | grep detect

3、mii-tool -w ethx 这三个命令来查看网线是否插着,并且物理状态是否激活?

问题由来:

遇到外场故障,反馈直接断电更换机柜后一个无线核心网服务器运行不正常,所有基站都无法连接核心网设备。,接显示器发现arp -n,ip neigh list后,发现服务器上没有任何基站的mac地址,ifconfig eth0发现链路是up态。让直连设备,反馈也ping不通,抓包发现arp请求消息没有回,查看网卡eth0的收发都是0,判断网卡故障,建议让dell服务器厂家进行检测,反馈检测网卡正常。判断为更换系统故障,让用户备份数据,准备重装centos系统。等服务人员到达现场发现,客户把网线查到服务器的idrac接口上,而不是eth0口上,改接回来后发现业务正常。

当时ifconfig看eth0是up态,为什么会没有没发现插线呢?显然受了这个命令的误导。

在公司模拟,发现ifconfig无论是否插网线,均显示up态。但断线后仅仅少了running的标志位。

发现用ifconfig,ip addr,ethtool,mii-tool才能检测线路的物理状态。

对比验证:

分别插上网线,拔掉网线用几个命令进行进行对比测试。

插上网线,并点亮网卡灯,通过双工和速率协商后的几个命令显示如下:

Thu Aug 1 16:31:05 CST 2019 开始测试链路物理状态

ifconfig eth0

eth0 Link encap:Ethernet HWaddr C8:1F:66:E4:1A:0A

inet6 addr: fe80::ca1f:66ff:fee4:1a0a/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1(网线插上并且点亮状态灯是有running显示)

RX packets:22464301 errors:0 dropped:0 overruns:0 frame:0

TX packets:147296815 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2475109636 (2.3 GiB) TX bytes:18645815710 (17.3 GiB)

Interrupt:35

ip addr | grep stat 出现LOWER_UP,stat变成up态。

1: lo: mtu 16436 qdisc noqueue state UNKNOWN

2: eth0: mtu 1500 qdisc mq state UP qlen 1000

3: eth1: mtu 1500 qdisc noop state DOWN qlen 1000

4: eth2: mtu 1500 qdisc noop state DOWN qlen 1000

5: eth3: mtu 1500 qdisc noop state DOWN qlen 1000ethtool eth0 | grep detect

Link detected: yes 连接检测为yesThu Aug 1 16:31:05 CST 2019 开始拔出网线进行几个命令的测试。

NOW pull out the wire plug (拔出网线插头)

现在拔掉网线执行几个命令显示:

ifconfig eth0 (发现ifconfig不能测试链路状态,都是up态)

eth0 Link encap:Ethernet HWaddr C8:1F:66:E4:1A:0A

inet6 addr: fe80::ca1f:66ff:fee4:1a0a/64 Scope:Link

UP BROADCAST MULTICAST MTU:1500 Metric:1(拔掉网线后没有running的显示)

RX packets:22464315 errors:0 dropped:0 overruns:0 frame:0

TX packets:147297002 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2475110672 (2.3 GiB) TX bytes:18645839744 (17.3 GiB)

Interrupt:35

ip addr | grep stat (可以看到链路的物理状态,可以看到状态down,有没有载波的NO-CARRIER的显示,LOWER_UP消失,stat变成down)

1: lo: mtu 16436 qdisc noqueue state UNKNOWN

2: eth0: mtu 1500 qdisc mq state DOWN qlen 1000

3: eth1: mtu 1500 qdisc noop state DOWN qlen 1000

4: eth2: mtu 1500 qdisc noop state DOWN qlen 1000

5: eth3: mtu 1500 qdisc noop state DOWN qlen 1000ethtool eth0 | grep detect (检测到没有载波)

Link detected: no 连接检测为no

NOW pull on the wire plugmii-tool -w eth0 (跟踪物理链路并且激活状态灯,可以看到连接是否在线)

16:31:12 eth0: no link (发现没有连接)

16:31:20 eth0: negotiated 100baseTx-FD, link ok(发现)

测试时可以用ethtool -p eth0来确定测试网卡是哪一个,命令执行时网卡的双灯会一秒一闪。

ctrl+c来中断这个命令的执行。

结论:

ifconfig ethx不可靠,可用ip addr,ethtool ,mil-tool命令来确认。

也可以用route -n显示路由来根据直连路由的是否生成来确定,因为接口down,对应配置的ip的直连路由也就失效了,路由就消失,查询不到。

相关推荐

晚上励志文案

晚上励志文案

09-23 💫 8957
华山长空栈道:门票价格、开放时间及游览攻略
杯子掉漆怎么修复

杯子掉漆怎么修复

08-25 💫 6359
Dashboard介绍

Dashboard介绍

09-17 💫 8827

本文标签