如何阻止我的以太网网络连接断开?


16

我的基于以太网的网络连接无法保持一致。我正在对网关执行ping操作,它将执行以下操作:

  • 工作一分钟
  • 冻结,超时或给出几秒钟的响应时间
  • 重复

如果卡住了,并且我通过网络管理器applet禁用/启用了网络连接,那么一分钟后一切将再次正常运行。传输280个数据包后,我的数据包丢失了41%。我尝试了另一条电缆和与网关的连接,但这没有任何效果。到网关的距离仅约3英尺。

如果我切换到Windows,似乎可以正常工作,但是Ubuntu是我的主要操作系统,由于依赖网络,我什至无法使用它。

我的设定...

  • 操作系统:Ubuntu 11.04,Windows 7双启动
  • 主板:技嘉Z68X-UD4-B3
  • 处理器:Intel Core i7 2600K

编辑

稍微澄清一下……网络管理器仍向我显示已连接,但我无法访问网关或其他任何设备。NM绝不表示连接丢失,并且调用ifconfig显示我仍然有一个IP地址。

我尝试使用不同的电缆连接到不同的网关,并且出现相同的问题。

按照要求:

lspci | grep -i eth
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)

dmesg | tail -f
[   14.024709] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro,commit=0
[   14.026443] EXT4-fs (sda7): re-mounted. Opts: commit=0
[   14.176101] hda-intel: IRQ timing workaround is activated for card #2. Suggest a bigger bdl_pos_adj.
[   23.917731] eth0: no IPv6 routers present
[  726.109697] r8169 0000:07:00.0: eth0: link up
[  733.169494] r8169 0000:07:00.0: eth0: link up
[  753.930119] r8169 0000:07:00.0: eth0: link up
[  880.787332] r8169 0000:07:00.0: eth0: link up
[ 1159.161283] r8169 0000:07:00.0: eth0: link up
[ 1406.623550] r8169 0000:07:00.0: eth0: link up

编辑

@ roland-taylor:网络在Windows下始终可用。Ping不超时,应用程序不抱怨网络不可用,大下载量不会中断或减慢。


2
从理论上讲,问题可能出在网关上。您是否尝试过使用其他网关?
罗宾·格林

2
我认为主板或CPU在这里没有太大的意义。lspci | grep -i eth可能更具有信息性,并且正在加载哪个模块,正在运行dhcp,dmesg | tail -f从连接到断开连接都说明了什么。
用户未知

您说它“似乎可以在Windows中正常工作”,但是您真的确定吗?
RolandiXor

Answers:


13

下载官方的realtek驱动程序。

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

然后从Linux内核中删除r8169模块。

# rmmod r8169

<Quick install with proper kernel settings>
Unpack the tarball :
# tar vjxf r8168-8.aaa.bb.tar.bz2
Change to the directory:
# cd r8168-8.aaa.bb
If you are running the target kernel, then you should be able to do :
# ./autorun.sh (as root or with sudo)
You can check whether the driver is loaded by using following commands.
# lsmod | grep r8168
# ifconfig -a
If there is a device name, ethX, shown on the monitor, the linux
driver is loaded. Then, you can use the following command to activate
the ethX.
# ifconfig ethX up

最后,将r8169驱动程序列入黑名单,将以下内容添加到/etc/modprobe.d/blacklist.conf:

#blacklist r8169 driver
blacklist r8169

我在http://www.rvdavid.net/how-to-get-gigabit-speeds-from-rtl81118168b-pci-express-gigabit-ethernet-controller-on-ubuntu-linux/上找到了它,并且可以正常工作。现在,网络速度一切都很好。


这很好用!现在,我的网络连接稳定了,我已经能够继续从旧台式机迁移到该台式机了。我会投票赞成您,但显然我需要更多声誉...我会理解,但考虑到这是我的问题,这似乎很奇怪。
肖恩·希尔

谢谢您的帮助,但是重启后我仍然无法上网。将模块列入黑名单似乎存在潜在的问题。在此帖子的评论中有更多信息。
德鲁

重新启动后才能上网,我从这里执行了ubuntuforums.org/showthread.php?t=723569的某些步骤,但从源代码进行编译
老兄

我更新到gnome3并丢失了此模块覆盖,看来您需要为每个内核更新执行以下步骤。我不确定initramfs是做什么的,但是在更新之前我没有做过。我刚刚运行了它,并更新了当前内核的启动ramfs,也许它也会更新新的/ cross finger
Drew

你在用这个吗?您注意到这些问题了吗?这里有一些有关使用DKMS自动化升级到新内核的提示djlab.com/2010/10/fixing-rtl8111-8168b-driver-debian-ubuntu
Drew

8

以便下次我的SSD烧毁时可以找到它。以下是在Linux / Linux Kernel 3.x上删除损坏的r8169以及在Ubuntu上插入r8168的说明。

内核3.x

  • 下载r8168
  • 如果仍标记为未解决,请应用此补丁
  • 停止:如果您打算使用DKMS,请立即跳至DKMS部分。
  • 运行sudo ./autogen.sh,它将构建模块,删除旧模块(如果需要,将其列入黑名单),然后将r8168.ko安装到/ lib / modules /'uname -r'/ drivers / net /。

DKMS

DKMS将在安装新内核后构建并安装该模块。您还需要将旧模块列入黑名单。

如果尚未将旧模块列入黑名单。

echo 'rmmod r8169' | sudo tee /etc/modprobe.d/blacklist.conf

安装DKMS和gcc。

sudo apt-get install dkms gcc

将模块源文件复制到一个持久位置,这样您以后就不会意外删除它们。

sudo cp -R r8168-8.025.00 /usr/src

echo 'PACKAGE_NAME=r8168
PACKAGE_VERSION=8.025.00
MAKE[0]="make"
BUILT_MODULE_NAME[0]=r8168
BUILT_MODULE_LOCATION[0]="src/"
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
AUTOINSTALL="YES"' | sudo tee /usr/src/r8168-8.025.00/dkms.conf

然后跑

dkms add -m r8168 -v 8.025.00
dkms build -m r8168 -v 8.025.00
dkms install -m r8168 -v 8.019.00
sudo update-initramfs -u

1
+1个好帖子。您可能会丢失update-initramfs命令
bbaja42 2011年

我已经使用了很多次,但从未见过任何区别,您确定网络模块需要这样做吗?实际上,为了安全起见,我将其包括在内。我逐步完成该过程以确保一切正常时,编写了该指南。我可能以前曾在构建/安装/无论模块如何时运行此程序。
德鲁

今天,我交换了路由器,然后GA-Z68X-UD3H-B3(运行Kubuntu 11.10 64位)上的RTL8111E停止工作:即使可以建立网络连接,也没有传输任何数据包(ping到路由器时,“目的主机无法访问”)。在make modules插入模块之后,它又可以工作了。之后rmmod荷兰国际集团新的模块,并加载旧的,网络再次合作。重新启动后也是如此。我不确定是什么因素使此NIC重新工作(rmmod / insmod与rmmod / insmod新模块),但是希望它对某人有所帮助。
Lekensteyn


0

可能有用

如果在某些系统上双启动Windows,则可能会遇到r8169驱动程序问题。Windows默认情况下会在Windows关闭时禁用NIC,以禁用“局域网唤醒”,并且此NIC将保持禁用状态,直到Windows下次将其打开为止。内核中的r8169驱动程序不知道如何从此禁用状态打开NIC。因此,即使驱动程序加载并报告设备已启动,设备也不会响应。要变通解决此问题,只需启用功能“关机后唤醒”。您可以通过Windows的设备管理器设置此选项。

编辑:2.6.19.5和2.6.20.8内核中也存在与Windows双重引导的问题,因此可以安全地假设它将涉及所有2.6内核,直到内核开发人员将RTL8168的驱动程序更新为将能够的版本为止。从禁用状态打开网卡



0

勘误表:

echo 'blacklist r8169' | sudo tee /etc/modprobe.d/blacklist-r8169.conf
dkms add -m r8168 -v 8.025.00
dkms build -m r8168 -v 8.025.00
dkms install -m r8168 -v 8.025.00
sudo update-initramfs -u

您能否补充说明这些命令的作用?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.