Problemas na rede com uma Realtek 8168 no Ubuntu

Última atualização: Jun 11, 2011

Recentemente utilizei uma máquina exclusivamente para iniciar alguns testes com várias máquinas virtuais e obviamente optei por instalar uma versão de Linux para não ter problemas ao configurar os recursos básicos e aproveitar ao máximo os recursos do hardware.

Ao instalar o Ubuntu 11.04 tudo parecia muito bem com a rede até iniciar o acesso a máquina por SSH, a rede ficava muito instável e perdia praticamente 40% dos pacotes muitas vezes ficando inacessível e perdendo completamente a capacidade de comunicação.

Procurando pela internet encontrei uma threadopen in new window (em inglês) no fórum do Ubuntu que explicava a mesma situação, e indicava que a versão do driver Realtek estava errada.

Detectando o problema

Abra o terminal e siga os passos abaixo para detectar o problema (como root).

# Verificando a placa de rede na máquina
lspci | grep Realtek
# Se apresentar algo como a linha abaixo, note que a versão da placa é RTL8111/8168B
# 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express

# O comando abaixo listará qual é a versão carregada do driver
lsmod | grep r816*
# Se houver algum retorno provavelmente verá o driver de versão r8169 carregado no lugar do correto

Instalando o driver correto para a placa Realtek 8168

Os drivers corretos podem ser baixados no site oficial da Realtekopen in new window, porém o download é tão lento que disponibilizo a versão 8.027.00 para Linux com Kernel 2.4 e 2.6 32 bits ou 64 bits aquiopen in new window, e há uma versão também no Google Code que encontrei aquiopen in new window.

Os passos abaixo explicam o resto:

# Melhor criar uma pasta para organizar as coisas
mkdir driver-rtl8168
cd driver-rtl8168
# Baixando o driver
# (Com sorte você consegue baixar ainda dentro da máquina, pois ele possui menos de 100K)
wget https://res.phcco.com/drivers/r8168-8.027.00.tar.bz2
# Descompactando
tar -xvf r8168-8.020.00.tar.bz2
cd r8168-8.020.00
# Executando o autorun o driver será compilado e carregado...
./autorun.sh

Neste ponto a rede já deve ficar disponível e o problema terá sido resolvido.

Referências