如何解决CentOS网卡不能自动联网的问题

您所在的位置:网站首页 如何查看usb网卡型号 如何解决CentOS网卡不能自动联网的问题

如何解决CentOS网卡不能自动联网的问题

2023-03-23 16:00| 来源: 网络整理| 查看: 265

手上有个技嘉的迷你pc,安装了CentOS 6.6,通过ifcfg配置了静态ip。但是这个pc有个很奇怪的现象,就是如果开机的时候网线没有插上,等开机以后再插网线,或者开机以后拔出网线再插上,这个静态IP就无效了,表现为其他电脑无法ping通这个ip,这台pc也无法ping通网关。这时必须手动ifdown再ifup重启网卡,还要过很久一会才能重新联网。开始以为是网卡配置问题,google了很久,试了各种各样的办法例如修改ifcfg的配置,安装NetworkManager,安装netplug,总之各种折腾,依然没有解决问题。通过tcpdump抓包,发现在重新插上网线的时候,网卡接收不到来自局域网的ARP、组播等数据包,ping网关之前主机会发送ARP咨询网关对应的MAC地址,但是没有收到响应导致无法ping出去。于是开始怀疑是网卡驱动有问题。百度了一下,也说CentOS自带的r8169驱动太古老了,问题多多。

先用lspci查看网卡的型号

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

8168和8169型号不要弄错了。CentOS默认只有8169的驱动,所以用来驱动8168的网卡总是怪怪的

http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

在realtek官网下载r8168的linux驱动0010-r8168-8.045.08.tar.bz2。安装步骤参考里面的readme文件

不过,realtek官网的说明实际上还是省略了一些步骤。要编译驱动,首先要安装内核源码和gcc、perl

yum install perl gcc

内核源码不要用yum安装。因为yum安装的是内核的最新版本,可能会比系统当前的内核版本高,导致驱动无法运行。如果要用yum安装kernel-devel,要先yum update把内核升级到最新版本。否则,从centos光盘的Packages目录找到kernel-devel的rpm包,用rpm -ivh安装进去。

r8168的驱动代码在centos 6.6之中会有一个编译错误。编辑src/r8168.h,把eth_hw_addr_random的定义注释掉

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0) static inline void eth_hw_addr_random(struct net_device *dev) { random_ether_addr(dev->dev_addr); } #endif

安装完r8168驱动之后,把原来的r8169驱动改个名字,避免下次重启的时候又加载到错误的驱动

cd /lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/net mv r8169.ko r8169.ko.bak depmod -a



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3