Sei que esse tópico já é um tanto antigo, mas pesquisei no fórum e me parece que este é o melhor tópico para publicar essa dica.
Também tive problemas com lentidão na rede, utilizando o Ubuntu 12.04. Minha conexão é DSL, roteada pelo modem. Além de configurar os DNS's do Google no modem, configurar o forward de portas e demais configurações específicas do modem/router, também desabilitei o IPV6 no Ubuntu e tomei mais uma medida: diminuir a pilha TCP da interface de rede. Se você executar o comando ifconfig, deve notar que o tamanho da sua pilha (txqueuelen) está configurada para um valor alto, provavelmente 1000 pacotes:
ifconfig
eth0 Link encap:Ethernet Endereço de HW XX:XX:XX:XX:XX:XX
inet end.: XXX.XXX.XXX.XXX Bcast:XXX.XXX.XXX.XXX Masc:XXX.XXX.XXX.XXX
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:7283 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:7356 erros:0 descartados:0 excesso:0 portadora:0
colisões:11524 txqueuelen:1000
RX bytes:6579496 (6.5 MB) TX bytes:1234306 (1.2 MB)
IRQ:XX Endereço de E/S:xxxxxx
lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Métrica:1
pacotes RX:46865 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:46865 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:0
RX bytes:2343427 (2.3 MB) TX bytes:2343427 (2.3 MB)
Execute o seguinte comando para alterar o tamanho da pilha:
sudo ifconfig eth0 txqueuelen 0
Reinicie a rede para a conexão voltar
sudo restart network-manager
Note que utilizei tamanho zero para a pilha. A maioria dos sistemas atuais conseguem trabalhar com valor zero, mas caso haja algum problema com a sua conexão tente valores maiores, por exemplo múltiplos de 32.
Para manter essa configuração mesmo após reiniciar o sistema, altere o arquivo /etc/rc.local
Ao final do arquivo, uma linha antes de "exit 0", digite (supondo que a sua interface é eth0):
ifconfig eth0 txqueuelen 0