Como faço para impedir que minha conexão de rede Ethernet caia?

16

Minha conexão de rede baseada em ethernet não fica consistente. Estou executando um ping no gateway e ele irá:

  • Trabalhe por um minuto
  • Congele, atinja o tempo limite ou ofereça tempos de resposta de vários segundos
  • Repetir

Se estiver travado e eu desativar / ativar a rede através do applet do gerenciador de rede, tudo funcionará bem novamente por um minuto. Após 280 pacotes transmitidos, estou recebendo 41% de perda de pacotes. Eu tentei um cabo e uma conexão diferentes ao gateway, mas isso não teve efeito. A distância para o gateway é de apenas 3 pés.

Parece funcionar bem se eu mudar para o Windows, mas o Ubuntu é o meu sistema operacional principal e nem posso usá-lo agora, pois dependo da rede.

Minha configuração ...

  • SO: Ubuntu 11.04, inicialização dupla do Windows 7
  • Mobo: Gigabyte Z68X-UD4-B3
  • CPU: Intel Core i7 2600K

Editar

Um pequeno esclarecimento ... O Network Manager ainda está me mostrando como conectado, mas não consigo acessar o gateway nem nada além. Em nenhum momento o NM sugere que a conexão seja perdida e chamar ifconfig mostra que eu ainda tenho um endereço IP.

Eu tentei conectar a um gateway diferente com um cabo diferente e o mesmo problema surge.

Como pedido:

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

Editar

@ roland-taylor: a rede está sempre disponível no Windows. Pings não atingem o tempo limite, os aplicativos não reclamam da disponibilidade da rede, os downloads grandes não são interrompidos ou lentos.

Sean Hill
fonte
2
É teoricamente possível que o problema esteja no gateway. Você já tentou usar um gateway diferente?
Robin Green
2
Eu não acho que placa-mãe ou CPU sejam de grande interesse aqui. lspci | grep -i ethpode ser mais informativo e qual módulo está carregado, o dhcp está em execução, o que dmesg | tail -fdiz da conexão à queda da conexão.
usuário desconhecido
Você diz que "parece funcionar bem no Windows", mas você tem certeza disso?
RolandiXor

Respostas:

13

Faça o download do driver oficial realtek.

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

Em seguida, remova o módulo r8169 do kernel do linux.

# 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

Por fim, na lista negra do driver r8169, adicione o seguinte em /etc/modprobe.d/blacklist.conf:

#blacklist r8169 driver
blacklist r8169

Eu o encontrei em http://www.rvdavid.net/how-to-get-gigabit-speeds-from-rtl81118168b-pci-express-gigabit-ethernet-controller-on-ubuntu-linux/ e funciona. Agora está tudo bem com a velocidade líquida.

cara
fonte
Isso funcionou perfeitamente! Minha conexão de rede agora está estável e eu pude continuar a migração da minha área de trabalho antiga para esta. Eu votaria em você, mas aparentemente eu preciso de mais reputação ... Eu entenderia, mas parece estranho, considerando que era minha pergunta.
Sean Colina
Graças a isso, não consigo acessar a internet depois de reiniciar. Parece haver problemas em potencial com a lista negra do módulo. Há mais informações nos comentários deste post.
Tirou
para entrar na internet após a reinicialização eu segui alguns passos daqui ubuntuforums.org/showthread.php?t=723569 , exceto compilar a partir da fonte
cara
Atualizei para o gnome3 e perdi a substituição deste módulo, parece que você precisa seguir estas etapas para todas as atualizações do kernel. Não tenho certeza do que o initramfs faz, mas não o fiz antes da atualização. Corri-lo apenas agora e atualizou os ramfs de inicialização para o kernel atual, talvez ele vai atualizar para os novos dedos demasiado / Cross
de Drew
Você está usando isso? Você percebe esses problemas? Há dicas aqui sobre como automatizar a atualização para novos kernels com DKMS djlab.com/2010/10/fixing-rtl8111-8168b-driver-debian-ubuntu
de Drew
8

Só para que eu possa encontrar isso na próxima vez que meu SSD explodir. Aqui estão as instruções para remover o r8169 quebrado e inserir o r8168 no Ubuntu com o Linux Kernel 3.x.

Kernel 3.x

  • Baixar r8168
  • Aplique esse patch se ele ainda estiver marcado como não resolvido.
  • STOP : Se você planeja usar o DKMS, pule para a seção DKMS agora.
  • Execute sudo ./autogen.sh, ele criará o módulo, remova o antigo (coloque-o na lista negra, se quiser) e instale o r8168.ko em / lib / modules / 'uname -r' / drivers / net /.

DKMS

O DKMS criará e instalará o módulo nas novas instalações do kernel. Você também precisará colocar na lista negra o módulo antigo.

Coloque o módulo antigo na lista negra, se você ainda não o tiver.

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

Instale o DKMS e o gcc.

sudo apt-get install dkms gcc

Copie os arquivos de origem do módulo para um local persistente, para não removê-los acidentalmente mais tarde.

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

Então corra,

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
Desenhou
fonte
11
+1 ótima postagem. é possível que você está faltando update-initramfscomando
bbaja42
Eu usei isso muitas vezes e nunca vi diferença, você tem certeza de que isso é necessário para um módulo de rede? Na verdade, vou incluí-lo para ser seguro. Escrevi o guia ao percorrer o processo para garantir que tudo funcionasse. Eu posso ter executado anteriormente isso enquanto o módulo foi construído / instalado / o que seja.
Drew
Hoje troquei roteadores, após o qual o RTL8111E em um GA-Z68X-UD3H-B3 (executando o Kubuntu 11.10 de 64 bits) parou de funcionar: mesmo que uma conexão de rede pudesse ser estabelecida, nenhum pacote foi transferido (o pingroteador falhou com "Host de Destino Inacessível"). Depois de make modulesinserir o módulo, ele funcionou novamente. Após rmmodinserir o novo módulo e carregar o antigo, a rede funcionou novamente. Isso também é verdade após uma reinicialização. Não sei ao certo o que ajudou a fazer com que essa NIC funcionasse novamente (rmmod / insmod vs rmmod / insmod novo módulo), mas espero que seja útil para alguém.
precisa saber é o seguinte
0

que pode ser útil

você pode enfrentar os problemas com o driver r8169 se você inicializar o Windows em alguns sistemas. Por padrão, o Windows desabilita a NIC no momento do desligamento do Windows para desativar o Wake-On-Lan, e essa NIC permanecerá desabilitada até a próxima vez que o Windows for ligado. O driver r8169 no kernel não sabe como ativar a NIC nesse estado desabilitado; portanto, o dispositivo não responderá, mesmo se o driver carregar e relatar que o dispositivo está funcionando. Para contornar esse problema, simplesmente ative o recurso "Ativar na LAN após o desligamento". Você pode definir essas opções através do gerenciador de dispositivos do Windows.

Edit: O problema de inicialização dupla com o Windows também existe nos kernel 2.6.19.5 e 2.6.20.8, portanto, é seguro assumir que ele se refere a todos os kernels 2.6 até que os desenvolvedores do kernel atualizem os drivers do RTL8168 para a versão que poderá ativar a NIC do estado desativado

cara
fonte
0

Errata corrigida:

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
sccplg
fonte
Você poderia adicionar uma explicação sobre o que esses comandos estão fazendo?